![](https://csdnimg.cn/release/download_crawler_static/89149196/bg12.jpg)
Preface xvii
Chapter 10, Understanding the Linux Kernel Memory Allocation, rst introduces the
concept of virtual memory, to describe the whole kernel memory layout. is chapter then
walks through the kernel memory management subsystem, discussing memory allocation
and mapping, their APIs, and all devices involved in such mechanisms, as well as the
kernel caching mechanism.
Chapter 11, Implementing Direct Memory Access (DMA) Support, introduces DMA and
its new kernel API: the DMA Engine API. is chapter will talk about dierent DMA
mappings and describe how to address cache coherency issues. In addition, the chapter
summarizes all the concepts with a generic use case.
Chapter 12, Abstracting Memory Access – Introduction to the Regmap API: a Register Map
Abstraction, provides an overview of the register map APIs and how they abstract the
underlying SPI and I2C transactions. is chapter describes the generic API, as well as the
dedicated API.
Chapter 13, Demystifying the Kernel IRQ Framework, demysties the Linux IRQ core. is
chapter walks through Linux IRQ management, starting from interrupt propagation over
the system and moving to interrupt controller drivers, thus explaining the concept of IRQ
multiplexing, using the Linux IRQ domain API.
Chapter 14, Introduction to the Linux Device Model, provides an overview of the heart of
Linux, describing how objects are represented in the kernel, and how Linux is designed
under the hood in a general manner, starting from kobject to devices, through to buses,
classes, and device drivers.
Chapter 15, Delving into the IIO Framework, introduces the kernel data acquisition and
measurement framework, to handle Digital-to-Analog Converters (DACs) and Analog-
to-Digital Converters (ADCs). is chapter walks through the IIO APIs, both from
kernel space and user space (thanks to libiio), dealing with triggered buers and
continuous data capture.
Chapter 16, Getting the Most Out of the Pin Controller and GPIO Subsystems, describes the
kernel pin control infrastructure and APIs, as well as GPIO chip drivers and gpiolib,
which is the kernel API to handle GPIO. is chapter also discusses the old and
deprecated integer-based GPIO interface, as well as the descriptor-based interface, which
is the new one, and nally, the way they can be congured from within the device tree. It
also covers libgpiod, which is the ocial library for dealing with GPIO in user space.
Chapter 17, Leveraging the Linux Kernel Input Subsystem, provides a global view of input
subsystems, dealing with both IRQ-based and polled input devices, and introducing both
APIs. is chapter explains and shows how user space code deals with such devices.