Linux Device Drivers, 3rd Edition

  Author:    Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
  ISBN:    0596005903
  Sales Rank:    88307
  Published:    2005-02-08
  Publisher:    O'Reilly
  # Pages:    640
  Binding:    Paperback
  Avg. Rating:    4.0 based on 45 reviews
  Used Offers:    18 from $21.50
  Amazon Price:    $26.37
  (Data above last updated:  2008-10-07 05:34:22 EST)
  
  
Sort customer reviews by:
  
Show All Reviews on Page      Hide All Reviews on Page
   
  
Linux Device Drivers, 3rd Edition
  
Device drivers literally drive everything you're interested in--disks, monitors, keyboards, modems--everything outside the computer chip and memory. And writing device drivers is one of the few areas of programming for the Linux operating system that calls for unique, Linux-specific knowledge. For years now, programmers have relied on the classic Linux Device Drivers from O'Reilly to master this critical subject. Now in its third edition, this bestselling guide provides all the information you'll need to write drivers for a wide range of devices. Over the years the book has helped countless programmers learn:
  • how to support computer peripherals under the Linux operating system
  • how to develop and write software for new hardware under Linux
  • the basics of Linux operation even if they are not expecting to write a driver
The new edition of Linux Device Drivers is better than ever. The book covers all the significant changes to Version 2.6 of the Linux kernel, which simplifies many activities, and contains subtle new features that can make a driver both more efficient and more flexible. Readers will find new chapters on important types of drivers not covered previously, such as consoles, USB drivers, and more. Best of all, you don't have to be a kernel hacker to understand and enjoy this book. All you need is an understanding of the C programming language and some background in Unix system calls. And for maximum ease-of-use, the book uses full-featured examples that you can compile and run without special hardware. Today Linux holds fast as the most rapidly growing segment of the computer market and continues to win over enthusiastic adherents in many application areas. With this increasing support, Linux is now absolutely mainstream, and viewed as a solid platform for embedded systems. If you're writing device drivers, you'll want this book. In fact, you'll wonder how drivers are ever written without it.
Updated to cover version 2.4.x of the Linux kernel, the second edition of Linux Device Drivers remains the best general-purpose, paper-bound guide for programmers wishing to make hardware devices work under the world's most popular open-source operating system. The authors take care to show how to write drivers that are portable--that is, that compile and run under all popular Linux platforms. That, along with the fact that they're careful to explain and illustrate concepts, makes this book very well suited to any programmer familiar with C but not with the hardware-software interface. It's worth noting that the emphasis in the title is on "device drivers" as much as "Linux." This book will make sense to you if you've never written a driver for any platform before. It helps if you have some Linux or Unix background, but even that is secondary as a prerequisite to C skill.

For a programming text--and one concerned with low-level instructions and data structures, at that--this book is remarkably rich in prose. You'll typically want to read this book straight through, more or less skipping the code samples, before sketching out your plan for the driver you need to write. Then, go back and pay closer attention to the sections on specific details you need to implement, like custom task queues. For coding-time details about specific system calls and programming techniques, count on the index to point you to the right passages. --David Wall

Topics covered: Techniques for writing hardware device drivers that run under Linux kernels 2.0.x through 2.2.x. Sections show how to manage memory, time, interrupts, ports, and other details of the hardware-software interface.

                  Reader Reviews 1 - 24 of 24                 
  
  
