Features
- Cover Type: Hard Cover with 744 pages
- Published by: Prentice Hall PTR
- Edition: 1st Edition April 6, 2008
- Written in: English
- ISBN 10 Number: 0132396556
- ISBN 13 Number: 978-0132396554
-
Book Dimensions:
9.5 x 7.2 x 1.6 inches
- Weighs: 2.6 pounds
Product Description
“Probably the most wide ranging and complete Linux device driver book I’ve read.”
--Alan Cox, Linux Guru and Key Kernel Developer
“Very comprehensive and detailed, covering almost every single Linux device driver type.”
--Theodore Ts’o, First Linux Kernel Developer in North America and Chief Platform Strategist of the Linux Foundation
The Most Practical Guide to Writing Linux Device Drivers
Linux now offers an exceptionally robust environment for driver development: with today’s kernels, what once required years of development time can be accomplished in days. In this practical, example-driven book, one of the world’s most experienced Linux driver developers systematically demonstrates how to develop reliable Linux drivers for virtually any device. Essential Linux Device Drivers is for any programmer with a working knowledge of operating systems and C, including programmers who have never written drivers before. Sreekrishnan Venkateswaran focuses on the essentials, bringing together all the concepts and techniques you need, while avoiding topics that only matter in highly specialized situations. Venkateswaran begins by reviewing the Linux 2.6 kernel capabilities that are most relevant to driver developers. He introduces simple device classes; then turns to serial buses such as I2C and SPI; external buses such as PCMCIA, PCI, and USB; video, audio, block, network, and wireless device drivers; user-space drivers; and drivers for embedded Linux–one of today’s fastest growing areas of Linux development. For each, Venkateswaran explains the technology, inspects relevant kernel source files, and walks through developing a complete example.
• Addresses drivers discussed in no other book, including drivers for I2C, video, sound, PCMCIA, and different types of flash memory
• Demystifies essential kernel services and facilities, including kernel threads and helper interfaces
• Teaches polling, asynchronous notification, and I/O control
• Introduces the Inter-Integrated Circuit Protocol for embedded Linux drivers
• Covers multimedia device drivers using the Linux-Video subsystem and Linux-Audio framework
• Shows how Linux implements support for wireless technologies such as Bluetooth, Infrared, WiFi, and cellular networking
• Describes the entire driver development lifecycle, through debugging and maintenance
• Includes reference appendixes covering Linux assembly, BIOS calls, and Seq files
About The Author
Sreekrishnan Venkateswaran has spent more than a decade working in IBM product development laboratories. He has ported Linux to devices ranging from wristwatches and music players to PDAs, VoIP phones, and even pacemaker programmers. He was a Contributing Editor and kernel columnist for Linux Magazine for more than two years.
Reader Reviews
I've been frustrated by many other Linux kernel and device driver books. The authors often make assumptions about the readers knowledge and gloss over areas that can be quite confusing. To some extent, that's unavoidable: the Linux kernel is monstrous and very complex, and the hardware that drivers control can also be dark and mysterious territory. I really appreciated this books approach. It's not that everything is explained in complete detail; that would be impossible. However, the author obviously tries very hard to give an overview, an orientation that will hopefully set your mind in the right direction, before diving into details. Throughout the book he adds "go look at this" suggestions that can help you understand whatever he's dealing with at this point. I think Chapter 2, which is a high level fly-by of the kernel in general, is an absolute masterpiece. That starts by pulling typical kernel boot messages and explaining what they mean and what's going on in code to produce them. It then goes on to discuss kernel locks, briefly looks at procfs and memory allocation, and closes (as each chapter does) with pointers to where to look in the source for the subjects discussed. Chapters 3 and 4 flesh out basic concepts more, and then after that the book goes into details, picking both real world and fanciful examples of hardware and giving sample device drivers. Simple devices are presented first, while later chapters get into more complicated hardware, but in each case the same general format is followed: overview of the how and why, sample driver(s), how to most easily debug, and pointers to real kernel sources. Very well done. I have no complaints - oh, a few minor typos, maybe, but nothing serious.