Learn Linux kernel programming, hands-on: a uniquely
effective top-down approach
Linux Kernel Primer is the definitive guide to Linux kernel programming. The authors' unique top-down approach makes kernel programming easier to understand by systematically tracing functionality from user space into the kernel, and carefully associating kernel internals with user-level programming fundamentals. Their approach helps you build on what you already know about Linux, gaining a deep understanding of how the kernel works and how its elements fit together.
One step at a time, the authors introduce all the tools and assembly language programming techniques required to understand kernel code and control its behavior. They compare x86 and PowerPC implementations side-by-side, illuminating cryptic functionality through carefully-annotated source code examples and realistic projects. Linux Kernel Primer is the first book to offer in-depth coverage of the rapidly-growing PowerPC Linux development platform, and the only book to thoroughly discuss kernel configuration with the Linux build system. Coverage includes
- Data structures
- x86 and PPC assembly language
- Viewing kernel internals
- Linux process model
- User and kernel space
- Interrupts and exceptions
- Memory allocation and tracking
- Tracing subsystem behavior
- I/O interactions
- Filesystems and file operations
- Scheduling and synchronization
- Kernel boot process
- Kernel build system
- Configuration options
- Device drivers
- And more...
If you know C, this book teaches you all the skills and techniques you need to succeed with Linux kernel programming. Whether you're a systems programmer, software engineer, systems analyst, test professional, open source project contributor, or simply a Linux enthusiast, you'll find it indispensable.
1. Overview.
2. Exploration Toolkit.
3. Processes: The Principal Model of Execution.
4. Memory Management.
5. Input/Output.
6. Filesystems.
7. Scheduling and Kernel Synchronization.
8. Booting the Kernel.
9. Building the Linux Kernel.
10. Adding Your Code to the Kernel.