[−][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::empty(); unsafe { heap.init(begin, size); // or heap.add_to_heap(begin, end); }
Methods
impl Heap
[src]
pub const fn new() -> Self
[src]
Create an empty heap
pub const fn empty() -> 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 unsafe fn init(&mut self, start: usize, size: 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, 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> From for T
[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,