2018-09-26 11:09:30 lingyi_cai 阅读数 759

Linux内核源代码包括三个主要部分:

1. 内核核心代码,包括各个子系统和子模块,如:Process Scheduler 进程管理、Memory Manager 内存管理、VFS 虚拟文件系统、Network 网络子系统、IPC 进程通信。以及其它的支撑子系统,例如电源管理、Linux初始化等。

2. 其它非核心代码,例如库文件(因为Linux内核是一个自包含的内核,即内核不依赖其它的任何软件,自己就可以编译通过)、固件集合、KVM(虚拟机技术)等。

3. 编译脚本、配置文件、帮助文档、版权说明等辅助性文件。

下图示使用ranger命令看到的内核源代码的顶层目录结构,具体描述如下:

arch: 体系结构相关的代码,例如arm, x86等等。

    arch/arm/mach-xxx: 芯片相关源码。

    arch/arm/plat-xxx: 平台相关源码。

block: 提供块设备的层次

crypto: 加密、解密相关的库函数。

Documentation、README: 帮助、说明文档。

drivers: 各种设备驱动源码。

firware: 保存用于驱动第三方设备的固件。

fs: VFS子系统。

include: 内核头文件,需要提供给外部模块(例如用户空间代码)使用。

init: Linux系统启动初始化相关的代码。

ipc: IPC(进程间通信)子系统。

kernel: Linux内核的核心代码,包含了进程调度子系统,以及和进程调度相关的模块。

lib: 实现需要在内核中使用的库函数,例如CRC、FIFO、list、MD5等。

mm: 内存管理子系统。

net: 不包括网络设备驱动的网络子系统。

sample: 一些示例代码。

Kconfig、Kbuild、Makefile、scripts: 用于内核编译的配置文件、脚本等。

security: 提供安全特性(SELinux)。

sound: 音频相关的驱动及子系统,可以看作“音频子系统”。

tools: 一些常用工具,如性能剖析、自测试等。

usr: 用于生成initramfs的代码。

virt: 提供虚拟机技术(KVM等)的支持。

COPYING: 版权声明。

MAINTAINERS: 维护者名单。

CREDITS: Linux主要的贡献者名单。

REPORTING-BUGS: Bug上报的指南。

2013-03-29 09:48:59 ljxkey 阅读数 498
核心源码的顶层是/usr/src/linux目录

子目录:

(1)arch

这个子目录包含了所有体系结构相关的核心代码。它还包含每种支持的体系结构的子目录,如i386。

系统启动与初始化

在基于intel的系统上,Linux可以通过loadlin.exe或者LILO将核心载入内存并将控制传递给它。这部分程序 位于arch/i386/kerneld/head.S。此文件完成一些处理器相关操作并跳转到init/main.c中的main()例程。

中断处理

核心的中断处理代码总是与微处理器结构相关。Intel系统的中断处理代码位于arch/i386/kernel/irq.c中, 其定义位于include/asm-i386/irq.h中。


(2)include

这个目录包括了用来重构核心的大多数include文件。对于每种支持的体系结构分别有一个子目录。 此目录中的asm子目录中是对应某种处理器的符号连接,如include/asm-i386。要修改处理器结构 则只需编辑核心的makefile并重新运行Linux核心配置程序。

内存管理

这部分代码主要位于mm目录中但其处理器结构相关部分被放在arch/*/mm中。页面出错处理代码位于mm下的 memory.c文件中而内存映射与页面cache代码位于filemap.c中。buffer cache则在mm/buffer.c中实现, swap cache位于mm/swap_state.c和mm/swapfile.c中。

核心

大多数通用代码位于kernel目录下而处理器相关代码被放在arch/*/kernel中。调度器位于kernel/sched.c 而fork代码位于kernel/fork.c中。底层部分处理代码位于include/linux/interrupt.h中。task_struct的 描叙则在/linux/sched.h中可以找到。

