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.
_______________________________________________
gnhlug-discuss mailing list
gnhlug-discuss@mail.gnhlug.org
http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/

Reply via email to