Review
Date
Review
Rating(5 High)
Review
Helpful
to:
Customer Review Reviewer
Info
Permanent
Link
Reader Reviews Below Sorted by Newest First
09-18-08 5 (NA)
(Hide Review...)  Best book for device drivers programming
Reviewer Permalink
This book covers in a excelent way all the process for creating device drivers. Its very good for who wants to start to programming and for who already knows how to programming.
(Review Data Last Updated: 2008-10-04 04:33:57 EST)
07-17-08 5 (NA)
(Hide Review...)  Device Drivers
Reviewer Permalink
This books must be the top priority for ever developer who wants to develop emebedded systems, based on Linux OS.
(Review Data Last Updated: 2008-09-18 18:30:11 EST)
02-16-08 5 0\1
(Hide Review...)  I Can do this.
Reviewer Permalink
As a newbie it makes driver writing not so scary.
Technical masterpiece yet not over my head.
(Review Data Last Updated: 2008-07-17 16:01:49 EST)
01-25-07 5 1\2
(Hide Review...)  Best Linux 2.4 Device Driver Book
Reviewer Permalink
Used this to write my first linux driver on my own with no help. Great book, great layout, very well written. I have not read all of the 3rd Edition, since I am now working on Solaris, and did not work on the 2.6 kernel, but would assume thats good as well.
(Review Data Last Updated: 2007-04-12 12:24:21 EST)
01-24-07 5 1\2
(Hide Review...)  Best Linux 2.4 Device Driver Book
Reviewer Permalink
Used this to write my first linux driver on my own with no help. Great book, great layout, very well written. I have not read all of the 3rd Edition, since I am now working on Solaris, and did not work on the 2.6 kernel, but would assume thats good as well.
(Review Data Last Updated: 2007-04-11 11:25:08 EST)
01-22-07 5 1\6
(Hide Review...)  ITA - La programmazione di moduli del kernel spiegata dettagliatamente
Reviewer Permalink
Un must per chi si avvicina alla programmazione di moduli del kernel, per chi e' esperto ma ha bisogno di un reference e per chi ne vuole sapere di piu'.

Il libro ha un'alta valenza didattica ed e' scritto in un linguaggio comprensibile e corretto. Gli esempi sono abbondanti e coprono bene gli argomenti trattati.
(Review Data Last Updated: 2007-07-10 21:10:59 EST)
12-07-06 5 3\3
(Hide Review...)  Good overview of linux device driver programming concepts
Reviewer Permalink
This book takes a hypothetical device driver and explains the concepts nicely. It provides various fundamentals one needs to know before writing linux device drivers, and valuable information like concurrent and race conditions, and gives ideas for debugging problems in real drivers. It is worth read and I liked it. I had already some experience in kernel programming before reading this book, and it filled holes in my kernel knowledge. This book is also available online[...] and you may check yourself before buying this.

The objections made by other reviewers fall into the following two classes. Once you are a experienced hacker, all you need is kernel sources (books are for fundamentals only and become obsolete as new kernel constructs are added). If you are looking for cut and paste template code to add new driver for another device, again use kernel source of an existing driver.
(Review Data Last Updated: 2007-06-26 16:07:14 EST)
12-06-06 5 1\1
(Hide Review...)  Good overview of linux device driver programming concepts
Reviewer Permalink
This book takes a hypothetical device driver and explains the concepts nicely. It provides various fundamentals one needs to know before writing linux device drivers, and valuable information like concurrent and race conditions, and gives ideas for debugging problems in real drivers. It is worth read and I liked it. I had already some experience in kernel programming before reading this book, and it filled holes in my kernel knowledge. This book is also available online[...] and you may check yourself before buying this.

The objections made by other reviewers fall into the following two classes. Once you are a experienced hacker, all you need is kernel sources (books are for fundamentals only and become obsolete as new kernel constructs are added). If you are looking for cut and paste template code to add new driver for another device, again use kernel source of an existing driver.
(Review Data Last Updated: 2007-01-22 12:44:16 EST)
10-13-06 4 4\4
(Hide Review...)  Good reference on Linux subsystems, not a book for starters
Reviewer Permalink
This book is not for Linux (kernel) newbies but for those who already know their way around the kernel and seek detailed info on certain parts of it. This book has some good overviews on different subsystems of the Linux kernel. Some sections, like USB, have been expanded since the second edition of this book. I would have liked to see a section on the new 2.6 scheduler.

If you want to start off with Linux kernel programming, I would recommend Linux Kernel Development by Robert Love. These books, together with articles on the web, should certainly help anyone interested.
(Review Data Last Updated: 2007-06-26 16:07:14 EST)
10-12-06 4 (NA)
(Hide Review...)  Good reference on Linux subsystems, not a book for starters
Reviewer Permalink
This book is not for Linux (kernel) newbies but for those who already know their way around the kernel and seek detailed info on certain parts of it. This book has some good overviews on different subsystems of the Linux kernel. Some sections, like USB, have been expanded since the second edition of this book. I would have liked to see a section on the new 2.6 scheduler.

