Struct vm_allocator::AddressAllocator
source · pub struct AddressAllocator { /* private fields */ }
Expand description
An address space allocator.
The AddressAllocator
manages an address space by exporting functionality to reserve and
free address ranges based on a user defined Allocation Policy.
Implementations§
source§impl AddressAllocator
impl AddressAllocator
sourcepub fn new(base: u64, size: u64) -> Result<Self, Error>
pub fn new(base: u64, size: u64) -> Result<Self, Error>
Creates a new instance of AddressAllocator that will be used to manage the allocation and release of memory slots from the managed address space.
sourcepub fn allocate(
&mut self,
size: u64,
alignment: u64,
policy: AllocPolicy
) -> Result<RangeInclusive>
pub fn allocate( &mut self, size: u64, alignment: u64, policy: AllocPolicy ) -> Result<RangeInclusive>
Allocates a new aligned memory slot. Returns the allocated range in case of success.
When the ExactMatch
policy is used, the start address MUST be aligned to the
alignment passed as a parameter.
§Arguments:
size
: size to allocate.alignment
: alignment to be used for the allocated resources. Valid alignments are a power of 2.policy
: allocation policy.
sourcepub fn free(&mut self, key: &RangeInclusive) -> Result<()>
pub fn free(&mut self, key: &RangeInclusive) -> Result<()>
Deletes the specified memory slot or returns ResourceNotAvailable
if
the node was not allocated before.
Trait Implementations§
source§impl Clone for AddressAllocator
impl Clone for AddressAllocator
source§fn clone(&self) -> AddressAllocator
fn clone(&self) -> AddressAllocator
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for AddressAllocator
impl Debug for AddressAllocator
source§impl Ord for AddressAllocator
impl Ord for AddressAllocator
source§fn cmp(&self, other: &AddressAllocator) -> Ordering
fn cmp(&self, other: &AddressAllocator) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
source§impl PartialEq for AddressAllocator
impl PartialEq for AddressAllocator
source§fn eq(&self, other: &AddressAllocator) -> bool
fn eq(&self, other: &AddressAllocator) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for AddressAllocator
impl PartialOrd for AddressAllocator
source§fn partial_cmp(&self, other: &AddressAllocator) -> Option<Ordering>
fn partial_cmp(&self, other: &AddressAllocator) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moreimpl Eq for AddressAllocator
impl StructuralPartialEq for AddressAllocator
Auto Trait Implementations§
impl RefUnwindSafe for AddressAllocator
impl Send for AddressAllocator
impl Sync for AddressAllocator
impl Unpin for AddressAllocator
impl UnwindSafe for AddressAllocator
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more