This is probably a silly-sounding question, but one that I think there exists an objectively right answer to which makes me compelled to ask it.

I am trying to understand the fundamentals of linux systems and especially how device drivers work so I went on the hunt for a good book on the subject. Essential Linux Device Drivers has gotten very good reviews so I decided to buy it, without really noticing that it was released in 2008 and contains tons of examples referring to kernel version 2.6.3! This made me wonder if I should get a newer book.

Just from browsing Amazon, there hardly seem to exists any newer books on the subject - not even newer editions. I wonder if there is a good explanation for this? I know that Linux used to have a reputation for being a nightmare when it came to interacting with external hardware, but at some point this problem was solved. Does this have any connection to the scarcity of recent literature on linux device driver programming?

closed as off-topic by Rui F Ribeiro, techraf, HalosGhost, sam, G-Man Dec 7 '16 at 0:06

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Requests for learning materials (tutorials, how-tos etc.) are off topic. The only exception is questions about where to find official documentation (e.g. POSIX specifications). See the Help Center and our Community Meta for more information." – Rui F Ribeiro, HalosGhost, sam
If this question can be reworded to fit the rules in the help center, please edit the question.


The documentation available on-line has just gotten that good in the meantime.

In all seriousness, I think that people interested in (general) kernel driver programming can easily find enough documentation on the web to get them so far started, that they can then start completing their knowledge by reading the existing kernel source themselves.

The topic of kernel module programming is also a moving target, albeit slowly. Still hard to keep up with for a book author. And they will have to compete with "wikibooks" and "crowd-authoring". I think, that translates easily to "less or no" new books.

If you want to get started, I'm pretty sure, for most types of hardware anyone can build, you can find an existing driver that you can base yourself on, or that can serve as an "easy" template.

  • So the answer is actually the opposite of my original theory! I'm sure I could hack around a bit with an existing driver, but I'm more curious about raw fundamentals - how does a high-rate character device get synchronized, how does the kernel know when to classify a peripheral as blocking, etc. A book seemed more rigorous. But of course, I'd be extremely grateful for a pointer to a comprehensive online resource. – embedded_crysis Dec 6 '16 at 21:33
  • I usually start research into a new topic with a google search with lots of "basic" keywords, e.g. "linux kernel 4. synchronise character device clock high speed driver code", use the first 3-5 links to read up on some terminology. maybe restrict to results to last 12 months, and search for increasingly specialized combinations of terms. By this point I have about 10 new tabs open, that I then start to dig through in some manner. (And sometimes I post a question @SE) – Alex Stragies Dec 6 '16 at 21:47

Not the answer you're looking for? Browse other questions tagged or ask your own question.