Linux 设备驱动程序

作者:Alessandro Rubini
出版社:O'Reilly & Associates, Inc.
电子邮件:info@ora.com
价格:$29.95 美元
ISBN: 1-56592-292-1
评论员:Mark Bishop
在过去的几年里,我们已经看到 Linux 支持的设备数量呈爆炸式增长。如果您想了解设备驱动程序的工作原理,或者为特定设备添加内核支持,那么 Linux 设备驱动程序 是您需要的书。但是请注意,如果您不熟悉 C 语言,您将无法理解书中大量使用的示例。另请注意,无论 Linux 设备驱动程序书籍写得多么好,它都会因为 Linux 内核的开发速度而过时。 Rubini 先生意识到了这一点,并在整本书中慷慨地指出了内核版本之间的差异(如果适用)。他甚至专门用一章来介绍 Linux 内核的最新发展。
我发现 Linux 设备驱动程序 对其编写的 Linux 内核版本(2.0.x 到 2.1.43,即首次印刷时最新的版本)的描述非常完整。
本书大致分为两部分。第一部分包括第 1 章到第 10 章,从一个简单的 “Hello World” 模块开始,然后介绍如何正确设置内核模块。第一部分继续介绍了编写面向字符设备的完整功能驱动程序所需的整个模块化设备编程过程。
由于读者可能没有任何编写模块化设备驱动程序的经验,因此书中包含了一章关于调试技术的章节。我发现这些技术非常有用,它们帮助我加速了几个内核驱动程序的开发。但我发现令人困惑的一件事是几个章节的呈现顺序。最突出的是第 10 章,它主要讨论可移植性问题。本章本可以更早地出现在书中,以帮助保持作者早期维持的流畅性。
我发现第 9 章是最有用也是最有趣的;它涵盖了中断处理。为了帮助读者理解中断是如何处理的,它要求读者通过将两个引脚连接在一起来修改其并行端口(这些零件可以在您当地的计算机硬件商店以大约 3 美元的价格找到)。一旦我的并行端口被修改,我就能够充分利用这些示例。 Rubini 先生将一个困难的主题分解成可管理的部分。他非常有效地做到了这一点,以极大的流畅性处理非常技术性的主题。
Linux 设备驱动程序 的第二部分涵盖了更高级的主题。这些主题包括块设备驱动程序和网络接口,以及如何编写特定于它们的设备驱动程序。第二部分还涵盖了内存管理以及外围总线(如 PCI 和 ISA 总线)上的设备访问。它还深入探讨了第一部分中简要提及的主题。
第二部分还包含我在其他 Linux 内核书籍中很少看到的描述——内核源代码的实际物理布局的描述。 Rubini 先生通过跟踪内核从第一个与架构无关的函数 (start_kernel) 到 init 进程的启动路径来探讨这个问题。这也是本可以更早地放在书中的章节之一,但无论它位于何处,它的包含都非常值得赞赏。
Linux 设备驱动程序 具有许多不同的用途。本书将永远服务于那些希望扩展 Linux 支持的设备数量的开发者。而且,您不必有编写设备驱动程序的愿望才能从本书中学到东西。您只需要有兴趣更多地了解设备如何与内核协同工作,以提供我们想要的服务和稳定性。这是一部伟大的作品,其主要缺点是时间——本书于 1998 年 2 月出版。后续印刷的更改可以在 http://www.oreilly.com/catalog/linuxdrive/errata/ 找到。我敦促 Rubini 先生推出第二版,我计划成为第一个购买它的人。
