Linux Device Drivers

( 1 )


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 ...

See more details below
Paperback (Third Edition)
$25.91 price
(Save 35%)$39.95 List Price

Pick Up In Store

Reserve and pick up in 60 minutes at your local store

Other sellers (Paperback)
  • All (18) from $10.77   
  • New (9) from $21.29   
  • Used (9) from $10.71   
Linux Device Drivers

Available on NOOK devices and apps  
  • NOOK Devices
  • Samsung Galaxy Tab 4 NOOK 7.0
  • Samsung Galaxy Tab 4 NOOK 10.1
  • NOOK HD Tablet
  • NOOK HD+ Tablet
  • NOOK eReaders
  • NOOK Color
  • NOOK Tablet
  • Tablet/Phone
  • NOOK for Windows 8 Tablet
  • NOOK for iOS
  • NOOK for Android
  • NOOK Kids for iPad
  • PC/Mac
  • NOOK for Windows 8
  • NOOK for PC
  • NOOK for Mac
  • NOOK for Web

Want a NOOK? Explore Now

NOOK Book (eBook)
$17.99 price
(Save 43%)$31.99 List Price


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.
Read More Show Less

Product Details

  • ISBN-13: 9780596005900
  • Publisher: O'Reilly Media, Incorporated
  • Publication date: 2/14/2005
  • Edition description: Third Edition
  • Edition number: 3
  • Pages: 640
  • Sales rank: 631,313
  • Product dimensions: 7.00 (w) x 9.19 (h) x 1.30 (d)

Meet the Author