网络

网络代码位于net目录  而 大多数包含文件位于include/net中。BSD套接口代码位于net/socket.c中。IPV4的 INET套接口代码位于net/ipv4/af_inet.c中。通用协议支撑代码(包括sk_buff处理过程)位于net/core中, 同时TCP/IP网络代码位于net/ipv4中。网络设备驱动位于drivers/net中。



(3)init


此目录包含核心启动代码。


(4)mm


此目录包含了所有的内存管理代码。与具体体系结构相关的内存管理代码位于arch/*/mm目录下, 如arch/i386/mm/fault.c 。


(5)drivers


系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,如block。

PCI

PCI伪设备驱动位于drivers/pci/pci.c且其系统通用定义放在include/linux/pci.h中。每个处理器结构 具有特殊的PCI BIOS代码,Alpha AXP的位于arch/alpha/kernel/bios32.c中。

设备驱动

Linux核心源码的大多数都是设备驱动。所有Linux的设备驱动源码都放在drivers目录中并分成以下几类:

/block
块设备驱动包括IDE(在ide.c中)驱动。如果你想寻找这些可包含文件系统的设备的初始化过程 则应该在drivers/block/genhd.c中的device_setup()。当安装一个nfs文件系统时不但要初始化 硬盘还需初始化网络。块设备包括IDE与SCSI设备。

/char
此目录包含字符设备的驱动,如ttys,串行口以及鼠标。

/cdrom
包含所有Linux CDROM代码。在这里可以找到某些特殊的CDROM设备(如Soundblaster CDROM)。 IDE接口的CD驱动位于drivers/block/ide-cd.c中而SCSI CD驱动位于drivers/scsi/scsi.c中。

/pci
它包含了PCI伪设备驱动源码。这里可以找到关于PCI子系统映射与初始化的代码。另外位于 arch/alpha/kernel/bios32.c中的Alpha AXP PCI补丁代码也值得一读。

/scsi
这里可以找到所有的SCSI代码以及Linux支持的SCSI 设备的设备驱动。

/net
包含网络驱动源码,如tulip.c中的DECChip 21040 PCI以太网驱动。

/sound
所有的声卡驱动源码。


(6)ipc


此目录包含了核心的进程间通讯代码。

进程间通讯

所有这些代码都在ipc目录中。系统V IPC对象都包含一个ipc_perm结构,它在include/linux/ipc.h中描叙。 系统V消息在ipc/msg.c中实现,共享内存在ipc/shm.c而信号灯位于ipc/sem.c中。管道在ipc/pipe.c中实现。


(7)modules


此目录仅仅包含已建好的模块。

模块

核心模块代码部分位于核心中 部分位于modules包中


(8)fs
所有的文件系统代码。它也被划分成对应不同文件系统的子目录,如vfat和ext2。

文件系统

EXT2文件系统的源码位于fs/ext2中,其数据结构定义位于include/linux/ext2_fs.h, ext2_fs_i.h 以及 ext2_fs_sb.h中。虚拟文件系统数据结构在include/linux/fs.h中描叙且其代码在fs/*中。buffer cache 和update核心后台进程在fs/buffer.c中实现。
(9)kernel

主要核心代码。同时与处理器结构相关代码都放在arch/*/kernel目录下。

模块

核心模块代码部分位于核心中 部分位于modules包中。核心代码位于kernel/modules.c且其数据结构与核心 后台进程kerneld消息位于include/linux/module.h和include/linux/kerneld.h目录中。同时必要时需查阅 include/linux/elf.h中的ELF文件格式。

(10)net
核心的网络部分代码。

网络

网络代码位于net目录  而 大多数包含文件位于include/net中。BSD套接口代码位于net/socket.c中。IPV4的 INET套接口代码位于net/ipv4/af_inet.c中。通用协议支撑代码(包括sk_buff处理过程)位于net/core中, 同时TCP/IP网络代码位于net/ipv4中。网络设备驱动位于drivers/net中。


