It's not only an excellent introduction for those wishing to write device drivers for Linux, but also for those wanting to better understand the issues relating to device drivers in general.
At first glance the title might appear very specific and in a way it is. It does indeed describe writing device drivers for Linux, but it also covers much more. The book starts with an introduction of what a device driver is and the general issues that the writer must be aware of, together with instructions for building and running a basic device driver module. Over the next fifteen chapters, the book describes the use, design and implementation of the three main types of Linux device driver Char (i.e. serial ports), Block (i.e. floppy discs) and Network, together with different debugging techniques, interrupt handling, memory management, hardware management, multiple threads and peripheral buses. As you progress through the book the device drivers created (all source code is available via the Internet) gradually get more complex and complete. Throughout the book the Author attempts where possible to make all of the example drivers independent of hardware platform (PC, Sparc, Alpha, etc.), Linux distribution and kernel version. Any dependencies are highlighted with particular emphasis given to the differences between and portability issues relating to, the 1.2.x and 2.1.x releases of the kernel. The concluding chapters contain a tour of the Linux kernel itself and a description of recent developments in the (what was) upcoming 2.2 kernel release.
The book assumes an understanding of C and some background in Unix (for the commands and system calls). However, apart from this basic knowledge, a machine running Linux and the example source code is all that is required to create a wide variety of device drivers. Although most drivers interact with actual hardware devices, the only time that a soldering iron needs to be wielded is to attach a couple of wires to a parallel port connector.
This book fits perfectly into the O'Reilly family. It's written in a clear and readable style with an appropriate level of detail and by an author who has a real enthusiasm for the topic. It's not only an excellent introduction for those wishing to write device drivers for Linux, but also for those wanting to better understand the issues relating to device drivers in general.