[−][src]Struct crndm::alloc::default::BuddyAlloc
A memory allocator with buddy allocation mechanism
To define a new buddy allocator type as a memory pool, you may
use pool!()
macro.
Implementations
impl BuddyAlloc
[src]
pub fn open_impl(filename: &str) -> Result<Self>
[src]
Opens a memory pool file and returns an instance of
BuddyAlloc
if success. The pool remains open as long
as the instance lives.
Trait Implementations
impl Drop for BuddyAlloc
[src]
impl MemPool for BuddyAlloc
[src]
pub fn open_no_root(path: &str, flags: u32) -> Result<Self>
[src]
pub unsafe fn close() -> Result<()>
[src]
pub unsafe fn format(filename: &str) -> Result<()>
[src]
Formats the image file
pub fn gen() -> u32
[src]
pub fn size() -> usize
[src]
pub fn available() -> usize
[src]
pub fn used() -> usize
[src]
pub fn rng() -> Range<u64>
[src]
pub fn start() -> u64
[src]
pub fn end() -> u64
[src]
pub unsafe fn pre_alloc(size: usize) -> (*mut u8, u64, usize)
[src]
pub unsafe fn pre_dealloc(ptr: *mut u8, size: usize)
[src]
pub unsafe fn pre_realloc(
ptr: *mut *mut u8,
size: usize,
new_size: usize
) -> bool
[src]
ptr: *mut *mut u8,
size: usize,
new_size: usize
) -> bool
pub unsafe fn log64(obj: *const u64, val: u64)
[src]
pub unsafe fn drop_on_failure(off: u64, len: usize)
[src]
pub unsafe fn perform()
[src]
pub unsafe fn discard()
[src]
pub fn allocated(off: u64, len: usize) -> bool
[src]
pub unsafe fn new_journal(tid: ThreadId)
[src]
pub unsafe fn drop_journal(journal: &mut Journal)
[src]
pub unsafe fn journals(
) -> &'static mut HashMap<ThreadId, (&'static Journal, i32)>
[src]
) -> &'static mut HashMap<ThreadId, (&'static Journal, i32)>
pub unsafe fn guarded<T, F>(f: F) -> T where
F: FnOnce() -> T,
[src]
F: FnOnce() -> T,
pub unsafe fn recover()
[src]
pub fn open<'a, U: 'a + PSafe + RootObj<Self>>(
path: &str,
flags: u32
) -> Result<RootCell<'a, U, Self>>
[src]
path: &str,
flags: u32
) -> Result<RootCell<'a, U, Self>>
pub fn print_info()
[src]
pub unsafe fn apply_flags(path: &str, flags: u32) -> Result<()>
[src]
pub unsafe fn off_unchecked<T: ?Sized>(x: *const T) -> u64
[src]
pub unsafe fn get_unchecked<'a, T: 'a + ?Sized>(off: u64) -> &'a T
[src]
pub unsafe fn get_mut_unchecked<'a, T: 'a + ?Sized>(off: u64) -> &'a mut T
[src]
pub unsafe fn deref_slice_unchecked<'a, T: 'a>(off: u64, len: usize) -> &'a [T]
[src]
pub unsafe fn deref_slice_unchecked_mut<'a, T: 'a>(
off: u64,
len: usize
) -> &'a mut [T]
[src]
off: u64,
len: usize
) -> &'a mut [T]
pub unsafe fn deref<'a, T: 'a>(off: u64) -> Result<&'a T>
[src]
pub unsafe fn deref_mut<'a, T: 'a>(off: u64) -> Result<&'a mut T>
[src]
pub fn off<T: ?Sized>(x: *const T) -> Result<u64>
[src]
pub fn valid<T: ?Sized>(p: &T) -> bool
[src]
pub fn contains(addr: u64) -> bool
[src]
pub unsafe fn alloc(size: usize) -> (*mut u8, u64, usize)
[src]
pub unsafe fn dealloc(ptr: *mut u8, size: usize)
[src]
pub unsafe fn alloc_zeroed(size: usize) -> *mut u8
[src]
pub unsafe fn realloc(ptr: *mut *mut u8, size: usize, new_size: usize) -> bool
[src]
pub unsafe fn new<'a, T: PSafe + 'a>(x: T, j: &Journal<Self>) -> &'a mut T
[src]
pub unsafe fn new_slice<'a, T: PSafe + 'a>(
x: &'a [T],
_journal: &Journal<Self>
) -> &'a mut [T]
[src]
x: &'a [T],
_journal: &Journal<Self>
) -> &'a mut [T]
pub unsafe fn atomic_new<'a, T: 'a>(x: T) -> (&'a mut T, u64, usize)
[src]
pub unsafe fn atomic_new_slice<'a, T: 'a + PSafe>(
x: &'a [T]
) -> (&'a mut [T], u64, usize)
[src]
x: &'a [T]
) -> (&'a mut [T], u64, usize)
pub unsafe fn new_uninit<'a, T: PSafe + 'a>(j: &Journal<Self>) -> &'a mut T
[src]
pub unsafe fn new_uninit_for_layout(
size: usize,
journal: &Journal<Self>
) -> *mut u8
[src]
size: usize,
journal: &Journal<Self>
) -> *mut u8
pub unsafe fn atomic_new_uninit<'a, T: 'a>() -> (&'a mut T, u64, usize)
[src]
pub unsafe fn alloc_for_value<'a, T: ?Sized>(x: &T) -> &'a mut T
[src]
pub unsafe fn free<'a, T: PSafe + ?Sized>(x: &mut T)
[src]
pub unsafe fn free_slice<'a, T: PSafe>(x: &mut [T])
[src]
pub unsafe fn free_nolog<'a, T: ?Sized>(x: &T)
[src]
pub unsafe fn commit()
[src]
pub unsafe fn commit_no_clear()
[src]
pub unsafe fn clear()
[src]
pub unsafe fn rollback()
[src]
pub unsafe fn rollback_no_clear()
[src]
pub fn transaction<T, F: FnOnce(&Journal<Self>) -> T>(body: F) -> Result<T> where
F: TxInSafe + UnwindSafe,
T: TxOutSafe,
[src]
F: TxInSafe + UnwindSafe,
T: TxOutSafe,
Auto Trait Implementations
impl LooseTxInUnsafe for BuddyAlloc
[src]
impl PSafe for BuddyAlloc
[src]
impl RefUnwindSafe for BuddyAlloc
[src]
impl Send for BuddyAlloc
[src]
impl Sync for BuddyAlloc
[src]
impl TxInSafe for BuddyAlloc
[src]
impl TxOutSafe for BuddyAlloc
[src]
impl Unpin for BuddyAlloc
[src]
impl UnwindSafe for BuddyAlloc
[src]
impl VSafe for BuddyAlloc
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> 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.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,