If you want to start off with Linux kernel programming, I would recommend Linux Kernel Development by Robert Love. These books, together with articles on the web, should certainly help anyone interested.
(Review Data Last Updated: 2006-12-07 10:00:04 EST)
08-02-06 1 2\2
(Hide Review...)  Not useful for a normal coder looking to learn Unix drivers.
Reviewer Permalink
If you are trying to learn how to write Linux Device drivers from scratch, this is probably not the book for you. I believe I am somewhat C/C++ savvy, and I expect sample code that is less than 10 lines of code to compile correctly.
The sample code did not compile, and although the book has a lot of tidbits of good information, overall it is not very useful for a developer.
(Review Data Last Updated: 2007-07-10 21:10:59 EST)
08-01-06 1 (NA)
(Hide Review...)  Not useful for a normal coder looking to learn Unix drivers.
Reviewer Permalink
If you are trying to learn how to write Linux Device drivers from scratch, this is probably not the book for you. I believe I am somewhat C/C++ savvy, and I expect sample code that is less than 10 lines of code to compile correctly.
The sample code did not compile, and although the book has a lot of tidbits of good information, overall it is not very useful for a developer.
(Review Data Last Updated: 2006-10-12 11:33:48 EST)
06-25-06 1 8\10
(Hide Review...)  Don't even read the free online version
Reviewer Permalink
This book was so badly written that I just couldn't help writing my first review on Amazon. I NEVER bothered writting reviews.

While I fully respect the authors' decision in providing the book online under the Creative Commons license, and while I do not doubt the sincerity of their intentions, the book is a total f*ck up. And f*ck up is an understatement.

The book:
1) Is unorganized :-

I felt I was being bombarded by information from all directions. One moment I was getting ready to test a simple "hello world" module, and the other I'm suddenly faced with a some strange esoteric block diagram showing "how function calls and function pointers are used in a module to add new functionality to a running kernel." with strange function names that were not mentioned and do not get mentioned for the rest of the chapter. How the hell did I get here? It just pisses you off and breaks your thought process and leaves you clueless and frustrated.

2) Is upside-down:-

I read chapter 3 (Char drivers) and I compare it to real device drivers and some things just don't match. The book seems very theoretical because the "real" device drivers call some other functions that are not mentioned at all. After digging in the kernel source files and googling the internet I realize that in the "real world" there is a whole driver-model and generic objects and what not. Reading the source code documentation and some online material I actually understand how the "real" drivers work. I still don't understand the stuff in the book. I start wondering whether there is any mention of the driver-model and I find it in chapter 14 !!!!!!! The driver model seems, in my opinion, the first step to understanding how "real" drivers work and I find it after 14 chapters of utter nonsensce!! Not only that, the authors decide that "many driver authors can ignore the device model entirely" and "The complexity of the device model makes it hard to understand by starting with a high-level view"... surpisingly it was easier to understand from online sources and the source code documentation than trying to read chapter 2 in the book!

3) Is sadistic:-

One thing I really hated was the carrot-and-stick approach the authors chose. First they give you a small tiny taste of a topic which finally seems relevant and just when you feel you're about to reach somewhere, they do a complete u-turn and throw all kinds of irrelevant off-the-topic rubish that leaves you sorry you were so shamefull as to expect any better. You end up confused, annoyed, and duped. Like in chapter 2 when they presented the code for the "hello world" module. OK fine. Seems easy enough. You naturally assume that this is an invitation to write the same code yourself. HAHA WROONG! The book suddenly does a "make hello.c" without showing you the content of the makefile. It leaves you out to dry with your uncompilable-"hello.c" and goes on describing IN DETAIL seemingly random stuff. You are left wondering whether the makefile must have been something too obvious to bother noting down and you start wondering whether to try to create a simple makefile or continue reading the chapter "as-is". I chose the former. HAHAHA WROONG AGAAIIN! I ended up compiling my whole kernel source tree because of something they decide to mention only 7 sections later.(At least they mentioned it?!)

In summary.. I'd suggest you buy the book.. and (as "./Documentation/ManagementStyle" for another book says): "NOT read it. Burn it, it's a great symbolic gesture".

I don't think anyone could have done a better job at making a worse technical book. If you come across any online material that "recommends" this book, *QUICKLY* discard that material too .. without thinking.

