如何在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 中进行任何更改。
我是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 中进行任何更改。