如何在DPDK代码中解释这段C代码

How to explain this C code in DPDK code

我是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;

            }

...

切换后,定义一个宏RTE_PCI_DEV_ID_DECL_IGB(如何使用?) 在case之后,包括rte_pci_dev_ids.h,我也在h文件中找到了这个宏

**

A not complete Macro definition between switch and case, and the Macro which find in the h file included after case. i can not understand it.

**

谁能帮我理解这段代码。

这段代码的语法? 编译过程? 工作过程?

谢谢。

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

所以基本上 include 语句下面的语句(调用探测)将应用于头文件中提到的所有 "devices"(例如 rte_pci_dev_ids.h)。因此,要添加一个新设备,您只需将其包含在头文件中,而无需在 switch-case 中进行任何更改。