Slab Allocation¶
Functions and structures¶
-
folio_slab¶
folio_slab (folio)
Converts from folio to slab.
Parameters
folioThe folio.
Description
Currently struct slab is a different representation of a folio where
folio_test_slab() is true.
Return
The slab which contains this folio.
-
slab_folio¶
slab_folio (s)
The folio allocated for a slab
Parameters
sThe slab.
Description
Slabs are allocated as folios that contain the individual objects and are
using some fields in the first struct page of the folio - those fields are
now accessed by struct slab. It is occasionally necessary to convert back to
a folio in order to communicate with the rest of the mm. Please use this
helper function instead of casting yourself, as the implementation may change
in the future.
-
page_slab¶
page_slab (p)
Converts from first
struct pageto slab.
Parameters
pThe first (either head of compound or single) page of slab.
Description
A temporary wrapper to convert struct page to struct slab in situations where
we know the page is the compound head, or single order-0 page.
Long-term ideally everything would work with struct slab directly or go
through folio to struct slab.
Return
The slab which contains this page
-
slab_page¶
slab_page (s)
The first
struct pageallocated for a slab
Parameters
sThe slab.
Description
A convenience wrapper for converting slab to the first struct page of the
underlying folio, to communicate with code not yet converted to folio or
struct slab.
-
enum slab_flags¶
How the slab flags bits are used.
Constants
SL_lockedIs locked with
slab_lock()SL_partialOn the per-node partial list
SL_pfmemallocWas allocated from PF_MEMALLOC reserves
Description
The slab flags share space with the page flags but some bits have different interpretations. The high bits are used for information like zone/node/section.