(11)lib
此目录包含了核心的库代码。与处理器结构相关库代码被放在arch/*/lib/目录下。
(12)scripts
此目录包含用于配置核心的脚本文件(如awk和tk脚本)。
2018-03-06 09:10:19 jekenzhuang 阅读数 101

Linux核心源码阅读方法

首次阅读Linux4.0.5内核源代码时,一脸茫然,它的代码不仅复杂,而且庞大,找不到从哪里开始阅读。

 

 

通常Linux会有以下目录
  • arch 子目录包括所有和体系结构相关的核心代码。它还有更深的子目录,每一个代表一种支持的体系结构
  • include 子目录包括编译核心所需要的大部分 include 文件。它也有更深的子目录,每一个支持的体系结构一个。 include/asm 是这个体系结构所需要的真实的 include 目录的软链接,例如 include/asm-i386 。为了改变体系结构,你需要编辑核心的 makefile ,重新运行 Linux 的核心配置程序 
  • init 这个目录包含核心的初始化代码,这时研究核心如何工作的一个非常好的起点
  • mm 这个目录包括所有的内存管理代码。和体系结构相关的内存管理代码位于 arch/*/mm/
  • drivers 系统所有的设备驱动程序在这个目录。它们被划分成设备驱动程序类
  • ipc 这个目录包含核心的进程间通讯的代码
  • modules 这只是一个用来存放建立好的模块的目录
  • fs 所有的文件系统代码。被划分成子目录,每一个支持的文件系统一个
  • kernel 主要的核心代码。同样,和体系相关的核心代码放在 arch/*/kernel
  • net 核心的网络代码
  • lib 这个目录放置核心的库代码。和体系结构相关的库代码在 arch/*/lib/
  • scripts 这个目录包含脚本(例如 awk 和 tk 脚本),用于配置核心
按照以下顺序阅读源代码会轻松点
  1. 核心功能(kernel) 
  2. 内存管理(mm) 
  3. 文件系统(fs)
  4. 进程通讯(ipc)
  5. 网络(net)
  6. 系统启动和初始化(init/main和head.S)
  7. 其他等等
 

System Startup and Initialization (系统启动和初始化)

在一个 Intel 系统上,当 loadlin.exe 或 LILO 把核心加载到内存并把控制权交给它的时候,核心开始启动。这一部分看 arch/i386/kernel/head.S 。 head.S 执行一些和体系结构相关的设置工作并跳到 init/main.c 中的 main() 例程。
 

Memory Management (内存管理)

代码大多在 mm 但是和体系结构相关的代码在 arch/*/mm 。 Page fault 处理代码在 mm/memory.c 中,内存映射和页缓存代码在 mm/filemap.c 中。 Buffer cache 在 mm/buffer.c 中实现,交换缓存在 mm/swap_state.c 和 mm/swapfile.c 中。 
 

Kernel

大部分相对通用的代码在 kernel ,和体系结构相关的代码在 arch/*/kernel 。调度程序在 kernel/sched.c , fork 代码在 kernel/fork.c 。 bottom half 处理代码在 include/linux/interrupt.h 。 task_struct 数据结构可以在 include/linux/sched.h 中找到 
 

PCI

PCI 伪驱动程序在 drivers/pci/pci.c ,系统范围的定义在 include/linux/pci.h 。每一种体系结构都有一些特殊的 PCI BIOS 代码, Alpha AXP 的位于 arch/alpha/kernel/bios32.c 
 

Interprocess Communication

全部在 ipc 目录。所有系统 V IPC 对象都包括 ipc_perm 数据结构,可以在 include/linux/ipc.h 中找到。系统 V 消息在 ipc/msg.c 中实现,共享内存在 ipc/shm.c 中,信号灯在 ipc/sem.c 。管道在 ipc/pipe.c 中实现。 
 

