[][src]Struct buddy_system_allocator::Heap

pub struct Heap { /* fields omitted */ }

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]

fn usable_size(&self, layout: &Layout) -> (usize, usize)[src]

🔬 This is a nightly-only experimental API. (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]

🔬 This is a nightly-only experimental API. (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]

🔬 This is a nightly-only experimental API. (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]

🔬 This is a nightly-only experimental API. (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]

🔬 This is a nightly-only experimental API. (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]

🔬 This is a nightly-only experimental API. (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]

🔬 This is a nightly-only experimental API. (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]

🔬 This is a nightly-only experimental API. (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]

🔬 This is a nightly-only experimental API. (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]

🔬 This is a nightly-only experimental API. (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]

🔬 This is a nightly-only experimental API. (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]

🔬 This is a nightly-only experimental API. (allocator_api)

Deallocates a block suitable for holding n instances of T. Read more

Auto Trait Implementations

impl Send for Heap

impl !Sync for Heap

Blanket Implementations

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> From for T[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]