pub struct PhysBox { /* private fields */ }
Expand description
An RAII guard of a physical memory allocation. Currently all physically allocated memory are page-aligned and take up at least 4k of space (on x86_64).
Implementations
sourceimpl PhysBox
impl PhysBox
sourcepub unsafe fn from_raw_parts(address: usize, size: usize) -> Self
pub unsafe fn from_raw_parts(address: usize, size: usize) -> Self
Construct a PhysBox from an address and a size.
Safety
This function is unsafe because when dropping, Self has to a valid allocation.
sourcepub fn address(&self) -> usize
pub fn address(&self) -> usize
Retrieve the byte address in physical memory, of this allocation.
sourcepub fn new_in_32bit_space(size: usize) -> Result<Self>
pub fn new_in_32bit_space(size: usize) -> Result<Self>
Allocate physical memory that must reside in 32-bit space.
pub fn new_with_flags(size: usize, flags: PhysallocFlags) -> Result<Self>
sourcepub fn new_partial_allocation(
size: usize,
flags: PhysallocFlags,
strategy: Option<PartialAllocStrategy>,
min: usize
) -> Result<Self>
pub fn new_partial_allocation(
size: usize,
flags: PhysallocFlags,
strategy: Option<PartialAllocStrategy>,
min: usize
) -> Result<Self>
“Partially” allocate physical memory, in the sense that the allocation may be smaller than expected, but still with a minimum limit. This is particularly useful when the physical memory space is fragmented, and a device supports scatter-gather I/O. In that case, the driver can optimistically request e.g. 1 alloc of 1 MiB, with the minimum of 512 KiB. If that first allocation only returns half the size, the driver can do another allocation and then let the device use both buffers.
pub fn new(size: usize) -> Result<Self>
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for PhysBox
impl Send for PhysBox
impl Sync for PhysBox
impl Unpin for PhysBox
impl UnwindSafe for PhysBox
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more