Jonathan Corbet got his first look at the BSD Unix source back in 1981, when an instructor at the University of Colorado let him "fix" the paging algorithm. He has been digging around inside every system he could get his hands on ever since, working on drivers for VAX, Sun, Ardent, and x86 systems on the way. He got his first Linux system in 1993, and has never looked back. Mr. Corbet is currently the co-founder and executive editor of Linux Weekly News (; he lives in Boulder, Colorado with his wife and two children.

Alessandro installed Linux 0.99.14 soon after getting his degree as electronic engineer. He then received a Ph.D. in computer science at the University of Pavia despite his aversion toward modern technology. He left the University after getting his Ph.D. because he didn't want to write articles. He now works as a free lancer writing device drivers and, um...articles. He used to be a young hacker before his babies were born; he's now an old advocate of Free Software who developed a bias for non-PC computer platforms.

Greg Kroah-Hartman has been writing Linux kernel drivers since 1999, and is currently the maintainer for the USB, PCI, I2C, driver core, and sysfs kernel subsystems. He is also the maintainer of the udev and hotplug userspace programs, as well as being a Gentoo kernel maintainer, ensuring that his email inbox is never empty. He is a contributing editor to Linux Journal Magazine, and works for IBM's Linux Technology Center, doing various Linux kernel related tasks.

Read More Show Less

Table of Contents

Jon's Introduction;
Alessandro's Introduction;
Greg's Introduction;
Audience for This Book;
Organization of the Material;
Background Information;
Online Version and License;
Conventions Used in This Book;
Using Code Examples;
We'd Like to Hear from You;
Safari Enabled;
Chapter 1: An Introduction to Device Drivers;
1.1 The Role of the Device Driver;
1.2 Splitting the Kernel;
1.3 Classes of Devices and Modules;
1.4 Security Issues;
1.5 Version Numbering;
1.6 License Terms;
1.7 Joining the Kernel Development Community;
1.8 Overview of the Book;
Chapter 2: Building and Running Modules;
2.1 Setting Up Your Test System;
2.2 The Hello World Module;
2.3 Kernel Modules Versus Applications;
2.4 Compiling and Loading;
2.5 The Kernel Symbol Table;
2.6 Preliminaries;
2.7 Initialization and Shutdown;
2.8 Module Parameters;
2.9 Doing It in User Space;
2.10 Quick Reference;
Chapter 3: Char Drivers;
3.1 The Design of scull;
3.2 Major and Minor Numbers;
3.3 Some Important Data Structures;
3.4 Char Device Registration;
3.5 open and release;
3.6 scull's Memory Usage;
3.7 read and write;
3.8 Playing with the New Devices;
3.9 Quick Reference;
Chapter 4: Debugging Techniques;
4.1 Debugging Support in the Kernel;
4.2 Debugging by Printing;
4.3 Debugging by Querying;
4.4 Debugging by Watching;
4.5 Debugging System Faults;
4.6 Debuggers and Related Tools;
Chapter 5: Concurrency and Race Conditions;
5.1 Pitfalls in scull;
5.2 Concurrency and Its Management;
5.3 Semaphores and Mutexes;
5.4 Completions;
5.5 Spinlocks;
5.6 Locking Traps;
5.7 Alternatives to Locking;
5.8 Quick Reference;
Chapter 6: Advanced Char Driver Operations;
6.1 ioctl;
6.2 Blocking I/O;
6.3 poll and select;
6.4 Asynchronous Notification;
6.5 Seeking a Device;
6.6 Access Control on a Device File;
6.7 Quick Reference;
Chapter 7: Time, Delays, and Deferred Work;
7.1 Measuring Time Lapses;
7.2 Knowing the Current Time;
7.3 Delaying Execution;
7.4 Kernel Timers;
7.5 Tasklets;
7.6 Workqueues;
7.7 Quick Reference;
Chapter 8: Allocating Memory;
8.1 The Real Story of kmalloc;
8.2 Lookaside Caches;
8.3 get_free_page and Friends;
8.4 vmalloc and Friends;
8.5 Per-CPU Variables;
8.6 Obtaining Large Buffers;
8.7 Quick Reference;
Chapter 9: Communicating with Hardware;
9.1 I/O Ports and I/O Memory;
9.2 Using I/O Ports;
9.3 An I/O Port Example;
9.4 Using I/O Memory;
9.5 Quick Reference;
Chapter 10: Interrupt Handling;
10.1 Preparing the Parallel Port;
10.2 Installing an Interrupt Handler;
10.3 Implementing a Handler;
10.4 Top and Bottom Halves;
10.5 Interrupt Sharing;
10.6 Interrupt-Driven I/O;
10.7 Quick Reference;
Chapter 11: Data Types in the Kernel;
11.1 Use of Standard C Types;
11.2 Assigning an Explicit Size to Data Items;
11.3 Interface-Specific Types;
11.4 Other Portability Issues;
11.5 Linked Lists;
11.6 Quick Reference;
Chapter 12: PCI Drivers;
12.1 The PCI Interface;
12.2 A Look Back: ISA;
12.3 PC/104 and PC/104+;
12.4 Other PC Buses;
12.5 SBus;
12.6 NuBus;
12.7 External Buses;
12.8 Quick Reference;
Chapter 13: USB Drivers;
13.1 USB Device Basics;
13.2 USB and Sysfs;
13.3 USB Urbs;
13.4 Writing a USB Driver;
13.5 USB Transfers Without Urbs;
13.6 Quick Reference;
Chapter 14: The Linux Device Model;
14.1 Kobjects, Ksets, and Subsystems;
14.2 Low-Level Sysfs Operations;
14.3 Hotplug Event Generation;
14.4 Buses, Devices, and Drivers;
14.5 Classes;
14.6 Putting It All Together;
14.7 Hotplug;
14.8 Dealing with Firmware;
14.9 Quick Reference;
Chapter 15: Memory Mapping and DMA;
15.1 Memory Management in Linux;
15.2 The mmap Device Operation;
15.3 Performing Direct I/O;
15.4 Direct Memory Access;
15.5 Quick Reference;
Chapter 16: Block Drivers;
16.1 Registration;
16.2 The Block Device Operations;
16.3 Request Processing;
16.4 Some Other Details;
16.5 Quick Reference;
Chapter 17: Network Drivers;
17.1 How snull Is Designed;
17.2 Connecting to the Kernel;
17.3 The net_device Structure in Detail;
17.4 Opening and Closing;
17.5 Packet Transmission;
17.6 Packet Reception;
17.7 The Interrupt Handler;
17.8 Receive Interrupt Mitigation;
17.9 Changes in Link State;
17.10 The Socket Buffers;
17.11 MAC Address Resolution;
17.12 Custom ioctl Commands;
17.13 Statistical Information;
17.14 Multicast;
17.15 A Few Other Details;
17.16 Quick Reference;
Chapter 18: TTY Drivers;
18.1 A Small TTY Driver;
18.2 tty_driver Function Pointers;
18.3 TTY Line Settings;
18.4 ioctls;
18.5 proc and sysfs Handling of TTY Devices;
18.6 The tty_driver Structure in Detail;
18.7 The tty_operations Structure in Detail;
18.8 The tty_struct Structure in Detail;
18.9 Quick Reference;
Chapter 19: Bibliography;
19.1 Books;
19.2 Web Sites;

Read More Show Less

Customer Reviews

Average Rating 5
( 1 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Terms of Use.
  • - Barnes & reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing all of 3 Customer Reviews
  • Anonymous

    Posted March 10, 2005

    specialised skills

    [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.

    1 out of 1 people found this review helpful.

    Was this review helpful? Yes  No   Report this review
  • Anonymous

    Posted March 10, 2011

    No text was provided for this review.

  • Anonymous

    Posted November 20, 2009

    No text was provided for this review.

Sort by: Showing all of 3 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)