Struct memory_structs::VirtualAddress
source · #[repr(transparent)]pub struct VirtualAddress(_);
Expand description
A virtual memory address, which is a usize
under the hood.
Implementations§
source§impl VirtualAddress
impl VirtualAddress
sourcepub fn new(addr: usize) -> Option<VirtualAddress>
pub fn new(addr: usize) -> Option<VirtualAddress>
Creates a new VirtualAddress
, returning an error if the address is not canonical.
This is useful for checking whether an address is valid before using it.
For example, on x86_64, virtual addresses are canonical
if their upper bits (64:48]
are sign-extended from bit 47,
and physical addresses are canonical if their upper bits (64:52]
are 0.
sourcepub const fn new_canonical(addr: usize) -> VirtualAddress
pub const fn new_canonical(addr: usize) -> VirtualAddress
Creates a new VirtualAddress
that is guaranteed to be canonical.
sourcepub const fn zero() -> VirtualAddress
pub const fn zero() -> VirtualAddress
Creates a new VirtualAddress
with a value 0.
sourcepub const fn page_offset(&self) -> usize
pub const fn page_offset(&self) -> usize
Returns the offset from the page boundary specified by this `VirtualAddress.
For example, if the [PAGE_SIZE
] is 4096 (4KiB), then this will return
the least significant 12 bits (12:0]
of this VirtualAddress
.
Trait Implementations§
source§impl Add<VirtualAddress> for VirtualAddress
impl Add<VirtualAddress> for VirtualAddress
§type Output = VirtualAddress
type Output = VirtualAddress
The resulting type after applying the
+
operator.source§fn add(self, rhs: VirtualAddress) -> VirtualAddress
fn add(self, rhs: VirtualAddress) -> VirtualAddress
Performs the
+
operation. Read moresource§impl Add<usize> for VirtualAddress
impl Add<usize> for VirtualAddress
§type Output = VirtualAddress
type Output = VirtualAddress
The resulting type after applying the
+
operator.source§impl AddAssign<VirtualAddress> for VirtualAddress
impl AddAssign<VirtualAddress> for VirtualAddress
source§fn add_assign(&mut self, rhs: VirtualAddress)
fn add_assign(&mut self, rhs: VirtualAddress)
Performs the
+=
operation. Read moresource§impl AddAssign<usize> for VirtualAddress
impl AddAssign<usize> for VirtualAddress
source§fn add_assign(&mut self, rhs: usize)
fn add_assign(&mut self, rhs: usize)
Performs the
+=
operation. Read moresource§impl Binary for VirtualAddress
impl Binary for VirtualAddress
source§impl BitAnd<VirtualAddress> for VirtualAddress
impl BitAnd<VirtualAddress> for VirtualAddress
§type Output = VirtualAddress
type Output = VirtualAddress
The resulting type after applying the
&
operator.source§fn bitand(self, rhs: VirtualAddress) -> VirtualAddress
fn bitand(self, rhs: VirtualAddress) -> VirtualAddress
Performs the
&
operation. Read moresource§impl BitAndAssign<VirtualAddress> for VirtualAddress
impl BitAndAssign<VirtualAddress> for VirtualAddress
source§fn bitand_assign(&mut self, rhs: VirtualAddress)
fn bitand_assign(&mut self, rhs: VirtualAddress)
Performs the
&=
operation. Read moresource§impl BitOr<VirtualAddress> for VirtualAddress
impl BitOr<VirtualAddress> for VirtualAddress
§type Output = VirtualAddress
type Output = VirtualAddress
The resulting type after applying the
|
operator.source§fn bitor(self, rhs: VirtualAddress) -> VirtualAddress
fn bitor(self, rhs: VirtualAddress) -> VirtualAddress
Performs the
|
operation. Read moresource§impl BitOrAssign<VirtualAddress> for VirtualAddress
impl BitOrAssign<VirtualAddress> for VirtualAddress
source§fn bitor_assign(&mut self, rhs: VirtualAddress)
fn bitor_assign(&mut self, rhs: VirtualAddress)
Performs the
|=
operation. Read moresource§impl BitXor<VirtualAddress> for VirtualAddress
impl BitXor<VirtualAddress> for VirtualAddress
§type Output = VirtualAddress
type Output = VirtualAddress
The resulting type after applying the
^
operator.source§fn bitxor(self, rhs: VirtualAddress) -> VirtualAddress
fn bitxor(self, rhs: VirtualAddress) -> VirtualAddress
Performs the
^
operation. Read moresource§impl BitXorAssign<VirtualAddress> for VirtualAddress
impl BitXorAssign<VirtualAddress> for VirtualAddress
source§fn bitxor_assign(&mut self, rhs: VirtualAddress)
fn bitxor_assign(&mut self, rhs: VirtualAddress)
Performs the
^=
operation. Read moresource§impl Clone for VirtualAddress
impl Clone for VirtualAddress
source§fn clone(&self) -> VirtualAddress
fn clone(&self) -> VirtualAddress
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 VirtualAddress
impl Debug for VirtualAddress
source§impl Default for VirtualAddress
impl Default for VirtualAddress
source§fn default() -> VirtualAddress
fn default() -> VirtualAddress
Returns the “default value” for a type. Read more
source§impl Display for VirtualAddress
impl Display for VirtualAddress
source§impl Hash for VirtualAddress
impl Hash for VirtualAddress
source§impl Into<usize> for VirtualAddress
impl Into<usize> for VirtualAddress
source§impl LowerHex for VirtualAddress
impl LowerHex for VirtualAddress
source§impl Octal for VirtualAddress
impl Octal for VirtualAddress
source§impl Ord for VirtualAddress
impl Ord for VirtualAddress
source§fn cmp(&self, other: &VirtualAddress) -> Ordering
fn cmp(&self, other: &VirtualAddress) -> 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<VirtualAddress> for VirtualAddress
impl PartialEq<VirtualAddress> for VirtualAddress
source§fn eq(&self, other: &VirtualAddress) -> bool
fn eq(&self, other: &VirtualAddress) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd<VirtualAddress> for VirtualAddress
impl PartialOrd<VirtualAddress> for VirtualAddress
source§fn partial_cmp(&self, other: &VirtualAddress) -> Option<Ordering>
fn partial_cmp(&self, other: &VirtualAddress) -> 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 moresource§impl Pointer for VirtualAddress
impl Pointer for VirtualAddress
source§impl Sub<VirtualAddress> for VirtualAddress
impl Sub<VirtualAddress> for VirtualAddress
§type Output = VirtualAddress
type Output = VirtualAddress
The resulting type after applying the
-
operator.source§fn sub(self, rhs: VirtualAddress) -> VirtualAddress
fn sub(self, rhs: VirtualAddress) -> VirtualAddress
Performs the
-
operation. Read moresource§impl Sub<usize> for VirtualAddress
impl Sub<usize> for VirtualAddress
§type Output = VirtualAddress
type Output = VirtualAddress
The resulting type after applying the
-
operator.source§impl SubAssign<VirtualAddress> for VirtualAddress
impl SubAssign<VirtualAddress> for VirtualAddress
source§fn sub_assign(&mut self, rhs: VirtualAddress)
fn sub_assign(&mut self, rhs: VirtualAddress)
Performs the
-=
operation. Read moresource§impl SubAssign<usize> for VirtualAddress
impl SubAssign<usize> for VirtualAddress
source§fn sub_assign(&mut self, rhs: usize)
fn sub_assign(&mut self, rhs: usize)
Performs the
-=
operation. Read more