pub struct ProcessorVtlHv {
pub synic: ProcessorSynic,
/* private fields */
}
Expand description
A virtual processor’s per-VTL hypervisor state.
Fields§
§synic: ProcessorSynic
The virtual processor’s synic state.
Implementations§
Source§impl ProcessorVtlHv
impl ProcessorVtlHv
Sourcepub fn ref_time_now(&self) -> u64
pub fn ref_time_now(&self) -> u64
The current reference time.
Sourcepub fn msr_write_guest_os_id(&mut self, v: u64)
pub fn msr_write_guest_os_id(&mut self, v: u64)
Emulates an MSR write for the guest OS ID MSR.
Sourcepub fn msr_write_vp_assist_page(&mut self, v: u64) -> Result<(), MsrError>
pub fn msr_write_vp_assist_page(&mut self, v: u64) -> Result<(), MsrError>
Emulates an MSR write for the VP assist page MSR.
Sourcepub fn msr_write(
&mut self,
n: u32,
v: u64,
overlay_access: &mut dyn VtlProtectHypercallOverlay,
) -> Result<(), MsrError>
pub fn msr_write( &mut self, n: u32, v: u64, overlay_access: &mut dyn VtlProtectHypercallOverlay, ) -> Result<(), MsrError>
Emulates an MSR write for an HV#1 synthetic MSR.
Sourcepub fn vsm_code_page_offsets(&self, bit64: bool) -> HvRegisterVsmCodePageOffsets
pub fn vsm_code_page_offsets(&self, bit64: bool) -> HvRegisterVsmCodePageOffsets
Gets the VSM code page offset register that corresponds to the hypercall page generated by this emulator.
Sourcepub fn msr_read(&self, msr: u32) -> Result<u64, MsrError>
pub fn msr_read(&self, msr: u32) -> Result<u64, MsrError>
Emulates an MSR read for an HV#1 synthetic MSR.
Sourcepub fn vp_assist_page(&self) -> u64
pub fn vp_assist_page(&self) -> u64
Returns the current value of the VP assist page register.
Sourcepub fn set_lazy_eoi(&mut self) -> bool
pub fn set_lazy_eoi(&mut self) -> bool
Sets the lazy EOI bit in the VP assist page.
If this returns true, the caller must call clear_lazy_eoi
after the
next VP exit but before manipulating the APIC.
Sourcepub fn clear_lazy_eoi(&mut self) -> bool
pub fn clear_lazy_eoi(&mut self) -> bool
Clears the lazy EOI bit in the VP assist page.
Must only be called if set_lazy_eoi
returned true.
If the bit was already clear, returns true; the caller must then send an EOI to the APIC.
Sourcepub fn return_registers(&self) -> Result<[u64; 2], GuestMemoryError>
pub fn return_registers(&self) -> Result<[u64; 2], GuestMemoryError>
Get the register values to restore on vtl return
Sourcepub fn set_return_reason(
&self,
reason: HvVtlEntryReason,
) -> Result<(), GuestMemoryError>
pub fn set_return_reason( &self, reason: HvVtlEntryReason, ) -> Result<(), GuestMemoryError>
Set the reason for the vtl return into the vp assist page
Sourcepub fn vina_asserted(&self) -> Result<bool, GuestMemoryError>
pub fn vina_asserted(&self) -> Result<bool, GuestMemoryError>
Gets whether VINA is currently asserted.
Sourcepub fn set_vina_asserted(&self, value: bool) -> Result<(), GuestMemoryError>
pub fn set_vina_asserted(&self, value: bool) -> Result<(), GuestMemoryError>
Sets whether VINA is currently asserted.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ProcessorVtlHv
impl !RefUnwindSafe for ProcessorVtlHv
impl Send for ProcessorVtlHv
impl Sync for ProcessorVtlHv
impl Unpin for ProcessorVtlHv
impl !UnwindSafe for ProcessorVtlHv
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.