Core API Documentation — The Linux Kernel 5.18.5-gnu-1 documentation

# Core API Documentation

This is the beginning of a manual for core kernel APIs. The conversion (and writing!) of documents for this manual is much appreciated!

## Core utilities

This section has general and “core core” documentation. The first is a massive grab-bag of kerneldoc info left over from the docbook days; it should really be broken up someday when somebody finds the energy to do it.

- The Linux Kernel API
- Concurrency Managed Workqueue (cmwq)
- Message logging with printk
- How to get printk format specifiers right
- Symbol Namespaces

## Data structures and low-level utilities

Library functionality that is used throughout the kernel.

- Everything you never wanted to know about kobjects, ksets, and ktypes
- Adding reference counters (krefs) to kernel objects
- Generic Associative Array Implementation
- XArray
- ID Allocation
- Circular Buffers
- Red-black Trees (rbtree) in Linux
- Generic radix trees/sparse arrays
- Generic bitfield packing and unpacking functions
- How to access I/O mapped memory from within device drivers
- this_cpu operations
- ktime accessors
- The errseq_t datatype

## Low level entry and exit

- Entry/exit handling for exceptions, interrupts, syscalls and KVM

## Concurrency primitives

How Linux keeps everything from happening at the same time. See locking for more related documentation.

- refcount_t API compared to atomic_t
- IRQs
- Semantics and Behavior of Local Atomic Operations
- The padata parallel execution mechanism
- RCU concepts

## Low-level hardware management

Cache management, managing CPU hotplug, etc.

- Cache and TLB Flushing Under Linux
- CPU hotplug in the Kernel
- Memory hotplug
- Linux generic IRQ handling
- Memory Protection Keys

## Memory management

How to allocate and use memory in the kernel. Note that there is a lot more memory-management documentation in Linux Memory Management Documentation.

- Memory Allocation Guide
- Unaligned Memory Accesses
- Dynamic DMA mapping using the generic device
- Dynamic DMA mapping Guide
- DMA attributes
- DMA with ISA and LPC devices
- Memory Management APIs
- The genalloc/genpool subsystem
- pin_user_pages() and related calls
- Boot time memory management
- GFP masks used from FS/IO context

## Interfaces for kernel debugging

- The object-lifetime debugging infrastructure
- The Linux Kernel Tracepoint API
- Using physical DMA provided by OHCI-1394 FireWire controllers for debugging

## Everything else

Documents that don’t fit elsewhere or which have yet to be categorized.

- Reed-Solomon Library Programming Interface