Book Review: Linux Device Drivers 3rd Edition
Only the most seasoned kernel hacker with an eminent dislike for well written documentation could argue with this updated classic title which as well as quite obviously being the last printed word on device drivers also provides good code-driven insights into the kernel. In the words of this work's subtitle, device drivers are "where the kernel meets the hardware," and such an interface is obviously of great interest to anyone studying OS, the Linux kernel or computer science in general.
![]()
Rather than diving straight into dangerous territory through kernel hacking, playing with device drivers offers an innocuous introduction to the major issues such as scheduling, memory management, and interrupt handling. Such backgrounding topics hog several seriously meaty chapters within this great work. At the same time as providing a valuable resource for the novice hacker, Linux Device Drivers is well formatted as to details of the API, so that those seeking to get to the heart of the matter and thus implement a driver for a real world device are equally well served.
It's certainly none too tricky to specify the changes over previous editions; This third edition is strictly a bleeding edge 2.6.10 affair, and thus should be able to stand the test of time for a good while. It's worth noting that you want any info on 2.4 then look to the second edition. Backwards compatibility wise, earlier kernels really don't get a look in. Other than changes under 2.6, including a radically different device model which is well discussed here, a new chapter on the USB bus and a few other minor enhancements, the structure is very much maintained throughout editions, which does make it easy on those acquainted with earlier iterations.
Well commented code examples are the meat of this work, and in this respect Linux Device Drivers is seriously exemplary. Rather than leaving new coders dangling in front of API specs and concise code snippets, a full, though minimally functional hello world module kicks off proceedings. The wonderfully titled scull, sbull and snull drivers for character, block and network devices rounds out a roster of intensely illustrative sample code. Such examples are further used to describe a range of concepts and issues, and smaller driver code, such as shortprint which deals with the parallel port, or the tiny_tty_driver which covers such devices, provide a complete overview which should suit most needs. The example code is heftily backed up with intelligent, well written theory which well describes how GNU/Linux resources themselves can be used to dig deeper into kernel code and system structures. It adds up to a solid package which should stand kernel hackers in good stead.
Authors: Jonathan Corbet et al.
Publisher: O'Reilly
ISBN: 0596005903
Review by Martin Howse

