第1章 Linux Kernel基础 1
1.1 Linux Kernel简介 1
1.2 如何编译和更换Linux Kernel 3
1.3 习题 11
第2章 Linux Kernel Module程序基础 13
2.1 gcc与Makefile使用简介 13
2.2 第一个Linux程序 15
2.3 第一个Linux Module程序 16
2.4 什么是Linux Kernel Module 18
2.5 由命令行传递参数到Linux Kernel Module 19
2.6 习题 21
第3章 Linux Kernel Source的函数调用关系 23
3.1 Linux Kernel Source Tree简介 23
3.2 Linux网络应用层程序 26
3.2.1 UDP应用程序 28
3.2.2 TCP应用程序 33
3.3 Linux TCP/IP Kernel连接建立过程 46
3.3.1 socket()函数 46
3.3.2 bind()函数 52
3.3.3 listen()函数 54
3.3.4 connect()函数 56
3.3.5 accept()函数 60
3.4 Linux TCP/IP Kernel数据传输过程 64
3.4.1 数据传送过程 64
3.4.2 数据接收过程 84
3.5 习题 103
第4章 利用Module修改Linux TCP/IP Kernel 105
4.1 对Linux网络核心程序稍加修改 105
4.2 利用Module修改Linux网络核心程序 110
4.3 利用IP Layer的Module修改输出封包的IP Header内容 116
4.4 利用Module得知收到的SYN封包数 125
4.5 利用Module得知收到的ACK封包数 134
4.6 利用Module依照几率丢弃送往特定IP地址的封包 139
4.7 习题 145
第5章 Linux Kernel Module进阶 147
5.1 Kernel Module之间的变量共享 147
5.2 编写一个可以让Kernel Module调用的公用子程序 149
5.3 Linux Proc简介 152
5.4 编写Proc文件驱动程序实现应用程序与Kernel间的消息传递 157
5.5 利用Module搭配Proc将输出封包的信息显示在Proc的文件中 163
5.6 习题 170
第6章 交错式Linux源程序代码跟踪方法 171
6.1 安装Linux Cross Source 171
6.2 Linux Cross Source使用说明 183
第7章 Linux远程调试(Remote Debug) 203
7.1 硬件的准备与安装 203
7.2 软件的准备与安装 204
7.3 Linux 远程调试的实际练习 209
第8章 核心2.6版Kernel Module 217
8.1 module-init-tools的更新 217
8.2 由Kernel 2.4版升级到Kernel 2.6版 220
8.3 配合核心版本2.6版Module的Kernel Source修改方法 226
8.4 编译并执行核心版本2.6版的Kernel Module 229
8.5 习题 231
参考文献 232