linux内核头文件可分三大类

本文转载自: http://blog.csdn.net/ipqtjmqj/article/details/53302058

linux内核头文件可分三大类

原文地址http://cpbest.blog.163.com/blog/static/412415192012520028899/

linux内核根据与体系结构的关系,可以分为以下三大类头文件:

<linux/xxx.h>

linux内核标准头文件,与体系结构无关,位于内核源码顶层include目录中。
eg: linux-4.16.3/include

<asm/xxx.h>

与体系结构(CPU Core)相关的头文件,位于具体体系结构目录下的include目录中,
比如ARM,则位于arch/arm/include,
eg: linux-4.16.3/arch/arm/include

<mach/xxx.h>

与具体的机器machine/板子(SOC)系统相关的头文件,位于某一系统结构(CPU Core)相关的特定SOC/machine所在目录下的include目录中。
比如对于三星的s3c64xx系统的SOC/machine,则相关的头文件位于arch/arm/mach-s3c64xx/include中。
eg: linux-4.16.3/arch/arm/mach-s3c64xx/include

PS:内核在编译过程中会将以上三个目录includearch/${ARCH}/includearch/${ARCH}/mach-XXX/include 作为默认的头文件搜索目录。

其他情况

还有其他一些情况,比如对于三星的SOC,除了mach-XXX目录外,还有一个平台(platform)相关的目录,在其中包含了所有三星的SOC共有的平台相关的代码和头文件,这些目录名以plat开头。相关的头文件在arch/arm/plat-samsung/include中, 在编程时用<plat/xxx.h>方式包含。

以上描述的与体系结构相关的include目录下都分别只有一个目录asm、mach、plat。
它们与底层硬件相关性由大到小依次为:mach > plat > asm。
~

举例

以从 https://www.kernel.org/ 下载的 5.8.10 和 4.19.146 版本的内核源码为例,
找出其所有的include

