#[repr(C)]struct SlabPageHeader {
next_partial: *mut SlabPageHeader,
free_head: *mut u8,
free_count: u32,
total_blocks: u32,
}Expand description
Header at the base of each 4 KiB page dedicated to a slab class.
Page layout:
[0 .. SLAB_HEADER_SIZE) SlabPageHeader (24 bytes)
[SLAB_HEADER_SIZE .. 4096) slab blocks, each SLAB_SIZES[ci] bytesA page lives in partial_pages[ci] while 0 < free_count < total_blocks.
It is removed when all blocks are allocated (free_count == 0), and is
reclaimed to the buddy allocator when it becomes fully empty again
(free_count == total_blocks).
Fields§
§next_partial: *mut SlabPageHeaderNext page in the partial list for this class (null = end of list).
free_head: *mut u8Head of the intra-page free-block chain (null = page is full).
free_count: u32Free blocks currently in this page.
total_blocks: u32Total blocks this page can hold (constant per class after refill).
Trait Implementations§
impl Send for SlabPageHeader
impl Sync for SlabPageHeader
Auto Trait Implementations§
impl Freeze for SlabPageHeader
impl RefUnwindSafe for SlabPageHeader
impl Unpin for SlabPageHeader
impl UnsafeUnpin for SlabPageHeader
impl UnwindSafe for SlabPageHeader
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more