This book is for anyone who wants to support computer peripherals under the Linux operating system or who wants to develop new hardware and run it under Linux. Linux is the fastest-growing segment of the UNIX market and is winning over enthusiastic adherents in many application areas. This book reveals information that heretofore has been passed by word-of-mouth or in cryptic source code comments, showing how to write a driver for a wide range of devices.
You don't have to be a kernel hacker to understand and enjoy this book; all you need is an understanding of C and some background in UNIX system calls. Drivers for character devices, block devices, and network interfaces are all described in step-by-step form and are illustrated with full-featured examples that show driver design issues, which can be executed without special hardware.
For those who are curious about how an operating system does its job, this book provides insights into address spaces, asynchronous events, and I/O.
Portability is a major concern in the text. The book is centered on version 2.0, but also covers 1.2.13 and experimental versions up to 2.1.43. You are also told how to maximize portability among hardware platforms.
Our look is the result of reader comments, our own experimentation, and feedback from distribution channels. Distinctive covers complement our distinctive approach to technical topics, breathing personality and life into potentially dry subjects. The image on the cover of Linux Device Drivers is of a bucking horse. A vivid description of this phenomenon is given in Marvels of the New West: A Vivid Portrayal of the Stupendous Marvels in the Vast Wonderland West of the Missouri River, by William Thayer (The Henry Bill Publishing Co., Norwich, CT, 1888). Thayer quotes a stockman who gives this description of a bucking horse: When a horse bucks he puts his head down between his legs, arches his back like an angry cat, and springs into the air with all his legs at once, coming down again with a frightful jar, and he sometimes keeps on repeating the performance until he is completely worn out with the excursion. The rider is apt to feel rather worn out too by that time, if he has kept his seat, which is not a very easy matter, especially if the horse is a real scientific bucker, and puts a kind of side action into every jump. The double girth commonly attached to these Mexican saddles is useful for keeping the saddle in its place during one of those bouts, but there is no doubt that they frequently make a horse buck who would not do so with a single girth. With some animals you can never draw up the flank girth without setting them bucking. The cover layout was produced with Quark XPress 3.3 and Adobe Photoshop 2.5 software, using the ITC Garamond Condensed font.
The interior layouts were designed by Edie Freedman and Jennifer Niederst, with modifications by Nancy Priest and Mary Jane Walsh. Chapter opening graphics are from the Dover Pictorial Archive and Marvels of the New West. Interior fonts are Adobe ITC Garamond and Adobe Courier. Text was prepared in SGML using the DocBook 2.1 DTD. The print version of this book was created by translating the SGML source into a set of gtroff macros using a filter developed at ORA by Norman Walsh. Steve Talbott designed and wrote the underlying macro set on the basis of the GNU gtroff -gs macros; Lenny Muellner adapted them to SGML and implemented the book design. The GNU groff text formatter version 1.09 was used to generate PostScript output. The illustrations that appear in the book were created in Macromedia Freehand 5.0 by Chris Reilley.
Being new to Linux kernel programming, I didn't realize how useless it really was until I got it home. Also, the continuity between the examples and the text are not up to the typical O'Reilly standards. May have been a good book a long time ago.
A superb book back in 1998 and worthy of a 'Definitive' back then, though two kernel versions later, it really does need replacing. Now that the 2.4 kernel has arrived, I would wait for the second edition to come out before parting with my money.
It isn't fair on the customer selling this book ( however good it was in its day ) when the second edition is about to make its debut. That's why I can only give this book an average rating.
I just finished my second, more careful reading of Linux Device Drivers. (I read it originally in 1998, shortly after it appeared.)
I found the book even more rewarding the second time through, and although I think it is time for an updated edition covering 2.2 and 2.4 kernels,I thoroughly recommend it to anyone interested in kernel development, not merely in hardware device drivers.
Again, I'd like to see a 2nd edition. Thanks, in this regard, for publishing examples updated for Linux 2.4.
Personally, one of the problems with Linux is the absence of proper documentation. I guess that this is partly caused by the fact that developers consider the source to be the ultimate documentation. Although there is nothing wrong with that point of view, it does complicate the learning curve and development time.
As the Linux kernel source is huge, writing modules and drivers is a long and tedious job, especially if it is your first. Eventually you will pull the old 'copy-modify-and-paste