Interrupt Handling

核心的中断处理代码几乎都是和微处理器(通常也和平台)相关。 Intel 中断处理代码在 arch/i386/kernel/irq.c 它的定义在 incude/asm-i386/irq.h 。 
 

Device Drivers (设备驱动程序) 

Linux 核心源代码的大部分代码行在它的设备驱动程序中。 Linux 所有的设备驱动程序源代码都在 drivers 中,但是它们被进一步分类: 
  • /block 块设备驱动程序比如 ide ( ide.c )。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看 drivers/block/genhd.c 中的 device_setup() 。它不仅初始化硬盘,也初始化网络,因为你安装 nfs 文件系统的时候需要网络。块设备包括基于 IDE 和 SCSI 设备。 
  • /char 这里可以查看基于字符的设备比如 tty ,串行口等。 
  • /cdrom Linux 所有的 CDROM 代码。在这里可以找到特殊的 CDROM 设备(比如 Soundblaster CDROM )。注意 ide CD 驱动程序是 drivers/block 中的 ide-cd.c ,而 SCSI CD 驱动程序在 drivers/scsi/scsi.c 中 
  • /pci PCI 伪驱动程序。这是一个观察 PCI 子系统如何被映射和初始化的好地方。 Alpha AXP PCI 整理代码也值得在 arch/alpha/kernel/bios32.c 中查看 
  • /scsi 在这里不但可以找到所有的 Linux 支持的 scsi 设备的驱动程序,也可以找到所有的 SCSI 代码 
  • /net 在这里可以找到网络设备驱动程序比如 DEC Chip 21040 PCI 以太网驱动程序在 tulip.c 中 
  • /sound 所有的声卡驱动程序的位置 
 

File Systems (文件系统) 

EXT2 文件系统的源程序都在 fs/ext2/ 子目录,数据结构的定义在 include/linux/ext2_fs.h,ext2_fs_i.h 和 ext2_fs_sb.h 中。虚拟文件系统的数据结构在 include/linux/fs.h 中描述,代码是 fs/* 。 Buffer cache 和 update 核心守护进程都是用 fs/buffer.c 实现的 
 

Network (网络)

网络代码放在 net 子目录,大部分的 include 文件在 include/net 。 BSD socket 代码在 net/socket.c , Ipv4 INET socket 代码在 net/ipv4/af_inet.c 中。通用协议的支持代码(包括 sk_buff 处理例程)在 net/core 中, TCP/IP 网络代码在 net/ipv4 。网络设备驱动程序在 drivers/net 
 

Modules (模块) 

核心模块代码部分在核心,部分在 modules 包中。核心代码全部在 kernel/modules.c ,数据结果和核心守护进程 kerneld 的消息则分别在 include/linux/module.h 和 include/linux/kerneld.h 中。你可能也希望在 include/linux/elf.h 中查看一个 ELF 目标文件的结构 
2019-03-04 22:17:50 qq_40589292 阅读数 98

通常Linux会有以下目录

  • arch 子目录包括所有和体系结构相关的核心代码。它还有更深的子目录,每一个代表一种支持的体系结构
  • include 子目录包括编译核心所需要的大部分 include 文件。它也有更深的子目录,每一个支持的体系结构一个。 include/asm 是这个体系结构所需要的真实的 include 目录的软链接,例如 include/asm-i386 。为了改变体系结构,你需要编辑核心的 makefile ,重新运行 Linux 的核心配置程序 
  • init 这个目录包含核心的初始化代码,这时研究核心如何工作的一个非常好的起点
  • mm 这个目录包括所有的内存管理代码。和体系结构相关的内存管理代码位于 arch/*/mm/
  • drivers 系统所有的设备驱动程序在这个目录。它们被划分成设备驱动程序类
  • ipc 这个目录包含核心的进程间通讯的代码
  • modules 这只是一个用来存放建立好的模块的目录
  • fs 所有的文件系统代码。被划分成子目录,每一个支持的文件系统一个
  • kernel 主要的核心代码。同样,和体系相关的核心代码放在 arch/*/kernel
  • net 核心的网络代码
  • lib 这个目录放置核心的库代码。和体系结构相关的库代码在 arch/*/lib/
  • scripts 这个目录包含脚本(例如 awk 和 tk 脚本),用于配置核心

