推荐序
这不是一本单纯的关于Linux设备驱动程序入门的书。它是给有一定的Linux设备驱动程序编写经验并且对众多Linux底层设备驱动内幕机制感兴趣的读者量身定制的。与市面上已经出版的Linux相关方面的图书的不同之处在于,本书并不着重于全面描述Linux内核,也不只是简单地告诉你如何去写一个Linux下的设备驱动程序。它是从设备驱动程序的视角出发,深入到Linux内核去剖析那些和驱动程序实现机制密切相关的技术内幕。比如让你理解为什么在这个地方驱动程序应该使用work queue而不是tasklet,为什么在中断处理例程里应该使用spin_lock而不是mutex_lock……因为只有当你对驱动程序中使用的各种内核实现有了清晰的认识,你才能在日常的工作当中随心所欲地驾驭它们,写出更高性能更安全的代码。知其然,更知其所以然,对于沉迷于技术领域的人而言,这种不断探索的好奇心是对技术工作能长期保持热情的一个基本特质。相对于市面上已经出版的相关书籍而言,本书具有以下两个鲜明的特色:
细节揭秘
目前市场上已经出版的Linux内核和驱动程序方面的书籍,大体上可分为两种。一种是侧重于内核本身,鉴于目前Linux的内核源码已经十分庞大,这些讲解内核的书有些本身非常全面,作者的写作态度也非常严谨,比如Deep Understanding Linux Kernel,还有新近出版的Professional Linux Kernel Architecture,后者几乎涵盖了新版Linux内核中绝大部分重要的构件,但也正因如此,这样的书籍就不可能在与驱动程序相关的机制上留下太多笔墨。另外还有一种是专门讲解Linux驱动方面的书籍,典型的有Linux Device Driver和Essential Linux Device Driver。这些书着重于介绍Linux驱动的基本概念和架构,但是对于想了解更多幕后的技术细节的读者来说,《深入Linux设备驱动程序内核机制》一书可提供更详细的资源和帮助。通常当你想深入理解一些一般书籍没有描述的机制时,你可能会采用在线搜索或查看源码的方式,但有时这不仅费时也未必能得到满意的答案。本书提供了另一途径让你更系统、有效地理解这些内核机制。我相信对于广大忙于在校学习、职场深造或课题攻关的读者来说,本书可提供很多有益的帮助。
图片说理
这本书另外一个很大的特点是,作者大量使用其精心设计的图片来帮助你清晰地理解一些复杂的概念、流程和架构。这在中文版原创的图书中是很难能可贵的,相对而言外文书在这方面做得就要好很多。形象直观的图片胜过大量的文字,也能节省读者大量的时间。可以看到,本书的作者在这一方面做了很大的努力去加以完善,在我看来,这是一个非常好的尝试。本书作者当前正在AMD上海研发中心从事Linux显卡驱动等系统软件方面的研发工作,能在繁忙的工作之余,通过对自己学习和实践经验的总结写下这样一本书,对增进国内读者的Linux系统开发能力将起到很大的作用。我相信,如果作者有足够的时间与精力的话,这本书还可以进一步完善,包括在某些技术方面可以有更精细的描述。
AMD图形软件架构师 PMTS 俞辉
2011年8月24日于加拿大