Buying Options
Linux Device Drivers
This product is no longer available.

Please consider the latest edition.

Product Editions

  1. Linux Device Drivers, Third Edition - February 2005
  2. Linux Device Drivers, Second Edition - June 2001 (out of print)
  3. Linux Device Drivers - February 1998 (out of print)
Description
This practical guide is for anyone who wants to support computer peripherals under the Linux operating system or who wants to develop new hardware and run it under Linux. It shows step-by-step how to write a driver for character devices, block devices, and network interfaces, illustrated with examples you can compile and run. Focuses on portability.
Full Description
Table of Contents
  1. Chapter 1 An Introduction to the Linux Kernel

    1. The Role of the Driver Writer

    2. Splitting the Kernel

    3. Classes of Devices and Modules

    4. Security Issues

    5. Version Numbering

    6. License Terms

    7. Overview of the Book

  2. Chapter 2 Building and Running Modules

    1. Modules Versus Applications

    2. Compiling and Loading

    3. The Kernel Symbol Table

    4. Initialization and Shutdown

    5. Using Resources

    6. Automatic and Manual Configuration

    7. Doing It in User Space

    8. Quick Reference

  3. Chapter 3 Char Drivers

    1. The Design of scull

    2. Major and Minor Numbers

    3. File Operations

    4. The file Structure

    5. Open and Release

    6. Scull's Memory Usage

    7. Read and Write

    8. Playing with the New Devices

    9. Quick Reference

  4. Chapter 4 Debugging Techniques

    1. Debugging by Printing

    2. Debugging by Querying

    3. Debugging by Watching

    4. Debugging System Faults

    5. Using a Debugger

  5. Chapter 5 Enhanced Char Driver Operations

    1. ioctl

    2. Blocking I/O

    3. Select

    4. Asynchronous Notification

    5. Seeking a Device

    6. Access Control on a Device File

    7. Quick Reference

  6. Chapter 6 Flow of Time

    1. Time Intervals in the Kernel

    2. Knowing the Current Time

    3. Delaying Execution

    4. Task Queues

    5. Kernel Timers

    6. Quick Reference

  7. Chapter 7 Getting Hold of Memory

    1. The Real Story of kmalloc

    2. get_free_page and Friends

    3. vmalloc and Friends

    4. Playing Dirty

    5. Quick Reference

  8. Chapter 8 Hardware Management

    1. Using I/O Ports

    2. Using the Parallel Port

    3. Accessing Memory on Device Boards

    4. Accessing the Text-Mode Video Buffer

    5. Quick Reference

  9. Chapter 9 Interrupt Handling

    1. Preparing the Parallel Port

    2. Installing an Interrupt Handler

    3. Implementing a Handler

    4. Bottom Halves

    5. Interrupt Sharing

    6. Interrupt-Driven I/O

    7. Race Conditions

    8. Version Dependencies of IRQ Handling

    9. Quick Reference

  10. Chapter 10 Judicious Use of Data Types

    1. Use of Standard C Types

    2. Assigning an Explicit Size to Data Items

    3. Interface-Specific Types

    4. Other Portability Issues

    5. Quick Reference

  11. Chapter 11 Kerneld and Advanced Modularization

    1. Loading Modules on Demand

    2. Version Control in Modules

    3. Persistent Storage Across Unload/Load

    4. Quick Reference

  12. Chapter 12 Loading Block Drivers

    1. Registering the Driver

    2. The Header File blk.h

    3. Handling Requests

    4. How Mounting Works

    5. The ioctl Method

    6. Removable Devices

    7. Partitionable Devices

    8. Interrupt-Driven Block Drivers

    9. Quick Reference

  13. Chapter 13 Mmap and DMA

    1. Memory Management in Linux

    2. The mmap Device Operation

    3. Direct Memory Access

    4. Quick Reference

  14. Chapter 14 Network Drivers

    1. How snull Is Designed

    2. Connecting to the Kernel

    3. The device Structure in Detail

    4. Opening and Closing

    5. Packet Transmission

    6. Packet Reception

    7. Interrupt-Driven Operation

    8. The Socket Buffers

    9. Address Resolution

    10. Load-Time Configuration

    11. Run-Time Configuration

    12. Custom ioctl Commands

    13. Statistical Information

    14. Multicasting

    15. Quick Reference

  15. Chapter 15 Overview of Peripheral Buses

    1. The PCI Interface

    2. A Look Back: ISA

    3. Other PC Buses

    4. Sbus

    5. Quick Reference

  16. Chapter 16 Physical Layout of the Kernel Source

    1. Booting the Kernel

    2. Before Booting

    3. The Init Process

    4. The kernel Directory

    5. The mm Directory

    6. The fs Directory

    7. Networking

    8. IPC and lib Functions

    9. Drivers

    10. Architecture Dependencies

  17. Chapter 17 Recent Developments

    1. Modularization

    2. File Operations

    3. Accessing User Space

    4. Task Queues

    5. Interrupt Management

    6. Bit Operations

    7. Conversion Functions

    8. vremap

    9. Virtual Memory

    10. Handling Kernel-Space Faults

    11. Other Changes

  1. Colophon

View Full Table of Contents
Product Details
Title:
Linux Device Drivers
By:
Alessandro Rubini
Publisher:
O'Reilly Media
Formats:
  • Print
Print Release:
February 1998
Pages:
439
Print ISBN:
978-1-56592-292-1
| ISBN 10:
1-56592-292-1
Customer Reviews
Colophon

Our look is the result of reader comments, our own experimentation, and feedback from distribution channels. Distinctive covers complement our distinctive approach to technical topics, breathing personality and life into potentially dry subjects. The image on the cover of Linux Device Drivers is of a bucking horse. A vivid description of this phenomenon is given in Marvels of the New West: A Vivid Portrayal of the Stupendous Marvels in the Vast Wonderland West of the Missouri River, by William Thayer (The Henry Bill Publishing Co., Norwich, CT, 1888). Thayer quotes a stockman who gives this description of a bucking horse: When a horse bucks he puts his head down between his legs, arches his back like an angry cat, and springs into the air with all his legs at once, coming down again with a frightful jar, and he sometimes keeps on repeating the performance until he is completely worn out with the excursion. The rider is apt to feel rather worn out too by that time, if he has kept his seat, which is not a very easy matter, especially if the horse is a real scientific bucker, and puts a kind of side action into every jump. The double girth commonly attached to these Mexican saddles is useful for keeping the saddle in its place during one of those bouts, but there is no doubt that they frequently make a horse buck who would not do so with a single girth. With some animals you can never draw up the flank girth without setting them bucking. The cover layout was produced with Quark XPress 3.3 and Adobe Photoshop 2.5 software, using the ITC Garamond Condensed font.

The interior layouts were designed by Edie Freedman and Jennifer Niederst, with modifications by Nancy Priest and Mary Jane Walsh. Chapter opening graphics are from the Dover Pictorial Archive and Marvels of the New West. Interior fonts are Adobe ITC Garamond and Adobe Courier. Text was prepared in SGML using the DocBook 2.1 DTD. The print version of this book was created by translating the SGML source into a set of gtroff macros using a filter developed at ORA by Norman Walsh. Steve Talbott designed and wrote the underlying macro set on the basis of the GNU gtroff -gs macros; Lenny Muellner adapted them to SGML and implemented the book design. The GNU groff text formatter version 1.09 was used to generate PostScript output. The illustrations that appear in the book were created in Macromedia Freehand 5.0 by Chris Reilley.

  • Book cover of Linux Device Drivers