Trait slabmalloc::AllocablePage
source · [−]pub trait AllocablePage {
const SIZE: usize;
fn bitfield(&self) -> &[AtomicU64; 8];
fn bitfield_mut(&mut self) -> &mut [AtomicU64; 8];
fn prev(&mut self) -> &mut Rawlink<Self>
where
Self: Sized;
fn next(&mut self) -> &mut Rawlink<Self>
where
Self: Sized;
fn first_fit(&self, layout: Layout) -> Option<(usize, usize)> { ... }
fn allocate(&mut self, layout: Layout) -> *mut u8 { ... }
fn is_full(&self) -> bool { ... }
fn is_empty(&self, relevant_bits: usize) -> bool { ... }
fn deallocate(
&self,
ptr: NonNull<u8>,
layout: Layout
) -> Result<(), AllocationError> { ... }
}
Expand description
This trait is used to define a page from which objects are allocated
in an SCAllocator
.
The implementor of this trait needs to provide access to the page meta-data, which consists of:
- A bitfield (to track allocations),
prev
andnext
pointers to insert the page in free lists
Required Associated Constants
Required Methods
fn bitfield_mut(&mut self) -> &mut [AtomicU64; 8]
Provided Methods
Tries to find a free block within data
that satisfies alignment
requirement.
Tries to allocate an object within this page.
In case the slab is full, returns a null ptr.
Checks if we can still allocate more objects of a given layout within the page.
Checks if the page has currently no allocations.
fn deallocate(
&self,
ptr: NonNull<u8>,
layout: Layout
) -> Result<(), AllocationError>
fn deallocate(
&self,
ptr: NonNull<u8>,
layout: Layout
) -> Result<(), AllocationError>
Deallocates a memory object within this page.