Skip to main content

GuestState

Struct GuestState 

Source
#[repr(C)]
pub struct GuestState { pub exit_reason: ExitReason, pub pc: u64, pub regs: [u64; 96], pub tmps: [u64; 256], pub memory: *mut GuestMemoryAbi, pub fault_addr: u64, pub fault_access: AccessKind, pub control: *mut GuestControl, pub jit_entries: *const JitEntryAbi, pub jit_entry_count: usize, }
Expand description

Uses one shared layout because both the runtime and generated libraries access guest state.

Fields§

§exit_reason: ExitReason

Tells the runtime why generated code returned.

§pc: u64

Gives the current guest virtual instruction address.

§regs: [u64; 96]

Stores raw integer and floating-point register bits in the shared ABI layout.

§tmps: [u64; 256]

Stores NNIL temporary values that must remain available across generated functions.

§memory: *mut GuestMemoryAbi

Points to the MMU view that generated code can use without Rust containers.

§fault_addr: u64

Gives the guest address of the last failed memory access.

§fault_access: AccessKind

Identifies the operation that failed at fault_addr.

§control: *mut GuestControl

Points to optional debugger controls, or is null for unrestricted execution.

§jit_entries: *const JitEntryAbi

Points to sorted cross-artifact dispatch entries.

§jit_entry_count: usize

Gives the valid length of jit_entries.

Trait Implementations§

Source§

impl Clone for GuestState

Source§

fn clone(&self) -> GuestState

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for GuestState

Source§

fn default() -> Self

Starts with no active guest operation and no borrowed ABI pointers. The runtime installs each pointer only after it owns the target allocation.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.