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

标签 c linux driver pci dpdk

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

...

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文件中找到了这个宏。

**

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”语句。

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

关于c - 如何在DPDK代码中解释这段C代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45385161/

相关文章:

c - 为什么下面的程序输出 -80?

c - 操作系统是否在 C 中的应用程序退出时回收内存?

c - 卷过滤器驱动程序不监视某些系统文件

c++ - 从 UMDF 驱动程序 (C++) 调用 CreateFile 时出现“访问被拒绝”错误

windows - 未经认证的 Windows 驱动程序

c++ - C/C++ 中的指针和转换

c - opencv(C语言)视频编写器无法使用方法

c - C 信号处理程序中的竞争条件

c++ - 如何在 Linux 应用程序上使用 C++ 中的终端输入中断循环/进程

java - 如何使用java从linux环境中获取tomcat中当前目录的相对路径