Regular readers here know that I have been very disappointed with
most Linux kernel and device driver books. I did like The Linux Kernel Primer, but until
this "Essential Linux Device Drivers" book landed on my desk, that
was about it.
I admit that it's very hard to write a good book in this area. You
simply have to make assumptions about the readers knowledge - if you don't,
you'll be writing an encyclopedia or two. However, I still think
that my complaints have been justified, and this author proves that
you CAN write a readable, information packed book about Linux device
drivers without glossing over vast areas.
Well, that's not entirely true: vast areas are still passed by
at break-neck speed, but there's a difference here: every chapter
tries to give a high level overview of the area to be discussed,
which is then followed by very well explained examples of code, and
finally finishes up with pointers to the parts of Linux source code
that are relevant. That's a formula that works, and the author also
often includes pointers to other relevant resources too. With a little
Googling, you should be able to really get a lot out of this book.
As you'd expect, this starts out with an overview of the kernel itself, and
it's probably the best I've ever seen. Individual Linux boot messages are
pulled out, explained, and the the source code that produced them is examined.
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. The next few chapters cover more
basic concepts like kernel locks and threads, and then the rest of the
book is all device drivers.. starting simply and progressing to
more complicated hardware, but always following the format of first giving an overview of the how and why, then presenting sample driver(s), a bit on how to most easily debug, and finally pointers to real kernel sources.
Very well done, and I recommend it. It is a bit expensive, but I think
it's worth it.