pub struct ProcessorSynic { /* private fields */ }
Expand description
The virtual processor synthetic interrupt controller state.
Implementations§
Source§impl ProcessorSynic
impl ProcessorSynic
Sourcepub fn proxied_sints(&self) -> u16
pub fn proxied_sints(&self) -> u16
Returns the set of SINTs that are proxied to the host.
Sourcepub fn stimer_config(&self, n: usize) -> u64
pub fn stimer_config(&self, n: usize) -> u64
Returns the specified synthetic timer configuration register.
Sourcepub fn stimer_count(&self, n: usize) -> u64
pub fn stimer_count(&self, n: usize) -> u64
Returns the specified synthetic timer count register.
Sourcepub fn vina(&self) -> HvRegisterVsmVina
pub fn vina(&self) -> HvRegisterVsmVina
Returns the value of the VINA register.
Sourcepub fn set_scontrol(&mut self, v: u64)
pub fn set_scontrol(&mut self, v: u64)
Sets the SCONTROL
register.
Sourcepub fn set_stimer_config(&mut self, n: usize, v: u64)
pub fn set_stimer_config(&mut self, n: usize, v: u64)
Sets the specified synthetic timer configuration register.
Sourcepub fn set_stimer_count(&mut self, n: usize, v: u64)
pub fn set_stimer_count(&mut self, n: usize, v: u64)
Sets the specified synthetic timer count register.
Sourcepub fn request_sint_readiness(&mut self, sints: u16)
pub fn request_sint_readiness(&mut self, sints: u16)
Requests a notification when any of the requested sints has a free message slot.
The free sints will be returned by Self::scan
.
Sourcepub fn post_message(
&mut self,
sint_index: u8,
message: &HvMessage,
interrupt: &mut dyn RequestInterrupt,
) -> Result<(), HvError>
pub fn post_message( &mut self, sint_index: u8, message: &HvMessage, interrupt: &mut dyn RequestInterrupt, ) -> Result<(), HvError>
Writes a message to the message page.
Returns Err(HvError::ObjectInUse)
if the message slot is full.
Sourcepub fn write_reg(
&mut self,
reg: HvRegisterName,
v: HvRegisterValue,
) -> HvResult<()>
pub fn write_reg( &mut self, reg: HvRegisterName, v: HvRegisterValue, ) -> HvResult<()>
Writes a synthetic interrupt controller register.
Sourcepub fn write_nontimer_msr(&mut self, msr: u32, v: u64) -> Result<(), MsrError>
pub fn write_nontimer_msr(&mut self, msr: u32, v: u64) -> Result<(), MsrError>
Writes a non-synthetic-timer x64 MSR.
Sourcepub fn read_reg(&self, reg: HvRegisterName) -> HvResult<HvRegisterValue>
pub fn read_reg(&self, reg: HvRegisterName) -> HvResult<HvRegisterValue>
Reads a synthetic interrupt controller register.
Sourcepub fn read_nontimer_msr(&self, msr: u32) -> Result<u64, MsrError>
pub fn read_nontimer_msr(&self, msr: u32) -> Result<u64, MsrError>
Reads a non-synthetic-timer x64 MSR.
Sourcepub fn scan(
&mut self,
ref_time_now: u64,
interrupt: &mut dyn RequestInterrupt,
) -> (u16, Option<u64>)
pub fn scan( &mut self, ref_time_now: u64, interrupt: &mut dyn RequestInterrupt, ) -> (u16, Option<u64>)
Scans for pending messages and timers.
Calls interrupt
with the APIC vector to signal, possibly multiple
times for different SINTs.
Returns SINTs that are now deliverable after calls to
Self::request_sint_readiness
.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ProcessorSynic
impl !RefUnwindSafe for ProcessorSynic
impl Send for ProcessorSynic
impl Sync for ProcessorSynic
impl Unpin for ProcessorSynic
impl !UnwindSafe for ProcessorSynic
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.