Your rating(Clear)Rate this item


There was a problem filtering reviews right now. Please try again later.

33 of 39 people found the following review helpful
on January 28, 2009
Like other reviews have stated, this first half of this book is a concise, useful introduction to certain Linux kernel concepts. But the title of the book leads the reader to expect that they could produce a Linux device driver using this book. 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. It discusses implementation in detail, which this book does not.

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.
0CommentWas this review helpful to you?YesNoSending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
9 of 9 people found the following review helpful
on April 28, 2012
Anyone who is looking to purchase this book is either taking a class in driver development or is new to driver development and is looking for guidance. This book is a great attempt at an all in one driver development book, however; falls flat due to errors in the text and code samples. Sadly it is obvious there was very little error checking or testing of code samples in the book. Someone who is new to such a complex subject should be able to rely on accurate code example and explanations without having to constantly be on the lookout for errors. Some of the errors found are expected of new CS students and not seasoned professionals ( eg. Performing kmalloc() without calling kfree() ) or (allocating memory to a single variable in a for loop eg. var_ptr = kmalloc() both of which exist in Example 5.1 of the book ). The author also fails to explain kernel function's arguments and only mentioned the kernel functions themselves. This makes it difficult to know what/why arguments are being passed.

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.
11 commentWas this review helpful to you?YesNoSending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
31 of 38 people found the following review helpful
on February 10, 2009
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. 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. To understand what the author is doing, you would have to resort to searching alternate references. Also his examples don't work. 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.
0CommentWas this review helpful to you?YesNoSending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
20 of 25 people found the following review helpful
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.
0CommentWas this review helpful to you?YesNoSending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
5 of 6 people found the following review helpful
on November 6, 2011
It is not an easy task to discuss big system. Maybe this is the reason that not many good linux driver books available and comparison among books mainly focus on this book and "Linux Device Drivers".

In my opinion, to discuss big system the rule of thumb is to get the big picture. That is the strength of this book. The first 4 Chapters give very concise big picture of how kernel works and what we can utilize kernel resource. Also, the author often walk us through some of linux codes. Author carefully chooses the clip of source-code so that we can understand the big picture better.

"Linux Device Drivers" takes a different style. It brings out some concepts as they developed different or more complicated drivers. A lot of details interleave into the discussion. Personally, I didn't like this style. It seems that I need to read at least half of the book to understand the big picture and the critical points that authors try to convey.

Critics about this book is usually about the too simple examples and too brief about some details. For former one, I think it is better to study simple one driver code. Example from "Linux Device Drivers" is usually too complicated for me. For the later one, I believe author usually point out some source code to read.

For readers, I suggest to stay at this book. If the new version of "Linux Device Drivers" comes out, you may also need one.
0CommentWas this review helpful to you?YesNoSending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
5 of 6 people found the following review helpful
on January 6, 2011
Obviously, some people have been disappointed by this book. It has to be remembered that it is not called "OS Theory", "How to Write a Device Driver" or "Introduction to the Linux Kernel". It explains what a software engineer needs to know i.e. how to get a new pieces of working hardware up and running on a working system (plus the debugging tools for when it does not work out).

I'd worked on embedded Linux drivers for a while, and purchased this for its well proportioned and systematic coverage of the plethora of devices out there. I'd recommend it to application programmers moving into this field for its clarity, and to experienced engineers in this field for its completeness. Oh, and the author has a pleasant and entertaining style! (so good I bought it twice - HB and 6 months later for my Kindle).
0CommentWas this review helpful to you?YesNoSending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
3 of 3 people found the following review helpful
on September 4, 2009
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.
0CommentWas this review helpful to you?YesNoSending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
6 of 8 people found the following review helpful
on December 30, 2008
This book is intended to teach an intermediate level programmer who is already proficient in the "C" language to write device drivers for the Linux operating system. The book covers Linux kernel 2.6-23/24 versions which just happens to be the version I was using with my Ubuntu 8.04 laptop at the time of my review.

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
library.
0CommentWas this review helpful to you?YesNoSending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
8 of 11 people found the following review helpful
on July 13, 2008
Without a doubt, this is the best driver book I've ever purchased. In the first few chapters the author walks you through boot, interrupts, builds, installs etc so that you can make the most of his outstanding knowledge of drivers and driver design which fills 3/4 of the book. Even if you don't want to design or build your own driver, the first few chapters alone are worth the cost of the book and the knowledge he imparts about drivers is priceless. If you are a Linux Kernel analyst, you can do no better than purchase this. And as to his writing style.. I've read plenty of dry, boring Linux technical books but this one even has a most outstanding writing style. It was enjoyable to read. I cannot praise this book enough. If you're a newbie Linux Kernel Techie or someone who thinks they already know everything... you cannot go wrong. Buy it, read it and you will learn more about drivers than from any other book, and you'll learn a whole lot more besides.
0CommentWas this review helpful to you?YesNoSending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
1 of 1 people found the following review helpful
on November 24, 2010
This is a good reference book. I'm a sr. software engineer with over 20 years experience and working with Linux the last 10 years or so. The reason I like this book over the other books is that it references code and tells you were in the source tree to find it. VERY helpful.

And so far, it's gone over everything I'm looking for in pretty darn good details. At least enough to get me going...

For example, misc drivers. Not many books devote this many pages to a misc driver, yet anyone doing true embedded software at one point or another MUST write a misc driver.
0CommentWas this review helpful to you?YesNoSending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse

Send us feedback

How can we make Amazon Customer Reviews better for you?
Let us know here.