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. Kernel 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. Backward Compatibility

    9. 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. A Brief Introduction to Race Conditions

    8. read and write

    9. Playing with the New Devices

    10. The Device Filesystem

    11. Backward Compatibility

    12. Quick Reference

  4. Chapter 4 Debugging Techniques

    1. Debugging by Printing

    2. Debugging by Querying

    3. Debugging by Watching

    4. Debugging System Faults

    5. Debuggers and Related Tools

  5. Chapter 5 Enhanced 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. Backward Compatibility

    8. 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. Backward Compatibility

    7. Quick Reference

  7. Chapter 7 Getting Hold of Memory

    1. The Real Story of kmalloc

    2. Lookaside Caches

    3. get_free_page and Friends

    4. vmalloc and Friends

    5. Boot-Time Allocation

    6. Backward Compatibility

    7. Quick Reference

  8. Chapter 8 Hardware Management

    1. I/O Ports and I/O Memory

    2. Using I/O Ports

    3. Using Digital I/O Ports

    4. Using I/O Memory

    5. Backward Compatibility

    6. Quick Reference

  9. Chapter 9 Interrupt Handling

    1. Overall Control of Interrupts

    2. Preparing the Parallel Port

    3. Installing an Interrupt Handler

    4. Implementing a Handler

    5. Tasklets and Bottom-Half Processing

    6. Interrupt Sharing

    7. Interrupt-Driven I/O

    8. Race Conditions

    9. Backward Compatibility

    10. 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. Linked Lists

    6. Quick Reference

  11. Chapter 11 kmod and Advanced Modularization

    1. Loading Modules on Demand

    2. Intermodule Communication

    3. Version Control in Modules

    4. Backward Compatibility

    5. Quick Reference

  12. Chapter 12 Loading Block Drivers

    1. Registering the Driver

    2. The Header File blk.h

    3. Handling Requests: A Simple Introduction

    4. Handling Requests: The Detailed View

    5. How Mounting and Unmounting Works

    6. The ioctl Method

    7. Removable Devices

    8. Partitionable Devices

    9. Interrupt-Driven Block Drivers

    10. Backward Compatibility

    11. Quick Reference

  13. Chapter 13 mmap and DMA

    1. Memory Management in Linux

    2. The mmap Device Operation

    3. The kiobuf Interface

    4. Direct Memory Access and Bus Mastering

    5. Backward Compatibility

    6. Quick Reference

  14. Chapter 14 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. Changes in Link State

    9. The Socket Buffers

    10. MAC Address Resolution

    11. Custom ioctl Commands

    12. Statistical Information

    13. Multicasting

    14. Backward Compatibility

    15. Quick Reference

  15. Chapter 15 Overview of Peripheral Buses

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

    9. 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 fs Directory

    6. The mm Directory

    7. The net directory

    8. ipc and lib

    9. include and arch

    10. Drivers

  1. Bibliography

  2. Colophon