按照以下顺序阅读源代码会轻松点

  1. 核心功能(kernel) 
  2. 内存管理(mm) 
  3. 文件系统(fs)
  4. 进程通讯(ipc)
  5. 网络(net)
  6. 系统启动和初始化(init/main和head.S)
  7. 其他等等

 

System Startup and Initialization (系统启动和初始化)

在一个 Intel 系统上,当 loadlin.exe 或 LILO 把核心加载到内存并把控制权交给它的时候,核心开始启动。这一部分看 arch/i386/kernel/head.S 。 head.S 执行一些和体系结构相关的设置工作并跳到 init/main.c 中的 main() 例程。

 

Memory Management (内存管理)

代码大多在 mm 但是和体系结构相关的代码在 arch/*/mm 。 Page fault 处理代码在 mm/memory.c 中,内存映射和页缓存代码在 mm/filemap.c 中。 Buffer cache 在 mm/buffer.c 中实现,交换缓存在 mm/swap_state.c 和 mm/swapfile.c 中。 

 

Kernel

大部分相对通用的代码在 kernel ,和体系结构相关的代码在 arch/*/kernel 。调度程序在 kernel/sched.c , fork 代码在 kernel/fork.c 。 bottom half 处理代码在 include/linux/interrupt.h 。 task_struct 数据结构可以在 include/linux/sched.h 中找到 

 

PCI

PCI 伪驱动程序在 drivers/pci/pci.c ,系统范围的定义在 include/linux/pci.h 。每一种体系结构都有一些特殊的 PCI BIOS 代码, Alpha AXP 的位于 arch/alpha/kernel/bios32.c 

 

Interprocess Communication

全部在 ipc 目录。所有系统 V IPC 对象都包括 ipc_perm 数据结构,可以在 include/linux/ipc.h 中找到。系统 V 消息在 ipc/msg.c 中实现,共享内存在 ipc/shm.c 中,信号灯在 ipc/sem.c 。管道在 ipc/pipe.c 中实现。 

 

Interrupt Handling

核心的中断处理代码几乎都是和微处理器(通常也和平台)相关。 Intel 中断处理代码在 arch/i386/kernel/irq.c 它的定义在 incude/asm-i386/irq.h 。 

 

Device Drivers (设备驱动程序) 

Linux 核心源代码的大部分代码行在它的设备驱动程序中。 Linux 所有的设备驱动程序源代码都在 drivers 中,但是它们被进一步分类: 

  • /block 块设备驱动程序比如 ide ( ide.c )。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看 drivers/block/genhd.c 中的 device_setup() 。它不仅初始化硬盘,也初始化网络,因为你安装 nfs 文件系统的时候需要网络。块设备包括基于 IDE 和 SCSI 设备。 
  • /char 这里可以查看基于字符的设备比如 tty ,串行口等。 
  • /cdrom Linux 所有的 CDROM 代码。在这里可以找到特殊的 CDROM 设备(比如 Soundblaster CDROM )。注意 ide CD 驱动程序是 drivers/block 中的 ide-cd.c ,而 SCSI CD 驱动程序在 drivers/scsi/scsi.c 中 
  • /pci PCI 伪驱动程序。这是一个观察 PCI 子系统如何被映射和初始化的好地方。 Alpha AXP PCI 整理代码也值得在 arch/alpha/kernel/bios32.c 中查看 
  • /scsi 在这里不但可以找到所有的 Linux 支持的 scsi 设备的驱动程序,也可以找到所有的 SCSI 代码 
  • /net 在这里可以找到网络设备驱动程序比如 DEC Chip 21040 PCI 以太网驱动程序在 tulip.c 中 
  • /sound 所有的声卡驱动程序的位置 

 