[me@ukylin workplace]$ tar -xJf linux-5.8.10.tar.xz
[me@ukylin workplace]$ cd linux-5.8.10/
[me@ukylin linux-5.8.10]$ ls
arch   COPYING  Documentation  include  Kbuild   lib          Makefile  README   security  usr
block  CREDITS  drivers        init     Kconfig  LICENSES     mm        samples  sound     virt
certs  crypto   fs             ipc      kernel   MAINTAINERS  net       scripts  tools
[me@ukylin linux-5.8.10]$ find . -name include -type d
./tools/objtool/arch/x86/include
./tools/bootconfig/include
./tools/testing/selftests/rcutorture/formal/srcu-cbmc/include
./tools/testing/selftests/powerpc/nx-gzip/include
./tools/testing/selftests/powerpc/include
./tools/testing/selftests/kvm/include
./tools/testing/selftests/futex/include
./tools/testing/ktest/examples/include
./tools/lib/lockdep/include
./tools/lib/perf/include
./tools/perf/arch/sh/include
./tools/perf/arch/powerpc/include
./tools/perf/arch/arm/include
./tools/perf/arch/s390/include
./tools/perf/arch/x86/include
./tools/perf/arch/xtensa/include
./tools/perf/arch/sparc/include
./tools/perf/arch/arm64/include
./tools/perf/arch/csky/include
./tools/perf/arch/riscv/include
./tools/perf/util/include
./tools/perf/include
./tools/arch/sh/include
./tools/arch/powerpc/include
./tools/arch/arc/include
./tools/arch/arm/include
./tools/arch/alpha/include
./tools/arch/microblaze/include
./tools/arch/s390/include
./tools/arch/h8300/include
./tools/arch/x86/include
./tools/arch/parisc/include
./tools/arch/ia64/include
./tools/arch/xtensa/include
./tools/arch/hexagon/include
./tools/arch/mips/include
./tools/arch/sparc/include
./tools/arch/arm64/include
./tools/arch/csky/include
./tools/arch/riscv/include
./tools/include
./sound/soc/amd/include
./drivers/gpu/drm/nouveau/include
./drivers/gpu/drm/arm/display/include
./drivers/gpu/drm/amd/acp/include
./drivers/gpu/drm/amd/include
./drivers/gpu/drm/amd/display/include
./drivers/staging/media/ipu3/include
./drivers/staging/media/atomisp/include
./drivers/staging/unisys/include
./drivers/staging/rtl8723bs/include
./drivers/staging/rtl8188eu/include
./drivers/misc/habanalabs/include
./drivers/net/wireless/broadcom/brcm80211/include
./usr/include
./security/apparmor/include
./security/selinux/include
./arch/nios2/include
./arch/sh/include
./arch/um/include
./arch/powerpc/include
./arch/arc/plat-eznps/include
./arch/arc/include
./arch/arm/mach-s3c64xx/include
./arch/arm/mach-rpc/include
./arch/arm/plat-orion/include
./arch/arm/plat-samsung/include
./arch/arm/mach-omap2/include
./arch/arm/mach-omap1/include
./arch/arm/plat-versatile/include
./arch/arm/mach-ebsa110/include
./arch/arm/mach-davinci/include
./arch/arm/plat-omap/include
./arch/arm/mach-dove/include
./arch/arm/mach-sa1100/include
./arch/arm/mach-footbridge/include
./arch/arm/mach-ep93xx/include
./arch/arm/mach-pxa/include
./arch/arm/mach-iop32x/include
./arch/arm/mach-spear/include
./arch/arm/mach-ixp4xx/include
./arch/arm/mach-s3c24xx/include
./arch/arm/mach-exynos/include
./arch/arm/plat-pxa/include
./arch/arm/include
./arch/alpha/include
./arch/microblaze/include
./arch/s390/include
./arch/c6x/include
./arch/h8300/include
./arch/openrisc/include
./arch/x86/include
./arch/unicore32/include
./arch/parisc/include
./arch/ia64/include
./arch/xtensa/variants/dc233c/include
./arch/xtensa/variants/csp/include
./arch/xtensa/variants/fsf/include
./arch/xtensa/variants/de212/include
./arch/xtensa/variants/test_mmuhifi_c3/include
./arch/xtensa/variants/dc232b/include
./arch/xtensa/variants/test_kc705_hifi/include
./arch/xtensa/variants/test_kc705_be/include
./arch/xtensa/platforms/xtfpga/include
./arch/xtensa/platforms/xt2000/include
./arch/xtensa/platforms/iss/include
./arch/xtensa/include
./arch/nds32/include
./arch/hexagon/include
./arch/mips/include
./arch/sparc/include
./arch/m68k/include
./arch/arm64/include
./arch/csky/include
./arch/riscv/include
./include
[me@ukylin linux-5.8.10]$

