-
Documentation 这个目录下没有内核代码,只有很多文档
-
arch 所有与体系结构相关的代码都在这个目录以及include/ asm-×/ 目录中,Linux支持的每种体系结构在arch目录下都有对应的子目录,而在每个体系结构特有的子目录下又至少包含3个子目录。
kernel:存放体系结构特有的特征如信号量处理和SMP实现
lib:存放体系结构特有的对诸如strlen和memcpy之类的通用函数的实现
mm:存放体系结构特有的内存管理程序的实现。 -
drivers 这个目录是内核中最庞大的一目录,显卡、网卡、SCSI适配器、PCI总线、USB总线、和其他任何Linux支持的外围设备或总线的驱动程序都可以在这里找到。
-
fs 虚拟文件系统(VFS,Virtual File System)的代码,和各个不同文件系统的代码都在这个目录中。
-
include 这个目录包含了内核中大部分的头文件,它们按照下面的子目录进行分。
include/asm-*/,这样的子目录有多个,每一个都对应着一个arch的子目录,比如include/asm-alpha、include /asm-arm、include/asm-i386等。每个子目录中的文件都定义了支持给定体系结构所必须的预处理器宏和内联函数,这些内联函数多数都 是全部或部分使用汇编语言实现的。
编译内核时,系统会建立一个从include/asm目录到目标体系结构特有的目录的符号链接。比如对于arm平台,就是include/asm-arm到include/asm的符号链接。因此,体系结构无关部分的内核代码可以使用如下形式包含体系相关部分的头文件。
#include<asm/some-file>
include/linux,与平台无关的头文件都在这个目录下面,它通常会被链接到目录/usr/include/linux(或者它里面的所有文件会被复制到/usr/include/linux目录下面)。因此用户应用程序里和内核代码里的语句:
#include<linux/some-file>
包含的头文件的内容是一致的。 -
init 内核的初始化代码。包括main.c 创建早期用户空间的代码以及其它初始化代码。
-
ipc 进程间通讯(Interprocess communication).
-
kernel 核心部分,linux的进程调度以及进程的创建和撤销等,都在这个目录下。
-
lib 库代码,实现了一个标准C库的通用子集,包括字符串和内存操作的函数(strlen、mmcpy和其它类似的函数)。
-
mm 内存管理代码
-
net 网络相关代码,各种常见的网络协议,如TCP/IP等。
-
scripts 配置内核的脚本文件。
-
block block层的实现
-
crypto 内核本身所用的加密API,实现了常用的加密和散列算法,还有一些压缩和CRC校验算法。
-
security 包括了不同的Linux安全模型的代码。
-
sound 声卡驱动以及其它声音相关的代码。
-
usr 用于打包和压缩的cpio。