-2

我是 DPDK 的新手,所以在阅读代码时我会有些疑问。kni_misc.c 中 DPDK 中的代码如下

...

switch (dev_info.device_id) {
            **#define RTE_PCI_DEV_ID_DECL_IGB(vend, dev) case (dev):
            #include <rte_pci_dev_ids.h>**
                ret = igb_kni_probe(found_pci, &lad_dev);
                break;
            #define RTE_PCI_DEV_ID_DECL_IXGBE(vend, dev) \
                            case (dev):
            #include <rte_pci_dev_ids.h>
                ret = ixgbe_kni_probe(found_pci, &lad_dev);
                break;
            default:
                ret = -1;
                break;

            }

...

switch之后,定义一个宏RTE_PCI_DEV_ID_DECL_IGB(怎么用?)case之后,包括rte_pci_dev_ids.h,我也在h文件中找到了这个宏。

**

switch 和 case 之间的一个不完整的宏定义,以及在 case 后面包含的 h 文件中找到的宏。我不明白。

**

谁能帮我理解这段代码。

这段代码的语法?编译过程?工作过程?</p>

谢谢。

4

1 回答 1

-1

您需要查看头文件,例如 rte_pci_dev_ids.h。这些头文件将指示所有受支持的供应商和设备 ID。包含之前的宏定义会将所有此类定义转换为“case”语句。

所以基本上包含语句(调用probe)下面的语句将适用于头文件(例如rte_pci_dev_ids.h)中提到的所有“设备”。因此,要添加一个新设备,您只需将其包含在头文件中,并且不需要在 switch-case 中进行任何更改。

于 2017-07-29T07:20:30.500 回答