File Systems (文件系统) 

EXT2 文件系统的源程序都在 fs/ext2/ 子目录,数据结构的定义在 include/linux/ext2_fs.h,ext2_fs_i.h 和 ext2_fs_sb.h 中。虚拟文件系统的数据结构在 include/linux/fs.h 中描述,代码是 fs/* 。 Buffer cache 和 update 核心守护进程都是用 fs/buffer.c 实现的 

 

Network (网络)

网络代码放在 net 子目录,大部分的 include 文件在 include/net 。 BSD socket 代码在 net/socket.c , Ipv4 INET socket 代码在 net/ipv4/af_inet.c 中。通用协议的支持代码(包括 sk_buff 处理例程)在 net/core 中, TCP/IP 网络代码在 net/ipv4 。网络设备驱动程序在 drivers/net 

 

Modules (模块) 

核心模块代码部分在核心,部分在 modules 包中。核心代码全部在 kernel/modules.c ,数据结果和核心守护进程 kerneld 的消息则分别在 include/linux/module.h 和 include/linux/kerneld.h 中。你可能也希望在 include/linux/elf.h 中查看一个 ELF 目标文件的结构 

 

 

参考

Linux内核源代码:http://www.kernel.org/

深入分心Linux内核源代码:http://oss.org.cn/kernel-book/

Linux的有关参考资料:http://www.oldlinux.org/index_cn.html

原文:https://www.cnblogs.com/preacher/p/4647573.html

2016-12-07 23:36:22 f002489 阅读数 41
[url]http://www.cnblogs.com/preacher/p/4647573.html[/url]


通常Linux会有以下目录
arch 子目录包括所有和体系结构相关的核心代码。它还有更深的子目录,每一个代表一种支持的体系结构
include 子目录包括编译核心所需要的大部分 include 文件。它也有更深的子目录,每一个支持的体系结构一个。 include/asm 是这个体系结构所需要的真实的 include 目录的软链接,例如 include/asm-i386 。为了改变体系结构,你需要编辑核心的 makefile ,重新运行 Linux 的核心配置程序
init 这个目录包含核心的初始化代码,这时研究核心如何工作的一个非常好的起点
mm 这个目录包括所有的内存管理代码。和体系结构相关的内存管理代码位于 arch/*/mm/
drivers 系统所有的设备驱动程序在这个目录。它们被划分成设备驱动程序类
ipc 这个目录包含核心的进程间通讯的代码
modules 这只是一个用来存放建立好的模块的目录
fs 所有的文件系统代码。被划分成子目录,每一个支持的文件系统一个
kernel 主要的核心代码。同样,和体系相关的核心代码放在 arch/*/kernel
net 核心的网络代码
lib 这个目录放置核心的库代码。和体系结构相关的库代码在 arch/*/lib/
scripts 这个目录包含脚本(例如 awk 和 tk 脚本),用于配置核心
按照以下顺序阅读源代码会轻松点
核心功能(kernel)
内存管理(mm)
文件系统(fs)
进程通讯(ipc)
网络(net)
系统启动和初始化(init/main和head.S)
其他等等

System Startup and Initialization (系统启动和初始化)

在一个 Intel 系统上,当 loadlin.exe 或 LILO 把核心加载到内存并把控制权交给它的时候,核心开始启动。这一部分看 arch/i386/kernel/head.S 。 head.S 执行一些和体系结构相关的设置工作并跳到 init/main.c 中的 main() 例程。

Memory Management (内存管理)

