Linux Device Drivers, Third Edition
Book Reviewed by
Carl J. Nobile
December 1, 2007
My original intent was to write a chapter by chapter review of this book however, I ran into some major obstacles in doing so. As with most books code examples this book requires that you at least understand the code in order to understand the presented material. It is always best to actually see the code run.
When I first started reading this book I set up a Ubuntu Feisty 7.04 system using kernel 2.6.20 to compile and run the code presented in this book. Right off nothing compiled, so after some time searching the net I found at a Florida State University site some partially fixed and compilable code. The two professors that fixed this code are Ted Baker and Andy Wang. Their URL is: http://www.cs.fsu.edu/~baker/devices/. In an email correspondence Ted Baker told me he only did the minimal work to the code just enough to get it to compile meaning some drivers still did not work.
After finding this updated code I thought I had the tools I needed to get to work on understand the book and writing the original version of this review. During this process I installed a Ubuntu Gutsy 7.10 system using kernel 2.6.22 on a different and faster machine. Well to make a long story short the code I got from the nice professors at Florida State University ceased to compile on this kernel.
I suppose the moral of this story is that kernel code is in constant flux which I guess I had already known, but did not know to what extent it is in flux. This is after all the nature of software as my15 years as a developer has taught me. It would be nice however, if the authors of this book could keep their own code up to date. I am guessing here but between kernel 2.6.10, the version used by the authors, to the version I mentioned above I doubt that the driver architecture in the kernel has changed all that much. Most of the issues with compilation I tracked down myself have been constants and structures being moved between headers. As the authors are the most familiar with the code it is only logical that they keep this code in a compiled state.
In summery I would venture to say that a large percentage of the information in this book is still valid to the current kernels, but the newbie to driver and kernel development will not be able to fix this code easily. So my recommendation is that if you are already familiar with driver development and need a good reference book this is the book for you. If on-the-other-hand you are, like me, new to driver development and have some cycles to burn you might, in the mean time, want to pick up a language like Python or Ruby while waiting for the example code to get updated.
|