Linux内核根据与体系结构的关系,可以分为以下三大类头文件:
1.<linux/xxx.h>:Linux内核标准头文件,与体系结构无关,位于内核源码顶层include目录中。
2.<asm/xx.h>:与体系结构(CPU Core)相关的头的文件,位于体系结构目录下的include目录中,比如ARM,则位于arch/arm/include.
3.<mach/xx.h>:与具体的机器machine/板子(SOC)系统相关的头文件,位于某一系统结构(CPU Core)相关的特定SOC/machine所在目录下的include目录中。比如对于Atmel SAM91系统的SOC/machine,则相关的头文件位于arch/arm/amch-at91/include中。
内核在编译过程中会将以上三个目录include, arch/${ARCH}/include, arch/${ARCH}/mach-xxx/include作为默认的头文件目录进行搜索。
还有一些其他情况,比如对于三星的SOC,除了mach-xx目录外,还有一个平台(platform)相关的目录,在其中包含了所有三星的SOC共有的平台相关的代码和头文件,这些目录名以plat开头,相关的头文件在arch/arm/plat-samsung/include中,在编程时用<plat/xx.h>方式包含。
与底层硬件相关性由大到小:
mach>plat>asm.
最后欢迎大家访问我的个人网站:1024s