Struct MonitorPage

Source
pub struct MonitorPage { /* private fields */ }
Expand description

Holds information about the monitor page and registered monitors.

Implementations§

Source§

impl MonitorPage

Source

pub fn new() -> Self

Creates a new MonitorPage.

Source

pub fn set_gpa(&self, gpa: Option<u64>) -> Option<u64>

Sets the GPA of the monitor page currently in use.

Source

pub fn gpa(&self) -> Option<u64>

Gets the current GPA of the monitor page, or None if no monitor page is in use.

Source

pub fn register_monitor( &self, monitor_id: MonitorId, connection_id: u32, ) -> Box<dyn Sync + Send>

Registers a monitored interrupt, optionally using a pre-existing ID. The returned struct will unregister the ID when dropped.

§Panics

Panics if monitor_id is already in use.

Source

pub fn write_bit(&self, page_bit: u32) -> Option<u32>

Sets one bit within the monitor page, returning the connection ID to signal.

Source

pub fn check_write( &self, gpa: u64, bytes: &[u8], signal: impl FnMut(u32), ) -> bool

Check if the specified write is wholly inside the monitor page, and signal the associated interrupt if it is.

Source

pub fn check_read(&self, gpa: u64, bytes: &mut [u8]) -> bool

Checks if a read if inside the monitor page, and fills the buffer if it is. N.B. This is used to handle cases where the instruction emulator needs to read the monitor page. The guest should have read access to the page so doesn’t need to go through this path.

Trait Implementations§

Source§

impl Debug for MonitorPage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Inspect for MonitorPage

Source§

fn inspect(&self, req: Request<'_>)

Inspects the object.

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, 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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more