内核及驱动开发者如何定位需包含的头文件?(以ALIGN宏为例)
内核开发者如何定位间接引入头文件的顶层依赖?
以 Linux 6.15.68 版本中 drivers/pci/endpoint/pci-epc-mem.c 文件的 pci_epc_mem_alloc_addr 函数为例,其中有一行代码:
align_size = ALIGN(size, mem->window.page_size);
要使用 ALIGN 宏,该文件需要引入定义此宏的头文件。通过 ctags 工具可知,ALIGN 宏定义在 <linux/align.h> 中,但 pci-epc-mem.c 仅包含以下4个头文件:
#include <linux/io.h> #include <linux/module.h> #include <linux/slab.h> #include <linux/pci-epc.h>
由于头文件会嵌套引入,上述某个头文件必然间接引入了 <linux/align.h>。内核及驱动开发者通常会选择最相关、包含最少通用定义的顶层头文件,想了解他们是通过搜索(如追溯头文件引入链)还是凭借对头文件层级的熟悉来定位?
内容的提问来源于stack exchange,提问作者Chan Kim
相关产品推荐
相关产品推荐

