Struct memory_structs::VirtualAddress
source · pub struct VirtualAddress(/* private fields */);
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 4K page boundary specified by this `VirtualAddress.
For example, for the address 0xFFFF_1578
, this will return 0x578
,
the least significant 12 bits (12:0]
of this VirtualAddress
.
Trait Implementations§
source§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 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 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 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 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<usize> for VirtualAddress
impl Sub<usize> for VirtualAddress
§type Output = VirtualAddress
type Output = VirtualAddress
The resulting type after applying the
-
operator.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 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 moresource§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 UpperHex for VirtualAddress
impl UpperHex for VirtualAddress
impl Copy for VirtualAddress
impl Eq for VirtualAddress
impl FromBytes for VirtualAddress
impl StructuralEq for VirtualAddress
impl StructuralPartialEq for VirtualAddress
Auto Trait Implementations§
impl RefUnwindSafe for VirtualAddress
impl Send for VirtualAddress
impl Sync for VirtualAddress
impl Unpin for VirtualAddress
impl UnwindSafe for VirtualAddress
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