Struct linked_list_allocator::LockedHeap
[−]
[src]
pub struct LockedHeap(_);
Methods
impl LockedHeap
[src]
const fn empty() -> LockedHeap
[src]
Creates an empty heap. All allocate calls will return None
.
unsafe fn new(heap_bottom: usize, heap_size: usize) -> LockedHeap
[src]
Creates a new heap with the given bottom
and size
. The bottom address must be valid
and the memory in the [heap_bottom, heap_bottom + heap_size)
range must not be used for
anything else. This function is unsafe because it can cause undefined behavior if the
given address is invalid.
Methods from Deref<Target = Mutex<Heap>>
fn into_inner(self) -> T
[src]
Consumes this mutex, returning the underlying data.
fn lock(&self) -> MutexGuard<T>
[src]
Locks the spinlock and returns a guard.
The returned value may be dereferenced for data access and the lock will be dropped when the guard falls out of scope.
let mylock = spin::Mutex::new(0); { let mut data = mylock.lock(); // The lock is now locked and the data can be accessed *data += 1; // The lock is implicitly dropped }
unsafe fn force_unlock(&self)
[src]
Force unlock the spinlock.
This is extremely unsafe if the lock is not held by the current thread. However, this can be useful in some instances for exposing the lock to FFI that doesn't know how to deal with RAII.
If the lock isn't held, this is a no-op.
fn try_lock(&self) -> Option<MutexGuard<T>>
[src]
Tries to lock the mutex. If it is already locked, it will return None. Otherwise it returns a guard within Some.
Trait Implementations
impl Deref for LockedHeap
[src]
type Target = Mutex<Heap>
The resulting type after dereferencing.
fn deref(&self) -> &Mutex<Heap>
[src]
Dereferences the value.
impl<'a> Alloc for &'a LockedHeap
[src]
unsafe fn alloc(&mut self, layout: Layout) -> Result<*mut u8, AllocErr>
[src]
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
Returns a pointer meeting the size and alignment guarantees of layout
. Read more
unsafe fn dealloc(&mut self, ptr: *mut u8, layout: Layout)
[src]
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
Deallocate the memory referenced by ptr
. Read more
fn oom(&mut self, _: AllocErr) -> !
[src]
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
Allocator-specific method for signaling an out-of-memory condition. Read more
fn usable_size(&self, layout: &Layout) -> (usize, usize)
[src]
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
Returns bounds on the guaranteed usable size of a successful allocation created with the specified layout
. Read more
unsafe fn realloc(
&mut self,
ptr: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<*mut u8, AllocErr>
[src]
&mut self,
ptr: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<*mut u8, AllocErr>
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
Returns a pointer suitable for holding data described by new_layout
, meeting its size and alignment guarantees. To accomplish this, this may extend or shrink the allocation referenced by ptr
to fit new_layout
. Read more
unsafe fn alloc_zeroed(&mut self, layout: Layout) -> Result<*mut u8, AllocErr>
[src]
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
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
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
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: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<Excess, AllocErr>
[src]
&mut self,
ptr: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<Excess, AllocErr>
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
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: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<(), CannotReallocInPlace>
[src]
&mut self,
ptr: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<(), CannotReallocInPlace>
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
Attempts to extend the allocation referenced by ptr
to fit new_layout
. Read more
unsafe fn shrink_in_place(
&mut self,
ptr: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<(), CannotReallocInPlace>
[src]
&mut self,
ptr: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<(), CannotReallocInPlace>
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
Attempts to shrink the allocation referenced by ptr
to fit new_layout
. Read more
fn alloc_one<T>(&mut self) -> Result<Unique<T>, AllocErr>
[src]
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
Allocates a block suitable for holding an instance of T
. Read more
unsafe fn dealloc_one<T>(&mut self, ptr: Unique<T>)
[src]
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
Deallocates a block suitable for holding an instance of T
. Read more
fn alloc_array<T>(&mut self, n: usize) -> Result<Unique<T>, AllocErr>
[src]
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
Allocates a block suitable for holding n
instances of T
. Read more
unsafe fn realloc_array<T>(
&mut self,
ptr: Unique<T>,
n_old: usize,
n_new: usize
) -> Result<Unique<T>, AllocErr>
[src]
&mut self,
ptr: Unique<T>,
n_old: usize,
n_new: usize
) -> Result<Unique<T>, AllocErr>
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
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: Unique<T>,
n: usize
) -> Result<(), AllocErr>
[src]
&mut self,
ptr: Unique<T>,
n: usize
) -> Result<(), AllocErr>
🔬 This is a nightly-only experimental API. (allocator_api
)
the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector
Deallocates a block suitable for holding n
instances of T
. Read more