This is a -5 stars book. It has affected me personally.
(Review Data Last Updated: 2007-07-10 21:10:59 EST)
03-10-05 4 9\19
(Hide Review...)  Specialised skills
Reviewer Permalink
[A review of the 3RD EDITION, 2005.]

Device drivers will always be a small speciality in any operating system. Linux is no exception. While it grows strongly, most programmers using it simply can ignore issues of hooking up to various hardware items. Someone has already worked those out. Well, here you are that someone and this book addresses many of your needs.

The coding is in C. No fancy object oriented stuff for you. Many higher level OO programmers are simply unaware of the extra overhead it takes. But you need to maximise performance, so it is C for you. Plus, to understand much of the book, it really helps to have written some assembly code, because it makes it easier to understand many low level operations discussed.

Prior acquaintance with the overall design of a linux memory manager and interrupt handlers is also good. The book explains well individual issues as they arise. But having a clear, top-down understanding of the linux kernel may give you more context to understand the chapters.
(Review Data Last Updated: 2006-07-07 09:59:47 EST)
02-20-05 4 10\10
(Hide Review...)  great book for the right person
Reviewer Permalink
I used this book to write a device driver for my computer engineering senior project. It was very helpfull, but could improve. 2nd edition covers almost everything you'll need for 2.4 kernel drivers. Organization is like a text book that includes reference material, but attempts to be a tutorial. Hopefully the 3rd edition will be better organized. I noticed lots of negative reviews on Amazon, but after reading some chapters on safari (the oreilly free book site) I decided to purchase it any ways. If you buy this book and don't have a solid background in operating systems, computer architecture, and microprocessor interfacing you probably won't have an easy time understanding several key topics well enough to write a working driver. This will probably make you mad enough to write another bad review.
(Review Data Last Updated: 2006-07-07 09:59:47 EST)
02-20-05 4 8\8
(Hide Review...)  great book for the right person
Reviewer Permalink
I used this book to write a device driver for my computer engineering senior project and found it to be very helpfull, but it could have been better. Almost everything you'll need to know for 2.4 kernel drivers is in the 2nd edditon. The organization of the book is more like a text book crossed with a reference book, but parts of the book attempt to be a tutorial. Maybe the 3rd edition will be better organized. I noticed lots of negative reviews on Amazon, but after reading some chapters on safari, the oreilly free book site, I decided to purchase it. If you buy this book and don't have a solid background in operating systems, computer architecture, and microprocessor interfacing you probably won't have an easy time understanding several key topics well enough to successfully write a working driver. Which will probably lead to you being mad and writing a bad review.
(Review Data Last Updated: 2005-08-12 03:15:22 EST)
02-27-04 1 13\27
(Hide Review...)  Very disorganized presentation
Reviewer Permalink
I can't understand the 5-star reviews of this book. I wonder if anyone who gave the book 5 stars ever tried to sit down and actually write a device driver. I doubt it.

The book suffers from two main problems:

1. Presentation is disorganized. The book reads as if the authors sat down and planned out what chapters to cover. That part is good. It does NOT seem like they planned further than that. The text within each chapter seems haphazard. Disorganized. Thrown together. The authors have no concept of when to start a new paragraph, so topics are strung together piecemeal. The whole book is confusing, making the reading of this book very frustrating.

2. The material is presented at a frenetic pace. As I was reading the book, it felt like there was a conveyor belt feeding me information, getting faster and faster without a break. The authors feel like they can throw everything but the kitchen sink at you in a very short time. Information, minute details, big ideas, analogies, and code get thrown at you fast and furious. It starts at chapter one and just gets worse from there, making the reading of this book downright difficult.

Difficult and confusing. A good characterization of the book.

In summary, this book is NOT a tutorial. It is NOT a guide. Don't make the mistake of buying this book expecting a gentle (or even a not-so-gentle) introduction to writing device drivers.

IMHO, the market is still open for a good book on the subject of writing device drivers for Linux.

(Review Data Last Updated: 2006-07-07 09:59:48 EST)
09-14-03 5 8\12
(Hide Review...)  Execellent device-driver reference
Reviewer Permalink
This book's #1 audience is the Unix device-driver writer who wants to understand how Linux's kernel, interfaces, and data structures work. #2 comes the journeyman software engineer who wants to look "below" the application layer, toward creating more efficient programs.

