[−][src]Struct buddy_system_allocator::Heap
A heap that uses buddy system
Usage
Create a heap and add a memory region to it:
use buddy_system_allocator::*; let mut heap = Heap::new(); unsafe { heap.add_to_heap(begin, end); }
Methods
impl Heap[src]
pub const fn new() -> Self[src]
Create an empty heap
pub unsafe fn add_to_heap(&mut self, start: usize, end: usize)[src]
Add a range of memory [start, end) to the heap
pub fn alloc(&mut self, layout: Layout) -> Result<NonNull<u8>, AllocErr>[src]
Alloc a range of memory from the heap satifying layout requirements
pub fn dealloc(&mut self, ptr: NonNull<u8>, layout: Layout)[src]
Dealloc a range of memory from the heap
Trait Implementations
impl Debug for Heap[src]
impl Alloc for Heap[src]
unsafe fn alloc(&mut self, layout: Layout) -> Result<NonNull<u8>, AllocErr>[src]
unsafe fn dealloc(&mut self, ptr: NonNull<u8>, layout: Layout)[src]
fn usable_size(&self, layout: &Layout) -> (usize, usize)[src]
allocator_api)Returns bounds on the guaranteed usable size of a successful allocation created with the specified layout. Read more
unsafe fn realloc(
&mut self,
ptr: NonNull<u8>,
layout: Layout,
new_size: usize
) -> Result<NonNull<u8>, AllocErr>[src]
&mut self,
ptr: NonNull<u8>,
layout: Layout,
new_size: usize
) -> Result<NonNull<u8>, AllocErr>
allocator_api)Returns a pointer suitable for holding data described by a new layout with layout’s alignment and a size given by new_size. To accomplish this, this may extend or shrink the allocation referenced by ptr to fit the new layout. Read more
unsafe fn alloc_zeroed(
&mut self,
layout: Layout
) -> Result<NonNull<u8>, AllocErr>[src]
&mut self,
layout: Layout
) -> Result<NonNull<u8>, AllocErr>
allocator_api)Behaves like alloc, but also ensures that the contents are set to zero before being returned. Read more
unsafe fn alloc_excess(&mut self, layout: Layout) -> Result<Excess, AllocErr>[src]
allocator_api)Behaves like alloc, but also returns the whole size of the returned block. For some layout inputs, like arrays, this may include extra storage usable for additional data. Read more
unsafe fn realloc_excess(
&mut self,
ptr: NonNull<u8>,
layout: Layout,
new_size: usize
) -> Result<Excess, AllocErr>[src]
&mut self,
ptr: NonNull<u8>,
layout: Layout,
new_size: usize
) -> Result<Excess, AllocErr>
allocator_api)Behaves like realloc, but also returns the whole size of the returned block. For some layout inputs, like arrays, this may include extra storage usable for additional data. Read more
unsafe fn grow_in_place(
&mut self,
ptr: NonNull<u8>,
layout: Layout,
new_size: usize
) -> Result<(), CannotReallocInPlace>[src]
&mut self,
ptr: NonNull<u8>,
layout: Layout,
new_size: usize
) -> Result<(), CannotReallocInPlace>
allocator_api)Attempts to extend the allocation referenced by ptr to fit new_size. Read more
unsafe fn shrink_in_place(
&mut self,
ptr: NonNull<u8>,
layout: Layout,
new_size: usize
) -> Result<(), CannotReallocInPlace>[src]
&mut self,
ptr: NonNull<u8>,
layout: Layout,
new_size: usize
) -> Result<(), CannotReallocInPlace>
allocator_api)Attempts to shrink the allocation referenced by ptr to fit new_size. Read more
fn alloc_one<T>(&mut self) -> Result<NonNull<T>, AllocErr>[src]
allocator_api)Allocates a block suitable for holding an instance of T. Read more
unsafe fn dealloc_one<T>(&mut self, ptr: NonNull<T>)[src]
allocator_api)Deallocates a block suitable for holding an instance of T. Read more
fn alloc_array<T>(&mut self, n: usize) -> Result<NonNull<T>, AllocErr>[src]
allocator_api)Allocates a block suitable for holding n instances of T. Read more
unsafe fn realloc_array<T>(
&mut self,
ptr: NonNull<T>,
n_old: usize,
n_new: usize
) -> Result<NonNull<T>, AllocErr>[src]
&mut self,
ptr: NonNull<T>,
n_old: usize,
n_new: usize
) -> Result<NonNull<T>, AllocErr>
allocator_api)Reallocates a block previously suitable for holding n_old instances of T, returning a block suitable for holding n_new instances of T. Read more
unsafe fn dealloc_array<T>(
&mut self,
ptr: NonNull<T>,
n: usize
) -> Result<(), AllocErr>[src]
&mut self,
ptr: NonNull<T>,
n: usize
) -> Result<(), AllocErr>
allocator_api)Deallocates a block suitable for holding n instances of T. Read more
Auto Trait Implementations
Blanket Implementations
impl<T> From for T[src]
impl<T, U> TryFrom for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<T, U> Into for T where
U: From<T>, [src]
U: From<T>,
impl<T> Borrow for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,