The Linux Kernel

Blueprints for World Domination

The Linux Kernel is released under the pure Open Publication Licence (OPL) with no optional clauses.

NOTE: This is just the Table of Contents; if there are any links in this they go nowhere so don't even try it. A review edition of the book will be posted on this site when it is available. If you really want to see what's in it so far, visit the CVS archive on the Kernelbook Project Page

Table of Contents
The Pioneers had it Easy
Who is it?
Styles and Conventions
About the Authors
I. The Linux Kernel
1. Linux is not Unix (20)
A Brief History of Linux
The Holy Grail of Portability
Open Sources, Open Minds
Unix Foundations
New Features in Linux
Tour of the Kernelbook
2. The Reasonable CPU (15)
Portability and Reasonable Assumptions
From Altair to Pentium
Memory Address Spaces
Interrupts and Interrupt Controllers
Busses, Controllers and Peripherals
3. Tour of the Linux Kernel (15)
Torvalds' Design Goals
Overview of the Kernel Subsystems
Interprocess Communications
Memory Management
File Systems
Resource Management
Networking Layer
Kernel Library
4. The Kernel Sources (25) glm
Kernel Sources Structure
Obtaining the Kernel Sources
Configuring Linux Kernel
Building and Installing the Kernel
Recovering from Faulty Kernels
5. Tools for Kernel Programmers
GCC, EGCS and GNU Assembler
Navigational Aids
Development Tools
Useful Utilities
Kernel Profiling
6. Contributing to the Kernel Project (10)
Participating in Linux Development
Joining the Inner Circle
Programming Style
Preparing a Patch
Bug Reporting
II. Kernel Subsystems
7. Speaking Kernel: Global Structures and Methods (25)
Kernel DEFINEs
Common Data Structures
Library Services
/proc Filesystem
8. Kernel Initialization
Boot Loader Sequence
Subsystem Initializations
9. Process Scheduler (30)
Bottom-Half Handler
Task Queues
Wait Queues
Spin Locks
10. Interprocess Communications (IPC) (20)
Message Queues
Shared Memory
11. Memory Management (20) Thomas Strohm
Hardware Support
Page Table Abstraction
System Initialization
The Page Allocator
Kernel Memory Allocation
Memory Allocation in Userland
The C Library Interface
12. Resource Management
Resource Allocation
PCI Card support
APM and ACPI support (here?)
13. Linux File Systems (30) Manuel J. Petit de Gabriel
Virtual File Systems
Device Special Files
The Venus Interface
Executable Files
Raw Disk Access (here or own chapter?)
14. Networking Layer(35) Alolita Sharma, Bob Adkins, Nilayan Sharma
TCP/IP Networking Layers
BSD Sockets
Packet Socket MMAP
INET Socket Layers
Creating a Connection
Listening on an INET BSD Socket
Data Fragmentation
Address Resolution (ARP)
IP Layer
IP Routing
Forwarding via FIB
Kernel HTTP Support
Driver Status Codes
III. Kernel Services
15. Designing Linux Modules (15) Juan-Mariano de Goyeneche
The Generic Module
Loadable Modules
Using Boot Parameters and conf.modules
Module Debugging
16. Device Drivers (35) Armin Kuster
Common Characteristics
Dynamic Configuration
Driver flow
Extending Makefiles and
17. Character Devices (20)
Registering Character Devices
ioctl Message Handling
Blocking I/O
Asynchronous I/O
IRQ Sharing in PCI I/O
USB Devices (here or own chapter?)
New Character Devices (here or own chapter?)
18. Block Devices (20)
Registering Block Devices
ioctl Message Handling
Request Handling
Interrupt Handling
Block Device Partitions
Logical Volumn Manager (here or in FS?)
Removable Media
19. Network Devices (20) Alolita Sharma, Bob Adkins, Nilayan Sharma
Telecommunications Links
Wired networking
Wireless Networking
20. PCI (20)
PCI Addressing
PCI/ISA Bridging
I/O and Memory Windows
Configuration Cycles
Initializing PCI
PCI Data Structures
Pseudo-Device Sequence
PCI Bios
PCI Fixup
21. SCSI Devices (20) Kurt Garloff
Overview of the SCSI subsystem
22. Video Systems (30)
Linux and X11R6
Memory-Mapped Video IO
SVGA video modes
Unicode Font Mapping
23. Sound Systems (20)
Sound Cards
Audio Devices
24. SMP (20) Alolita Sharma, Bob Adkins, Nilayan Sharma
SMP and Linux
SMP in 2.4
Inter Processor Communications
Managing the SpinLocks
25. Plug'n'Play (15) Tom Lees
PnP Hardware Implementations
Kernel ISA support
List of standard PnP device IDs
IV. Advanced Topics
26. Porting Linux to Other Platforms (35)
Overview of Porting Issues
Subsystems Issues
27. Embedded Linux (30) Donald Jeff Dionne and Michael Durrant
28. Real-Time Linux (30) Richard West and Christian Poellabauer
Real Time Requirements
Linux in Real Time
Implementing a Custom Scheduler
Alternative Scheduling Algorithms
RT-Linux on Intel
Related Projects
A. Overview of Linux Processors (20)
Intel Processessors
Intel x86
Itanium (ia64)
HP Alpha AXP
Motorola 68k
NeXT Workstations
Motorola Q40 Single-board Computer
IBM S/390
B. Kernel Programming Resources (10)
Linux Documentation
Online Kernel Resources
LDP Kernel Guides
linux-kernel Mailing List
Further Reading