pub struct VirtAddr(/* private fields */);
Expand description
A virtual memory address on aarch64
.
In exception level (EL) 0 and EL1 the virtual address space ranges from 0
till
0x000f_ffff_ffff_ffff
, as well as from 0xfff0_0000_0000_0000
to 0xffff_ffff_ffff_ffff
.
This type enforces this limit.
However, there are more restrictions (e.g., execption level 3 has only one address space)
that are not encoded in this type.
Implementations§
Source§impl VirtAddr
impl VirtAddr
Sourcepub const unsafe fn new_unsafe(addr: u64) -> VirtAddr
pub const unsafe fn new_unsafe(addr: u64) -> VirtAddr
Creates a new address, without any checks.
§Safety
If addr
does not comply with the platforms requirements for
this address type, this can lead to UB in functions relying on
the compliance or when using the requirements.
Source§impl VirtAddr
impl VirtAddr
Sourcepub const fn try_new(addr: u64) -> Result<VirtAddr, VirtAddrNotValid>
pub const fn try_new(addr: u64) -> Result<VirtAddr, VirtAddrNotValid>
Tries to create a new canonical virtual address.
Sourcepub const fn new_truncate(addr: u64) -> VirtAddr
pub const fn new_truncate(addr: u64) -> VirtAddr
Creates a new canonical virtual address, throwing out bits 52..63.
Addresses on aarch64 are invalid, if the topmost 12 bits are not the same. This function performs sign extension of bit 56 to make the address canonical, overwriting bits 56 to 63.
Sourcepub fn from_ptr<T: ?Sized>(ptr: *const T) -> Self
pub fn from_ptr<T: ?Sized>(ptr: *const T) -> Self
Creates a virtual address from the given pointer
Sourcepub const fn as_mut_ptr<T>(self) -> *mut T
pub const fn as_mut_ptr<T>(self) -> *mut T
Converts the address to a mutable raw pointer.
pub const fn as_usize(&self) -> usize
Trait Implementations§
Source§impl AddAssign<u64> for VirtAddr
impl AddAssign<u64> for VirtAddr
Source§fn add_assign(&mut self, rhs: u64)
fn add_assign(&mut self, rhs: u64)
+=
operation. Read moreSource§impl AddAssign<usize> for VirtAddr
impl AddAssign<usize> for VirtAddr
Source§fn add_assign(&mut self, rhs: usize)
fn add_assign(&mut self, rhs: usize)
+=
operation. Read moreSource§impl BitAndAssign<u64> for VirtAddr
impl BitAndAssign<u64> for VirtAddr
Source§fn bitand_assign(&mut self, rhs: u64)
fn bitand_assign(&mut self, rhs: u64)
&=
operation. Read moreSource§impl BitOrAssign<u64> for VirtAddr
impl BitOrAssign<u64> for VirtAddr
Source§fn bitor_assign(&mut self, rhs: u64)
fn bitor_assign(&mut self, rhs: u64)
|=
operation. Read moreSource§impl BitXorAssign<u64> for VirtAddr
impl BitXorAssign<u64> for VirtAddr
Source§fn bitxor_assign(&mut self, rhs: u64)
fn bitxor_assign(&mut self, rhs: u64)
^=
operation. Read moreSource§impl MemoryAddress for VirtAddr
impl MemoryAddress for VirtAddr
Source§impl Ord for VirtAddr
impl Ord for VirtAddr
Source§impl PartialOrd for VirtAddr
impl PartialOrd for VirtAddr
Source§impl ShlAssign<usize> for VirtAddr
impl ShlAssign<usize> for VirtAddr
Source§fn shl_assign(&mut self, rhs: usize)
fn shl_assign(&mut self, rhs: usize)
<<=
operation. Read moreSource§impl ShrAssign<usize> for VirtAddr
impl ShrAssign<usize> for VirtAddr
Source§fn shr_assign(&mut self, rhs: usize)
fn shr_assign(&mut self, rhs: usize)
>>=
operation. Read moreSource§impl SubAssign<u64> for VirtAddr
impl SubAssign<u64> for VirtAddr
Source§fn sub_assign(&mut self, rhs: u64)
fn sub_assign(&mut self, rhs: u64)
-=
operation. Read moreSource§impl SubAssign<usize> for VirtAddr
impl SubAssign<usize> for VirtAddr
Source§fn sub_assign(&mut self, rhs: usize)
fn sub_assign(&mut self, rhs: usize)
-=
operation. Read more