- Hardcover: 744 pages
- Publisher: Prentice Hall; 1 edition (April 6, 2008)
- Language: English
- ISBN-10: 0132396556
- ISBN-13: 978-0132396554
- Product Dimensions: 7.3 x 1.7 x 9.5 inches
- Shipping Weight: 2.7 pounds
- Average Customer Review: 31 customer reviews
- Amazon Best Sellers Rank: #618,267 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Essential Linux Device Drivers 1st Edition
Use the Amazon App to scan ISBNs and compare prices.
Customers who bought this item also bought
Customers who viewed this item also viewed
What other items do customers buy after viewing this item?
From the Back Cover
"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.
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
Please see the author's errata page:
[...](Link removed by Amazon)
Additionally there is another errata page for the book:
[...](Link removed by Amazon)
The high number of errors take away from the readers experience with learning the subject. More time is spent reading and checking the author's Errata page to make sure they are not misinformed. This book will probably be worth 4 stars if they release a second edition with all the errors fixed. It may be worth picking up LDD3 as a supplement and probably has less errors. Additionally, the author spends a ton of time in the beginning discussing kernel threads, klists, ktrees, IRQs, softirqs, and other key kernel components and hardware specifics. These concepts would probably be better explained hands on building drivers starting with basic character drivers and progressing to more difficult drivers. Most people learn by doing and seeing first hand, there is no point in throwing a ton of "jargon" at a learner without real context. Often times the author would state after a long dissertation, "We will see this in X chapter" or "When in X chapter refer back". Personally, I don't like bouncing back and forth between pages cross referencing. Such concepts would be better explained in real use cases when writing a drivers throughout the chapters.
The author is clearly an experienced device driver programmer and he has a first rate command of written English. I found his writing to be clear, well organized and most importantly capable of teaching me how to work with kernel sources that are actively in use. He does an excellent job of explaining the environment in which modern device drivers will be used and he covers all of the major categories of devices that a programmer would need. This book thoroughly covers these categories in enough detail to get the programmer started writing drivers. I particularly liked his mentioning several source code analysis tools that are commonly used by those having to work with kernel sources. At least
two of the tools, cscope and ctags, I used when working on kernel maintenance on another UNIX platform. These tools made it possible to browse through the symbols used in the kernel and also to allow one to see where the corresponding name was declared and where it was accessed (read or written).
The author gives a high level explanation of each driver type covered and then helps the reader navigate the relevant source code files in the kernel source tree.
I was also pleasantly surprised to find that the author had more than a passing aquaintance with embedded Linux having participated in a number of driver projects for embedded Linux devices. As you might expect in a book on device drivers the author describes the major routines used for a class of device drivers,
where the routine can be found (file/tree structure), a full explanation of how the routines are used and the functions they perform. The author presents the reader with device driver code for devices that would need drivers and also shows how they would be integrated into the existing device driver structure
for the class of device presented.
The final chapters of his book describe user space device drivers, miscellaneous device drivers (ACPI, Firewire etc). He has an excellent chapter on debugging device drivers which covers kernel debuggers, kernel probes as well as kernel exec and kdump. He offers a sample debugging section for a buggy driver. He also covers kernel execution profiling and tracing.
The book index is well done allowing the reader to quickly pinpoint items of interest. Book indexing is to some extent an art form and Prentice Hall does an especially good job with their technical books.
Overall I'd give this book a high rating and it's good enough that I will add a copy to my personal
This brings me to the second half of "Essential Linux Device Drivers", where specific device types are discussed. So little time is spent on each type that none are covered in enough detail to actually go off and start a driver of that type. You could be thinking that this book never claimed to enable you to write a PCI driver, for example, and that would be true. It just feels like a reduced scope with increased depth on the remainder would have made a much more useful book, rather than a bathroom reader.
Most recent customer reviews
Very exhaustive too.Read more