There are clear, *working* examples throughout the book. Each chapter builds on the previous one. Complex issues come late in the book, after the reader has had time to build a framework for understanding.

(Review Data Last Updated: 2006-07-07 09:59:48 EST)
03-25-03 5 0\14
(Hide Review...)  They're Rubini-mad, them kids
Reviewer Permalink
Few who have read previous Rubini guides will be in too much doubt as to the merit of this one. I hadn't understood that the book actually dealt with software systems and hardware before I bought it, but I think it's a little bit harsh to critique the book on this basis, and am happy to give it the full five stars. I know all I need to know about Linux and devices now. Meanwhile, if anyone knows where to buy an automated Lino-cutter, I'd be grateful for your thoughts.
(Review Data Last Updated: 2006-07-07 09:59:48 EST)
11-27-02 3 17\35
(Hide Review...)  Reference material, ok; but a tutor it's not -
Reviewer Permalink
I picked up this book about the beginning of my linux programming experience. It was all pretty, and the suggested material inside also led me further down learning lane. But, the book itself was not very helpful to me. I had no idea where to start, and the only tutorial in chap. 2 was ok, but had no use to anyone who wants more than "hello world". It wouldn't work without forcing insmod, then the kernel complained. Learning the Microsoft WDM was easier than this book made things... B-sides, we can all do the same things in C. All in All, i was frustrated with this book.

It's free at [web address] if anyone felt like an online reference to linux drivers.

Bottom Line: As others stated above; not for the beginning linux driver writer. I await the fruits of: "Writing Linux Device Drivers; Takanari Hayama" Due in mid-December. Hold out for it, maybe that'll b more in depth. I'll tell u either way -

(Review Data Last Updated: 2006-07-07 09:59:48 EST)
09-10-02 1 52\63
(Hide Review...)  OK reference. Bad tutorial ...
Reviewer Permalink
Before starting let me assure you that I had written SCSI drivers for SVR4 and 4.2. I had also done some proprietary drivers for *BSDs earlier during undergrad/grad years.

After reading all the reviews and all the ravings about this book, I made the mistake of spending my money on it! Alas! What a waste. Its like one gigantic piece of mish-mash-mess. All the information might be in there (who knows). But, finding out the correct info is almost impossible! The scull driver is a joke.

Another irritating thing about the book is that it attempts to throw all sorts of info at you, all at the same time! Guys, take a break. Present information, one at a time, and only when needed.

Essentially, I was trying to write a driver to read information off my Nikon F100 onto my TP600 running Mandrake 8.0. And life was miserable till I finally started digging through some other driver code that you get with the kernel sources. Gosh, that made life so simple.

But, when I first read this book, I was almost ready to give up writing Linux drivers. I didn't know where to start and where I would end up! I was lost, confused, and felt utterly hopeless.

Also, I wondered if the other guys who had raved about this book were:
1. the authors and their friends?
2. guys who had no clue what they were talking/writing about?
3. guys who were happy to see that there was a book on Linux drivers, but neither bought nor read it!

So, don't trust these reviews. This is one heck of a horrible book that you should most definitely stay away from. Cause if you read, you would never be able to write any useful drivers.

Read the source.

(Review Data Last Updated: 2006-07-07 09:59:48 EST)
08-06-02 5 1\7
(Hide Review...)  Excellent Drivers Book
Reviewer Permalink
This was an incredibly useful and finely written book. I found the structure and progression of the material to be extremely good and well thought out. It has proved itself invaluable to me.
(Review Data Last Updated: 2006-07-07 09:59:48 EST)
01-26-02 5 0\9
(Hide Review...)  excellent book
Reviewer Permalink
the book is very good... takes from basics to internal kernel stuff
(Review Data Last Updated: 2006-07-07 09:59:48 EST)
01-07-02 4 7\8
(Hide Review...)  Good general, if rather intel specific, guide
Reviewer Permalink
This is a good book - and I joined the Linux kernel immortals by writing a driver for a previously unsupported device based on it. But it does have a few flaws.
Firstly, it is pretty much Intel (ix86) specific - other processors are mentioned in passing.
Secondly it doesn't deal with the real world of Linux devices (ie where the manufacturer has told you little or nothing).
And thirdly, it never quite goes far enough in exploring the difficult issues - I thought this was the case with IRQ handling especially.
But, all in all, the best on offer and well worth buying.
(Review Data Last Updated: 2006-06-24 15:11:14 EST)
  
                  Reader Reviews 1 - 24 of 24                 
  
  
  
  
  
  

