Linux
设备驱动程序
(第二版)
ii
内容提要
本书面向的读者,是那些想在
Linux
操½系统下支持各种计算机外设,或者想开发新的硬件并在
Linux
下运行的人们。Linux 是
Unix
市场中增长最为快速的部分,并且在许多应用领域获得了广
泛而热情的支持。现在,人们越来越清楚地认识到
Linux
是嵌入式系统的一个极½平台。
《Linux
设备驱动程序》已经成为该领域的一流著½,此书将以往那些口述式的经验和知识,或者隐晦的源
代码注释变成了系统地讲述各种设备驱动程序编写方法的著½。
Linux
内核的
2.4
版在设备驱动程序方面发生了重大变化,
它简化了许多工½,
½同时提供了许多
新的功½,可让驱动程序更加有效而且灵活。本书第二版½底讲述了这些变化,并介绍了许多新的
处理器和总线结构。
要阅读此书,并不要求读者成为一名内核黑客;我们仅仅希望读者理解
C
语言并熟悉
Unix
系统
调用。我们循序渐进地讲述了字符设备、块设备和½络设备的驱动程序,并且给出了功½完善的示
例驱动程序。这些示例驱动程序说明了驱动程序设计中的许多问题以及解决方法,并且不需要任½
特定的硬件就可以运行。本书第二版的重要修订包括:对对称多处理器(SMP)系统和锁机制的讨
论、对新
CPU
的支持以及新近支持的总线的讨论等等。
如果读者对操½系统完成其任务的方式感兴趣,本书则提供了对地址空间、异步事件和
I/O
的深
入讨论。
可移植性是本书的一个主要关注点。½管本书主要讲述
2.4
版本,½只要可½,我们也会讲述向
后直到
2.0
版本的相关内容。
《Linux 设备驱动程序》也讲述了如½在各种硬件平台上实现最大的
可移植性;示例驱动程序已经在
IA32(PC)和 IA64、PowerPC、SPARC
和
SPARC64、Alpha、
ARM
以及
MIPS
等平台上经过了测试。
iii
½者简介
Alessandro Rubini
在他获得电子工程师职称后不久,就安装了
Linux 0.99.14
版本。后来,他
在
Pavia
大学获得了计算机科学博士学½。½很快他就离开了大学,因为他实在不想写很多的论
文。现在,他是一名自由撰稿人,编写和设备驱动程序相关的文章和论文(很有½刺意味)
。在他
的小孩出世之前,他曾是一名年½的黑客;而现在则是一名年老的、偏爱非
PC
计算机平台开发
的自由½件鼓吹者。
Jonathan Corbet
早在
1981
年就接触了
BSD Unix
的源代码。那时,科½拉多大学的一名教
员让他“修正”其中的分页算法。从那时起直到现在,他深入研究了他所遇到的每一个系统,其中
包括
VAX、Sun、Ardent
以及
x86
系统的驱动程序。他在
1993
年第一次接触
Linux
系统,从
此以后一直从事
Linux
的开发。Corbet 先生是
Linux Weekly News (http://LWN.net)
的奠基人和执
行主编;他和妻子及两个孩子生活在科½拉多州巨石市。
iv
目
½
目
前
½
言 ....................................................... i
Alessandro
的介绍
............................................................................................................i
Jon
的介绍........................................................................................................................ii
本书面向的读者
...............................................................................................................ii
内容的组织
......................................................................................................................iii
背景信息
..........................................................................................................................iii
其它信息来源
..................................................................................................................iv
在线版本和条款
............................................................................................................... v
本书½用的约定
............................................................................................................... v
我们希望得到来自读者的反馈
......................................................................................vi
致谢
..................................................................................................................................vi
第
1
章 设备驱动程序简介 .................................... 1
1.1
设备驱动程序的½用
.............................................................................................. 2
1.2
内核功½划分
.......................................................................................................... 3
进程管理......................................................................................................................................................
3
内存管理......................................................................................................................................................
4
文件系统......................................................................................................................................................
4
设备控制......................................................................................................................................................
4
½络功½......................................................................................................................................................
4
1.3
设备和模块分类
...................................................................................................... 5
字符设备......................................................................................................................................................
5
块设备..........................................................................................................................................................
5
½络接口......................................................................................................................................................
5
1.4
1.5
1.6
1.7
1.8
安全问题
.................................................................................................................. 6
版本编号
.................................................................................................................. 7
许可证条款
.............................................................................................................. 8
加入内核开发社团
.................................................................................................. 9
本书概要
.................................................................................................................. 9
第
2
章 构造和运行模块 ..................................... 11
2.1
核心模块与应用程序的对比
................................................................................ 12
2.1.1
2.1.2
2.1.3
2.2.1
2.2.2
用户空间和内核空间.....................................................................................................
14
内核中的并发.................................................................................................................
15
½前进程.........................................................................................................................
15
版本依赖.........................................................................................................................
18
平台依赖.........................................................................................................................
19
2.2
编译和装½½
............................................................................................................ 16
2.3
内核符号表
............................................................................................................ 20
2.4
初始化和关闭
........................................................................................................ 22
2.4.1
init_module
中的出错处理
............................................................................................ 22
i
评论