代码大多在 mm 但是和体系结构相关的代码在 arch/*/mm 。 Page fault 处理代码在 mm/memory.c 中,内存映射和页缓存代码在 mm/filemap.c 中。 Buffer cache 在 mm/buffer.c 中实现,交换缓存在 mm/swap_state.c 和 mm/swapfile.c 中。

Kernel

大部分相对通用的代码在 kernel ,和体系结构相关的代码在 arch/*/kernel 。调度程序在 kernel/sched.c , fork 代码在 kernel/fork.c 。 bottom half 处理代码在 include/linux/interrupt.h 。 task_struct 数据结构可以在 include/linux/sched.h 中找到

PCI

PCI 伪驱动程序在 drivers/pci/pci.c ,系统范围的定义在 include/linux/pci.h 。每一种体系结构都有一些特殊的 PCI BIOS 代码, Alpha AXP 的位于 arch/alpha/kernel/bios32.c

Interprocess Communication

全部在 ipc 目录。所有系统 V IPC 对象都包括 ipc_perm 数据结构,可以在 include/linux/ipc.h 中找到。系统 V 消息在 ipc/msg.c 中实现,共享内存在 ipc/shm.c 中,信号灯在 ipc/sem.c 。管道在 ipc/pipe.c 中实现。

Interrupt Handling

核心的中断处理代码几乎都是和微处理器(通常也和平台)相关。 Intel 中断处理代码在 arch/i386/kernel/irq.c 它的定义在 incude/asm-i386/irq.h 。

Device Drivers (设备驱动程序)

Linux 核心源代码的大部分代码行在它的设备驱动程序中。 Linux 所有的设备驱动程序源代码都在 drivers 中,但是它们被进一步分类:
/block 块设备驱动程序比如 ide ( ide.c )。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看 drivers/block/genhd.c 中的 device_setup() 。它不仅初始化硬盘,也初始化网络,因为你安装 nfs 文件系统的时候需要网络。块设备包括基于 IDE 和 SCSI 设备。
/char 这里可以查看基于字符的设备比如 tty ,串行口等。
/cdrom Linux 所有的 CDROM 代码。在这里可以找到特殊的 CDROM 设备(比如 Soundblaster CDROM )。注意 ide CD 驱动程序是 drivers/block 中的 ide-cd.c ,而 SCSI CD 驱动程序在 drivers/scsi/scsi.c 中
/pci PCI 伪驱动程序。这是一个观察 PCI 子系统如何被映射和初始化的好地方。 Alpha AXP PCI 整理代码也值得在 arch/alpha/kernel/bios32.c 中查看
/scsi 在这里不但可以找到所有的 Linux 支持的 scsi 设备的驱动程序,也可以找到所有的 SCSI 代码
/net 在这里可以找到网络设备驱动程序比如 DEC Chip 21040 PCI 以太网驱动程序在 tulip.c 中
/sound 所有的声卡驱动程序的位置

File Systems (文件系统)

EXT2 文件系统的源程序都在 fs/ext2/ 子目录,数据结构的定义在 include/linux/ext2_fs.h,ext2_fs_i.h 和 ext2_fs_sb.h 中。虚拟文件系统的数据结构在 include/linux/fs.h 中描述,代码是 fs/* 。 Buffer cache 和 update 核心守护进程都是用 fs/buffer.c 实现的

Network (网络)

网络代码放在 net 子目录,大部分的 include 文件在 include/net 。 BSD socket 代码在 net/socket.c , Ipv4 INET socket 代码在 net/ipv4/af_inet.c 中。通用协议的支持代码(包括 sk_buff 处理例程)在 net/core 中, TCP/IP 网络代码在 net/ipv4 。网络设备驱动程序在 drivers/net

Modules (模块)

核心模块代码部分在核心,部分在 modules 包中。核心代码全部在 kernel/modules.c ,数据结果和核心守护进程 kerneld 的消息则分别在 include/linux/module.h 和 include/linux/kerneld.h 中。你可能也希望在 include/linux/elf.h 中查看一个 ELF 目标文件的结构
没有更多推荐了,返回首页