Updated to cover version 2.4.x of the Linux kernel, the second edition of Linux Device Drivers
remains the best general-purpose, paper-bound guide for programmers wishing to make hardware devices work under the world's most popular open-source operating system. The authors take care to show how to write drivers that are portable--that is, that compile and run under all popular Linux platforms. That, along with the fact that they're careful to explain and illustrate concepts, makes this book very well-suited to any programmer familiar with C but not with the hardware-software interface. It's worth noting that the emphasis in the title is on "device drivers" as much as "Linux". This book will make sense to you if you've never written a driver for any platform before. It helps if you have some Linux or UNIX background, but even that is secondary as a prerequisite to C skill.
For a programming text--and one concerned with low-level instructions and data structures, at that--this book is remarkably rich in prose. You'll typically want to read this book straight through, more or less skipping the code samples, before sketching out your plan for the driver you need to write. Then, go back and pay closer attention to the sections on specific details you need to implement, such as custom task queues. For coding-time details about specific system calls and programming techniques, count on the index to point you to the right passages. --David Wall
Topics covered: Techniques for writing hardware device drivers that run under Linux kernels 2.0.x through 2.2.x. Sections show how to manage memory, time, interrupts, ports and other details of the hardware-software interface.
Linux Journals Editors' Choice Best Technical Book of 2002 Award -- Linux Journals Editors'