Learn kernel development along with kernel internals and cover essential background for driver authors
- Get detailed instructions for building the Linux Kernel from source
- Learn to write kernel code using the Linux Kernel Module (LKM) framework
- Discover use cases on memory allocations and data synchronization
Linux Kernel Development Cookbook aims to make kernel programming easy for you. All kernel (and a few device driver) concepts discussed in this book are primarily targeted to offer solutions to frequently encountered kernel issues.
This problem-solution guide focusing on the latest version of Linux kernel 5.0 will follow a recipe-based approach and start off with an overview of the Linux Kernel architecture, and explaining how to build the kernel from source. Next, you will learn how to write your first Kernel module within the Loadable Kernel Module (LKM) framework. You will also explore the essentials of the Linux memory management subsystem and in detail, the kernel dynamic memory allocation and deallocation APIs. Going forward, you will get familiar with CPU scheduling on the Linux OS. The next set of chapters will deal with the different synchronization techniques and some useful Kernel mechanisms (timers, kernel threads, workqueues, even the implementation of a new system call). The last set of chapters will help you understand user-kernel communication pathways, performing I/O to peripheral chips and the handling of hardware interrupts – all valuable topics to the Linux driver developer as well.
By the end of this book, you will be able to troubleshoot a majority of the problems encountered while developing Linux kernel code.
What you will learn
- Gain an understanding of some of the key data structures and APIs within the kernel
- Write and build kernel code having understood the Loadable Kernel Module (LKM) framework
- Understand the essential internals of the Linux kernel and memory management subsystem
- A broad look at tools and techniques used by kernel (and driver) developers
- When, where and which APIs to use for locking critical sections in your kernel/driver code
- Building the kernel from source, understanding the essentials of the CPU scheduler, using kernel mechanisms, driver essentials.
Who This Book Is For
This book is for Linux programmers who are beginning to find their way with kernel development. Kernel developers looking to overcome frequent and common kernel development issues will definitely benefit from this book.