3

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?

Alex Stragies
  • 5,857
  • 2
  • 32
  • 56
embedded_crysis
  • 307
  • 2
  • 6
  • Whilst it is FreeBSD, this one is recent and quite good https://www.amazon.co.uk/Design-Implementation-FreeBSD-Operating-System/dp/0321968972/ref=sr_1_1 – Rui F Ribeiro Dec 06 '16 at 21:19

1 Answers1

0

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.

Alex Stragies
  • 5,857
  • 2
  • 32
  • 56
  • 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 06 '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 06 '16 at 21:47