Linux内核驱动模块编程指南 (内核版本2.2, 2.4)

Peter Jay Salzman
Ori Pomerantz

2003-04-04 ver 2.4.0


内容表
前言
1. 声明
2. 注意
3. 译者注
1. 序言
1.1. 什么是内核模块?
1.2. 内核模块是如何进入内核工作的?
2. Hello World
2.1. Hello, World (part 1): 最简单的内核模块
2.2. 编译内核模块
2.3. Hello World (part 2)
2.4. Hello World (part 3): 关于 __init and __exit
2.5. Hello World (part 4): 内核模块证书和内核模块文档说明
2.6. 从命令行传递参数给内核模块
2.7. 由多个文件构成的内核模块
3. 开始热身
3.1. 内核模块和用户程序的区别
4. 字符设备文件
4.1. 字符设备驱动程序
5. /proc文件系统
5.1. /proc文件系统
6. 使用 /proc 输入
6.1. 使用/proc输入
7. 与设备文件对话
7.1. 与设备文件对话 (writes and IOCTLs)}
8. 操作系统调用
8.1. 操作系统调用
9. 阻塞进程
9.1. 阻塞进程
10. 覆盖Printks
10.1. 覆盖 printk
11. 任务调度
11.1. 任务调度
12. 中断处理
12.1. 中断处理
13. 对称多线程处理
13.1. 对称多线程处理
14. 注意
14.1. 注意
A. 从 2.0 到 2.2的变化
A.1. 从 2.0 到 2.2的变化
B. 为什么这样写?
B.1. 为什么这样写?
索引
所用的示例代码的列表
2-1. hello-1.c
2-2. 最基本的内核模块使用的Makefile
2-3. hello-2.c
2-4. 两个内核模块使用的Makefile
2-5. hello-3.c
2-6. hello-4.c
2-7. hello-5.c
2-8. start.c
2-9. stop.c
2-10. 多个源代码文件构成的内核模块使用的Makefile
4-1. chardev.c
4-2. 支持多版本内核的宏
5-1. procfs.c
6-1. procfs.c
7-1. chardev.c
7-2. chardev.h
7-3. ioctl.c
8-1. procfs.c
9-1. sleep.c
10-1. print_string.c
11-1. sched.c
12-1. intrpt.c