Linux内核头文件的组织

时间:2012-03-21 04:23:18

标签: linux linux-kernel kernel

当我正在阅读系统调用时,我搜索了syscalls.h以在LXR中找到头文件。搜索结果使我感到困惑。来自syscalls.h下的目录中有十几个arch/_arch_name_/include/asm个文件。这些都可以,它们是特定于体系结构的定义或其他需要的东西。问题是为什么我们在syscalls.hinclude/linux下都有两个不同的include/asm-generic标题?

此外,我想了解include/linux标题的用途以及include/asm-generic标题的用途。他们如何区分彼此?有两个单独的头文件夹背后的逻辑是什么?它们如何相互关联?

由于

2 个答案:

答案 0 :(得分:6)

我在Kernel Newbies ML上问了这个问题。我得到了以下答案,这使得事情变得清晰:

  

Cihangir Akturk写道:

     

AFAIK,在/ include / asm-generic目录中找到的标题是   架构独立(可能跨架构共享)代码。   您很可能不需要直接包含这些标题   我们通过architecthure依赖包含这些标题   头。

     

OTOH,/ include / linux目录用于定义通用头文件   内核组件之间的接口。在大多数情况下,你   将在这些头文件中找到您需要的所有内核功能。

     

问候,chngr。

答案 1 :(得分:1)

目录arch/_arch_name_/include/asm中的标头是特定于体系结构的,例如x86,ARM体系结构。因此,内部逻辑是特定于平台的,并且高度依赖于底层硬件。您只会包含您的平台架构。

include/linux中的标题是常见且与平台无关的。它们是常见的逻辑,将是共享的交叉架构。