Module 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§

Borrowed
The borrowed generic type of an SGTable, representing a borrowed or externally managed table.
Owned
The Owned generic type of an SGTable.
SGEntry
A single entry in a scatter-gather list.
SGTable
A scatter-gather table.
SGTableIter
An Iterator over the DMA mapped SGEntry items of an SGTable.