linux内核模块构建中的特定宏值

时间:2014-02-10 10:37:08

标签: c macros linux-kernel kernel-module

如何在构建内核模块时找出特定的内核宏值。

有很多宏选项,我希望知道在构建时分配给“特定宏”的值以及定义它的行号。

我不久前读过这篇文章......我知道这很有可能。

例如: 制作模块SUBDIRS = drivers / net / e1000 /

现在,在e1000中有一个使用的宏,HAVE_VLAN_IN_HW。

在构建模块时,我想知道它的确切位置(宏定义及其值)。?

2 个答案:

答案 0 :(得分:0)

我应该使用更好的关键字来搜索它,例如预处理输出:

在这里您可以找到所有相关信息:

http://kernelnewbies.org/FAQ/KernelCrossCompilation

内核编译的另一个方面是它可以帮助您生成预处理文件。当您怀疑宏可能出现问题时,这非常有用。在2.4天内,我们可以获取命令行并添加-c选项并将gcc预处理器的结果重定向到文件。在2.6中,它内置于内核中。这是如何。

说,我想为kernel / dma.c生成预处理器输出, #make kernel / dma.i

完成。打开kernel / dma.i以查看预处理器对dma.c做了什么。

这也适用于模块(不是内核的一部分)。

答案 1 :(得分:0)

我们大多数人使用Linux cross reference来查找声明函数,宏和变量的位置。