Because the data used to generate this site come from outside sources, VeryWellSaid.com cannot guarantee the completeness or accuracy of the data.
Search VeryWellSaid™
Google
Web VeryWellSaid™
New subjects are added every week.
View Subjects Below by:
* Top Selling
 (click category name, left)
* Top-Rated Top Sellers
 (click 'Top Rated', right)
In the news...  
Dubai\UAE Top Rated
Influenza\Bird Flu Top Rated
Iraq Top Rated
Supreme Court Top Rated
All Books Top Rated
Arts Top Rated
Photography Top Rated
Digital Photography Top Rated
Digital Cameras Top Rated
Biography Top Rated
Business Top Rated
Management Top Rated
Marketing Top Rated
Sales Top Rated
Stocks Top Rated
Bonds Top Rated
Real Estate Top Rated
Trading Top Rated
Commodities Trading Top Rated
Time Management Top Rated
Starting A Business Top Rated
Children's Top Rated
Comics Top Rated
Computers Top Rated
PC Top Rated
Mac Top Rated
Programming Top Rated
Design Patterns Top Rated
.Net Top Rated
C# Top Rated
Vb.Net Top Rated
Asp.Net Top Rated
Java Top Rated
Python Top Rated
PHP Top Rated
Perl Top Rated
Javascript Top Rated
Ajax Top Rated
CSS Top Rated
Open Source Top Rated
SQL Top Rated
Databases Top Rated
Oracle Top Rated
MySql Top Rated
Sql Server Top Rated
IIS Top Rated
Apache Top Rated
Linux Top Rated
Windows Server Top Rated
Project Management Top Rated
HTML Top Rated
UML Top Rated
IT Certifications Top Rated
Cisco Certifications Top Rated
MCSE Top Rated
MCSD Top Rated
Cooking Top Rated
Italian Cooking Top Rated
Vegetarian Cooking Top Rated
Wine Top Rated
Engineering Top Rated
Entertainment Top Rated
Health Top Rated
Nutrition Top Rated
Dieting Top Rated
Sex Top Rated
History Top Rated
Military History Top Rated
British History Top Rated
Middle East History Top Rated
Land Battles Top Rated
Naval Warfare Top Rated
Air Warfare Top Rated
9/11 Top Rated
Terrorism Top Rated
Home Top Rated
Mortgage\Home Equity Loan Top Rated
Cars Top Rated
Car Buying Top Rated
Sports Cars Top Rated
Cat Top Rated
Humor Top Rated
Horror Top Rated
Law Top Rated
IP Law Top Rated
Legal History Top Rated
Fiction Top Rated
Oprah's Book Club Top Rated
Medicine Top Rated
Cancer Top Rated
Stroke Top Rated
Heart Disease Top Rated
Fertility Top Rated
Diabetes Top Rated
Pharmacology Top Rated
Back Problems Top Rated
Menopause Top Rated
Thyroid Top Rated
Pain Top Rated
Organic Chemistry Top Rated
Immune System Top Rated
Mystery Top Rated
Nonfiction Top Rated
Outdoors Top Rated
Running Top Rated
Radio Control Models Top Rated
Guns Top Rated
Parenting Top Rated
Divorce Top Rated
Professional Top Rated
Reference Top Rated
Religion Top Rated
Romance Top Rated
Science Top Rated
Physics Top Rated
Chemistry Top Rated
Astronomy Top Rated
Psychology Top Rated
Science Fiction Top Rated
Sports Top Rated
Teens Top Rated
Travel Top Rated
USA Top Rated
Europe Top Rated
France Top Rated
Italy Top Rated
England Top Rated
China Top Rated
All Books Arts Biography Click Here For An A-Z Index Of All 213 Best-Seller Subjects Business Children's Comics
Computers Cooking Engineering Entertainment Health History Home Horror Humor Law Fiction Medicine Mystery
Nonfiction Outdoors Parenting Professional Reference Religion Romance Science Sci-Fi Sports Teens Travel
In Association with Amazon.com

Cache miss
(not cached)