Review of "Essential Linux Device Drivers" ISBN-13: 978-0-13-239655-4, ,Sreekrishnan Venkateswaran, published Prentice Hall
Alex Hewitt
hewitt_tech at comcast.net
Tue Dec 30 10:23:31 EST 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 for Digital Equipment
Corporation. 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 acquaintance 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.
More information about the gnhlug-discuss
mailing list