内核源码中的 arch/xxx/include/asm/Kbuild 文件

x86为例,arch/x86/include/asm/Kbuild文件的内容如下所示:

$ cat arch/x86/include/asm/Kbuild
generated-y += syscalls_32.h
generated-y += syscalls_64.h
generated-y += unistd_32_ia32.h
generated-y += unistd_64_x32.h
generated-y += xen-hypercalls.h

generic-y += dma-contiguous.h
generic-y += early_ioremap.h
generic-y += export.h
generic-y += mcs_spinlock.h
generic-y += mm-arch-hooks.h

在编译内核时会自动生成上述文件中所指定的头文件,假设内核编译时的输出目录为 out-x86/x86,即 make O=out-x86/x86,则这些自动生成的头文件在 out-x86/x86/arch/x86/include/generated/asm/ 目录下,如下所示:

$ ls -1 out-x86/x86/arch/x86/include/generated/asm/
dma-contiguous.h
early_ioremap.h
export.h
mcs_spinlock.h
mm-arch-hooks.h
syscalls_32.h
syscalls_64.h
unistd_32_ia32.h
unistd_64_x32.h
xen-hypercalls.h

其中,部分头文件的内容比较简单,基本都是包含了 <asm-generic/xxx.h>,也即:内核源码根目录下的 include/asm-generic/xxx.h文件.
例如,dma-contiguous.h头文件的内容:

$ cat out-x86/x86/arch/x86/include/generated/asm/dma-contiguous.h
#include <asm-generic/dma-contiguous.h>

这样做的目的是:在内核编程中,原则上不建议直接包含 include/asm-generic中的头文件,而是应该通过平台相关的头文件来间接包含.

参考资料

linux kernel头文件包含问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值