Books & Videos

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