[me@ukylin workplace]$ tar -xJf linux-4.19.146.tar.xz
[me@ukylin workplace]$ cd linux-4.19.146/
[me@ukylin linux-4.19.146]$ ls
arch   COPYING  Documentation  fs       ipc      kernel    MAINTAINERS  net      scripts   tools
block  CREDITS  drivers        include  Kbuild   lib       Makefile     README   security  usr
certs  crypto   firmware       init     Kconfig  LICENSES  mm           samples  sound     virt
[me@ukylin linux-4.19.146]$ find . -name include -type d
./tools/objtool/arch/x86/include
./tools/testing/selftests/rcutorture/formal/srcu-cbmc/include
./tools/testing/selftests/powerpc/include
./tools/testing/selftests/bpf/include
./tools/testing/selftests/kvm/include
./tools/testing/selftests/futex/include
./tools/testing/ktest/examples/include
./tools/lib/lockdep/include
./tools/perf/arch/sh/include
./tools/perf/arch/powerpc/include
./tools/perf/arch/arm/include
./tools/perf/arch/s390/include
./tools/perf/arch/x86/include
./tools/perf/arch/xtensa/include
./tools/perf/arch/sparc/include
./tools/perf/arch/arm64/include
./tools/perf/util/include
./tools/perf/include
./tools/arch/sh/include
./tools/arch/powerpc/include
./tools/arch/arc/include
./tools/arch/arm/include
./tools/arch/alpha/include
./tools/arch/microblaze/include
./tools/arch/s390/include
./tools/arch/h8300/include
./tools/arch/x86/include
./tools/arch/parisc/include
./tools/arch/ia64/include
./tools/arch/xtensa/include
./tools/arch/hexagon/include
./tools/arch/mips/include
./tools/arch/sparc/include
./tools/arch/arm64/include
./tools/arch/riscv/include
./tools/include
./sound/soc/amd/include
./drivers/gpu/drm/nouveau/include
./drivers/gpu/drm/amd/acp/include
./drivers/gpu/drm/amd/include
./drivers/gpu/drm/amd/display/include
./drivers/staging/erofs/include
./drivers/staging/unisys/include
./drivers/staging/rtl8723bs/include
./drivers/staging/rtl8188eu/include
./drivers/net/wireless/broadcom/brcm80211/include
./security/apparmor/include
./security/selinux/include
./arch/nios2/include
./arch/sh/include
./arch/um/include
./arch/powerpc/include
./arch/arc/plat-eznps/include
./arch/arc/include
./arch/arm/mach-s3c64xx/include
./arch/arm/mach-rpc/include
./arch/arm/plat-orion/include
./arch/arm/mach-iop33x/include
./arch/arm/plat-samsung/include
./arch/arm/mach-omap2/include
./arch/arm/mach-w90x900/include
./arch/arm/mach-omap1/include
./arch/arm/plat-versatile/include
./arch/arm/mach-ebsa110/include
./arch/arm/mach-davinci/include
./arch/arm/plat-omap/include
./arch/arm/mach-dove/include
./arch/arm/mach-sa1100/include
./arch/arm/mach-footbridge/include
./arch/arm/mach-ep93xx/include
./arch/arm/mach-pxa/include
./arch/arm/mach-iop32x/include
./arch/arm/mach-spear/include
./arch/arm/mach-ixp4xx/include
./arch/arm/mach-iop13xx/include
./arch/arm/mach-s3c24xx/include
./arch/arm/mach-exynos/include
./arch/arm/plat-pxa/include
./arch/arm/mach-lpc32xx/include
./arch/arm/mach-netx/include
./arch/arm/mach-ks8695/include
./arch/arm/include
./arch/alpha/include
./arch/microblaze/include
./arch/s390/include
./arch/c6x/include
./arch/h8300/include
./arch/openrisc/include
./arch/x86/include
./arch/unicore32/include
./arch/parisc/include
./arch/ia64/sn/include
./arch/ia64/include
./arch/xtensa/variants/dc233c/include
./arch/xtensa/variants/csp/include
./arch/xtensa/variants/fsf/include
./arch/xtensa/variants/de212/include
./arch/xtensa/variants/test_mmuhifi_c3/include
./arch/xtensa/variants/dc232b/include
./arch/xtensa/variants/test_kc705_hifi/include
./arch/xtensa/variants/test_kc705_be/include
./arch/xtensa/platforms/xtfpga/include
./arch/xtensa/platforms/xt2000/include
./arch/xtensa/platforms/iss/include
./arch/xtensa/include
./arch/nds32/include
./arch/hexagon/include
./arch/mips/include
./arch/sparc/include
./arch/m68k/include
./arch/arm64/include
./arch/riscv/include
./include
[me@ukylin linux-4.19.146]$

参考

http://www.voidcn.com/article/p-puxnsnpf-nh.html
http://blog.csdn.net/ipqtjmqj/article/details/53302058

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值