Module kernel::scatterlist

source ·
Expand description

Abstractions for scatter-gather lists.

C header: include/linux/scatterlist.h

Scatter-gather (SG) I/O is a memory access technique that allows devices to perform DMA operations on data buffers that are not physically contiguous in memory. It works by creating a “scatter-gather list”, an array where each entry specifies the address and length of a physically contiguous memory segment.

The device’s DMA controller can then read this list and process the segments sequentially as part of one logical I/O request. This avoids the need for a single, large, physically contiguous memory buffer, which can be difficult or impossible to allocate.

This module provides safe Rust abstractions over the kernel’s struct scatterlist and struct sg_table types.

The main entry point is the SGTable type, which represents a complete scatter-gather table. It can be either:

  • An owned table (SGTable<Owned<P>>), created from a Rust memory buffer (e.g., VVec). This type manages the allocation of the struct sg_table, the DMA mapping of the buffer, and the automatic cleanup of all resources.
  • A borrowed reference (&SGTable), which provides safe, read-only access to a table that was allocated by other (e.g., C) code.

Individual entries in the table are represented by SGEntry, which can be accessed by iterating over an SGTable.

Structs§