Struct linked_list_allocator::LockedHeap [−][src]
pub struct LockedHeap(_);
Methods
impl LockedHeap
[src]
impl LockedHeap
pub const fn empty() -> LockedHeap
[src]
pub const fn empty() -> LockedHeap
Creates an empty heap. All allocate calls will return None
.
pub unsafe fn new(heap_bottom: usize, heap_size: usize) -> LockedHeap
[src]
pub unsafe fn new(heap_bottom: usize, heap_size: usize) -> LockedHeap
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>>
pub fn lock(&self) -> MutexGuard<T>
[src]
pub fn lock(&self) -> MutexGuard<T>
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 }
pub unsafe fn force_unlock(&self)
[src]
pub unsafe fn force_unlock(&self)
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.
pub fn try_lock(&self) -> Option<MutexGuard<T>>
[src]
pub fn try_lock(&self) -> Option<MutexGuard<T>>
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]
impl Deref for LockedHeap
type Target = Mutex<Heap>
The resulting type after dereferencing.
fn deref(&self) -> &Mutex<Heap>
[src]
fn deref(&self) -> &Mutex<Heap>
Dereferences the value.
impl GlobalAlloc for LockedHeap
[src]
impl GlobalAlloc for LockedHeap
unsafe fn alloc(&self, layout: Layout) -> *mut Opaque
[src]
unsafe fn alloc(&self, layout: Layout) -> *mut Opaque
🔬 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
Allocate memory as described by the given layout
. Read more
unsafe fn dealloc(&self, ptr: *mut Opaque, layout: Layout)
[src]
unsafe fn dealloc(&self, ptr: *mut Opaque, layout: Layout)
🔬 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 block of memory at the given ptr
pointer with the given layout
. Read more
unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut Opaque
[src]
unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut Opaque
🔬 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
unsafe fn realloc(
&self,
ptr: *mut Opaque,
layout: Layout,
new_size: usize
) -> *mut Opaque
[src]
unsafe fn realloc(
&self,
ptr: *mut Opaque,
layout: Layout,
new_size: usize
) -> *mut Opaque
🔬 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
Shink or grow a block of memory to the given new_size
. The block is described by the given ptr
pointer and layout
. Read more
Auto Trait Implementations
impl Send for LockedHeap
impl Send for LockedHeap
impl Sync for LockedHeap
impl Sync for LockedHeap