Books & Videos

Table of Contents

  1. Chapter 1 An Introduction to Device Drivers

    1. The Role of the Device Driver

    2. Splitting the Kernel

    3. Classes of Devices and Modules

    4. Security Issues

    5. Version Numbering

    6. License Terms

    7. Joining the Kernel Development Community

    8. Overview of the Book

  2. Chapter 2 Building and Running Modules

    1. Setting Up Your Test System

    2. The Hello World Module

    3. Kernel Modules Versus Applications

    4. Compiling and Loading

    5. The Kernel Symbol Table

    6. Preliminaries

    7. Initialization and Shutdown

    8. Module Parameters

    9. Doing It in User Space

    10. Quick Reference

  3. Chapter 3 Char Drivers

    1. The Design of scull

    2. Major and Minor Numbers

    3. Some Important Data Structures

    4. Char Device Registration

    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 Support in the Kernel

    2. Debugging by Printing

    3. Debugging by Querying

    4. Debugging by Watching

    5. Debugging System Faults

    6. Debuggers and Related Tools

  5. Chapter 5 Concurrency and Race Conditions

    1. Pitfalls in scull

    2. Concurrency and Its Management

    3. Semaphores and Mutexes

    4. Completions

    5. Spinlocks

    6. Locking Traps

    7. Alternatives to Locking

    8. Quick Reference

  6. Chapter 6 Advanced Char Driver Operations

    1. ioctl

    2. Blocking I/O

    3. poll and select

    4. Asynchronous Notification

    5. Seeking a Device

    6. Access Control on a Device File

    7. Quick Reference

  7. Chapter 7 Time, Delays, and Deferred Work

    1. Measuring Time Lapses

    2. Knowing the Current Time

    3. Delaying Execution

    4. Kernel Timers

    5. Tasklets

    6. Workqueues

    7. Quick Reference

  8. Chapter 8 Allocating Memory

    1. The Real Story of kmalloc

    2. Lookaside Caches

    3. get_free_page and Friends

    4. vmalloc and Friends

    5. Per-CPU Variables

    6. Obtaining Large Buffers

    7. Quick Reference

  9. Chapter 9 Communicating with Hardware

    1. I/O Ports and I/O Memory

    2. Using I/O Ports

    3. An I/O Port Example

    4. Using I/O Memory

    5. Quick Reference

  10. Chapter 10 Interrupt Handling

    1. Preparing the Parallel Port

    2. Installing an Interrupt Handler

    3. Implementing a Handler

    4. Top and Bottom Halves

    5. Interrupt Sharing

    6. Interrupt-Driven I/O

    7. Quick Reference

  11. Chapter 11 Data Types in the Kernel

    1. Use of Standard C Types

    2. Assigning an Explicit Size to Data Items

    3. Interface-Specific Types

    4. Other Portability Issues

    5. Linked Lists

    6. Quick Reference

  12. Chapter 12 PCI Drivers

    1. The PCI Interface

    2. A Look Back: ISA

    3. PC/104 and PC/104+

    4. Other PC Buses

    5. SBus

    6. NuBus

    7. External Buses

    8. Quick Reference

  13. Chapter 13 USB Drivers

    1. USB Device Basics

    2. USB and Sysfs

    3. USB Urbs

    4. Writing a USB Driver

    5. USB Transfers Without Urbs

    6. Quick Reference

  14. Chapter 14 The Linux Device Model

    1. Kobjects, Ksets, and Subsystems

    2. Low-Level Sysfs Operations

    3. Hotplug Event Generation

    4. Buses, Devices, and Drivers

    5. Classes

    6. Putting It All Together

    7. Hotplug

    8. Dealing with Firmware

    9. Quick Reference

  15. Chapter 15 Memory Mapping and DMA

    1. Memory Management in Linux

    2. The mmap Device Operation

    3. Performing Direct I/O

    4. Direct Memory Access

    5. Quick Reference

  16. Chapter 16 Block Drivers

    1. Registration

    2. The Block Device Operations

    3. Request Processing

    4. Some Other Details

    5. Quick Reference

  17. Chapter 17 Network Drivers

    1. How snull Is Designed

    2. Connecting to the Kernel

    3. The net_device Structure in Detail

    4. Opening and Closing

    5. Packet Transmission

    6. Packet Reception

    7. The Interrupt Handler

    8. Receive Interrupt Mitigation

    9. Changes in Link State

    10. The Socket Buffers

    11. MAC Address Resolution

    12. Custom ioctl Commands

    13. Statistical Information

    14. Multicast

    15. A Few Other Details

    16. Quick Reference

  18. Chapter 18 TTY Drivers

    1. A Small TTY Driver

    2. tty_driver Function Pointers

    3. TTY Line Settings

    4. ioctls

    5. proc and sysfs Handling of TTY Devices

    6. The tty_driver Structure in Detail

    7. The tty_operations Structure in Detail

    8. The tty_struct Structure in Detail

    9. Quick Reference

  19. Chapter 19 Bibliography

    1. Books

    2. Web Sites