|
If you are real device driver developer, this book will not help at all. I believe that if you are real software engineer from linux related field, you can not give more than 2 stars.
If you just want to take a look what kind of device drivers are there and how it roughly looks like, you may take a look at this book. (But, do not expect more from those driver chapters.
If you really want to understand how linux device drivers works, do not buy this book. I can not believe how people gave more than 2 stars to this book.
it is not for you to understand how it work. it is merely for what devices are there) I purchased this book by just reading the reviews here, and got disappointed a lot.
This book looks like just a collection of "copy and paste" from many device drivers source code, and explanation is very superficial (I felt that this book is just like his jot downs from his work plus some copy and paste from linux driver codes). I would recommend linux device drivers 3rd edition from oreily even though it does not cover latest kernel.
I tried to find docomentation about Module.symvers, linking at runtime, symbol issues, etc. No luck. At least the o'reilly book touches on these topics.
(which is a bit outdated), "Embedded Linux" by Hollabaugh, "Building Embedded Linux Systems" by Yaghmour, "Understanding Linux Network Internals" by Benvenuti."Essential Linux Device Drivers" is the best one yet, followed by Rubini's as a closed second. One is to make clear that the spin_lock_irqsave() API should be used instead of spin_lock() whenever it may be called from interrupt context. I keep "Essential Linux Device Drivers" on my desk, next to a bunch of other Linux kernel programming books: "Linux Device Drivers" by Rubini, "Linux Kernel Internals" by Beck et. The code in "Essential Linux Device Drivers" has obviously been copied from real development projects, and I found no errors in it. You've helped me a lot with my driver code. Between these two books alone, you can learn how to write any device driver from scratch - if handed the hardware manual. There are some suggestions I have (and this applies to all Linux books I've read).
Overall, good job, Mr. al. Second is to explain how the interrupt routine stack space is created at the bottom of the regular (thread) stack space. But "Essential Linux Device Drivers" goes deeper, and has more real life code examples. I've looked carefully at the networking driver code, serial driver code, i2c driver code, and kernel thread/interlocking/timer primitives. Venkateswaran. The $44.99 I paid was well spent on your book.
To understand what the author is doing, you would have to resort to searching alternate references. The people who gave this book 5 starts are either friends of the author, the author himself, or guys who have been writing linux drivers for years and felt like reading what they already knew. Also his examples don't work. Although the author seems to be very knowledgeable on the topic, his book is really terrible at explaining the essential kernel functions needed for writing device drivers and their respective parameters. He only mentions that they exist. I can tell that he never tried to compiled these examples.After reading the first few chapters, I decided to get the linux device drivers book from O'REILLY and as soon as I started reading, I could point out loads of important information that the first book failed to relay. The examples in the O'REILLY book are also by far better.
You could be thinking that this book never claimed to enable you to write a PCI driver, for example, and that would be true. This brings me to the second half of "Essential Linux Device Drivers", where specific device types are discussed.
But the title of the book leads the reader to expect that they could produce a Linux device driver using this book. Like other reviews have stated, this first half of this book is a concise, useful introduction to certain Linux kernel concepts.
It discusses implementation in detail, which this book does not. That turns out not to be the case - no one could produce a driver with this book without the benefit of other reference material.
In short, while the O'Reilly "Linux Device Drivers" text has it's shortcomings and is starting to become dated, it is still the only text with which the reader can use as a primary reference to create their own driver. 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.
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.
|