pub struct SecondaryControls { /* private fields */ }
Expand description
Secondary processor-based VM-execution controls.
A set of bitmask flags useful when setting up SECONDARY_PROCBASED_EXEC_CONTROLS
VMCS field.
See Intel SDM, Volume 3C, Section 24.6.2, Table 24-7.
Implementations
sourceimpl SecondaryControls
impl SecondaryControls
sourcepub const VIRTUALIZE_APIC: Self = _
pub const VIRTUALIZE_APIC: Self = _
Virtualize APIC accesses.
sourcepub const ENABLE_EPT: Self = _
pub const ENABLE_EPT: Self = _
Enable EPT.
sourcepub const DTABLE_EXITING: Self = _
pub const DTABLE_EXITING: Self = _
Descriptor-table exiting.
sourcepub const ENABLE_RDTSCP: Self = _
pub const ENABLE_RDTSCP: Self = _
Enable RDTSCP.
sourcepub const VIRTUALIZE_X2APIC: Self = _
pub const VIRTUALIZE_X2APIC: Self = _
Virtualize x2APIC mode.
sourcepub const ENABLE_VPID: Self = _
pub const ENABLE_VPID: Self = _
Enable VPID.
sourcepub const WBINVD_EXITING: Self = _
pub const WBINVD_EXITING: Self = _
WBINVD exiting.
sourcepub const UNRESTRICTED_GUEST: Self = _
pub const UNRESTRICTED_GUEST: Self = _
Unrestricted guest.
sourcepub const VIRTUALIZE_APIC_REGISTER: Self = _
pub const VIRTUALIZE_APIC_REGISTER: Self = _
APIC-register virtualization.
sourcepub const VIRTUAL_INTERRUPT_DELIVERY: Self = _
pub const VIRTUAL_INTERRUPT_DELIVERY: Self = _
Virtual-interrupt delivery.
sourcepub const PAUSE_LOOP_EXITING: Self = _
pub const PAUSE_LOOP_EXITING: Self = _
PAUSE-loop exiting.
sourcepub const RDRAND_EXITING: Self = _
pub const RDRAND_EXITING: Self = _
RDRAND exiting.
sourcepub const ENABLE_INVPCID: Self = _
pub const ENABLE_INVPCID: Self = _
Enable INVPCID.
sourcepub const ENABLE_VM_FUNCTIONS: Self = _
pub const ENABLE_VM_FUNCTIONS: Self = _
Enable VM functions.
sourcepub const VMCS_SHADOWING: Self = _
pub const VMCS_SHADOWING: Self = _
VMCS shadowing.
sourcepub const ENCLS_EXITING: Self = _
pub const ENCLS_EXITING: Self = _
Enable ENCLS exiting.
sourcepub const RDSEED_EXITING: Self = _
pub const RDSEED_EXITING: Self = _
RDSEED exiting.
sourcepub const ENABLE_PML: Self = _
pub const ENABLE_PML: Self = _
Enable PML.
sourcepub const EPT_VIOLATION_VE: Self = _
pub const EPT_VIOLATION_VE: Self = _
EPT-violation #VE.
sourcepub const CONCEAL_VMX_FROM_PT: Self = _
pub const CONCEAL_VMX_FROM_PT: Self = _
Conceal VMX from PT.
sourcepub const ENABLE_XSAVES_XRSTORS: Self = _
pub const ENABLE_XSAVES_XRSTORS: Self = _
Enable XSAVES/XRSTORS.
sourcepub const MODE_BASED_EPT: Self = _
pub const MODE_BASED_EPT: Self = _
Mode-based execute control for EPT.
sourcepub const SUB_PAGE_EPT: Self = _
pub const SUB_PAGE_EPT: Self = _
Sub-page write permissions for EPT.
sourcepub const INTEL_PT_GUEST_PHYSICAL: Self = _
pub const INTEL_PT_GUEST_PHYSICAL: Self = _
Intel PT uses guest physical addresses.
sourcepub const USE_TSC_SCALING: Self = _
pub const USE_TSC_SCALING: Self = _
Use TSC scaling.
sourcepub const ENABLE_USER_WAIT_PAUSE: Self = _
pub const ENABLE_USER_WAIT_PAUSE: Self = _
Enable user wait and pause.
sourcepub const ENCLV_EXITING: Self = _
pub const ENCLV_EXITING: Self = _
Enable ENCLV exiting.
sourcepub const fn from_bits(bits: u32) -> Option<Self>
pub const fn from_bits(bits: u32) -> Option<Self>
Convert from underlying bit representation, unless that representation contains bits that do not correspond to a flag.
sourcepub const fn from_bits_truncate(bits: u32) -> Self
pub const fn from_bits_truncate(bits: u32) -> Self
Convert from underlying bit representation, dropping any bits that do not correspond to flags.
sourcepub const unsafe fn from_bits_unchecked(bits: u32) -> Self
pub const unsafe fn from_bits_unchecked(bits: u32) -> Self
Convert from underlying bit representation, preserving all bits (even those not corresponding to a defined flag).
Safety
The caller of the bitflags!
macro can chose to allow or
disallow extra bits for their bitflags type.
The caller of from_bits_unchecked()
has to ensure that
all bits correspond to a defined flag or that extra bits
are valid for this bitflags type.
sourcepub const fn intersects(&self, other: Self) -> bool
pub const fn intersects(&self, other: Self) -> bool
Returns true
if there are flags common to both self
and other
.
sourcepub const fn contains(&self, other: Self) -> bool
pub const fn contains(&self, other: Self) -> bool
Returns true
if all of the flags in other
are contained within self
.
sourcepub fn set(&mut self, other: Self, value: bool)
pub fn set(&mut self, other: Self, value: bool)
Inserts or removes the specified flags depending on the passed value.
sourcepub const fn intersection(self, other: Self) -> Self
pub const fn intersection(self, other: Self) -> Self
Returns the intersection between the flags in self
and
other
.
Specifically, the returned set contains only the flags which are
present in both self
and other
.
This is equivalent to using the &
operator (e.g.
ops::BitAnd
), as in flags & other
.
sourcepub const fn union(self, other: Self) -> Self
pub const fn union(self, other: Self) -> Self
Returns the union of between the flags in self
and other
.
Specifically, the returned set contains all flags which are
present in either self
or other
, including any which are
present in both (see Self::symmetric_difference
if that
is undesirable).
This is equivalent to using the |
operator (e.g.
ops::BitOr
), as in flags | other
.
sourcepub const fn difference(self, other: Self) -> Self
pub const fn difference(self, other: Self) -> Self
Returns the difference between the flags in self
and other
.
Specifically, the returned set contains all flags present in
self
, except for the ones present in other
.
It is also conceptually equivalent to the “bit-clear” operation:
flags & !other
(and this syntax is also supported).
This is equivalent to using the -
operator (e.g.
ops::Sub
), as in flags - other
.
sourcepub const fn symmetric_difference(self, other: Self) -> Self
pub const fn symmetric_difference(self, other: Self) -> Self
Returns the symmetric difference between the flags
in self
and other
.
Specifically, the returned set contains the flags present which
are present in self
or other
, but that are not present in
both. Equivalently, it contains the flags present in exactly
one of the sets self
and other
.
This is equivalent to using the ^
operator (e.g.
ops::BitXor
), as in flags ^ other
.
sourcepub const fn complement(self) -> Self
pub const fn complement(self) -> Self
Returns the complement of this set of flags.
Specifically, the returned set contains all the flags which are
not set in self
, but which are allowed for this type.
Alternatively, it can be thought of as the set difference
between Self::all()
and self
(e.g. Self::all() - self
)
This is equivalent to using the !
operator (e.g.
ops::Not
), as in !flags
.
Trait Implementations
sourceimpl Binary for SecondaryControls
impl Binary for SecondaryControls
sourceimpl BitAnd<SecondaryControls> for SecondaryControls
impl BitAnd<SecondaryControls> for SecondaryControls
type Output = SecondaryControls
type Output = SecondaryControls
&
operator.sourceimpl BitAndAssign<SecondaryControls> for SecondaryControls
impl BitAndAssign<SecondaryControls> for SecondaryControls
sourcefn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
sourceimpl BitOr<SecondaryControls> for SecondaryControls
impl BitOr<SecondaryControls> for SecondaryControls
sourcefn bitor(self, other: SecondaryControls) -> Self
fn bitor(self, other: SecondaryControls) -> Self
Returns the union of the two sets of flags.
type Output = SecondaryControls
type Output = SecondaryControls
|
operator.sourceimpl BitOrAssign<SecondaryControls> for SecondaryControls
impl BitOrAssign<SecondaryControls> for SecondaryControls
sourcefn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
sourceimpl BitXor<SecondaryControls> for SecondaryControls
impl BitXor<SecondaryControls> for SecondaryControls
sourcefn bitxor(self, other: Self) -> Self
fn bitxor(self, other: Self) -> Self
Returns the left flags, but with all the right flags toggled.
type Output = SecondaryControls
type Output = SecondaryControls
^
operator.sourceimpl BitXorAssign<SecondaryControls> for SecondaryControls
impl BitXorAssign<SecondaryControls> for SecondaryControls
sourcefn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
sourceimpl Clone for SecondaryControls
impl Clone for SecondaryControls
sourcefn clone(&self) -> SecondaryControls
fn clone(&self) -> SecondaryControls
1.0.0 · sourceconst fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
source
. Read moresourceimpl Debug for SecondaryControls
impl Debug for SecondaryControls
sourceimpl Extend<SecondaryControls> for SecondaryControls
impl Extend<SecondaryControls> for SecondaryControls
sourcefn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
sourcefn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)sourcefn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)sourceimpl FromIterator<SecondaryControls> for SecondaryControls
impl FromIterator<SecondaryControls> for SecondaryControls
sourcefn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
sourceimpl Hash for SecondaryControls
impl Hash for SecondaryControls
sourceimpl LowerHex for SecondaryControls
impl LowerHex for SecondaryControls
sourceimpl Not for SecondaryControls
impl Not for SecondaryControls
type Output = SecondaryControls
type Output = SecondaryControls
!
operator.sourceimpl Octal for SecondaryControls
impl Octal for SecondaryControls
sourceimpl Ord for SecondaryControls
impl Ord for SecondaryControls
sourcefn cmp(&self, other: &SecondaryControls) -> Ordering
fn cmp(&self, other: &SecondaryControls) -> Ordering
1.21.0 · sourceconst fn max(self, other: Self) -> Self
const fn max(self, other: Self) -> Self
1.21.0 · sourceconst fn min(self, other: Self) -> Self
const fn min(self, other: Self) -> Self
1.50.0 · sourceconst fn clamp(self, min: Self, max: Self) -> Selfwhere
Self: PartialOrd<Self>,
const fn clamp(self, min: Self, max: Self) -> Selfwhere
Self: PartialOrd<Self>,
sourceimpl PartialEq<SecondaryControls> for SecondaryControls
impl PartialEq<SecondaryControls> for SecondaryControls
sourcefn eq(&self, other: &SecondaryControls) -> bool
fn eq(&self, other: &SecondaryControls) -> bool
sourceimpl PartialOrd<SecondaryControls> for SecondaryControls
impl PartialOrd<SecondaryControls> for SecondaryControls
sourcefn partial_cmp(&self, other: &SecondaryControls) -> Option<Ordering>
fn partial_cmp(&self, other: &SecondaryControls) -> Option<Ordering>
1.0.0 · sourceconst fn le(&self, other: &Rhs) -> bool
const fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresourceimpl Sub<SecondaryControls> for SecondaryControls
impl Sub<SecondaryControls> for SecondaryControls
type Output = SecondaryControls
type Output = SecondaryControls
-
operator.sourceimpl SubAssign<SecondaryControls> for SecondaryControls
impl SubAssign<SecondaryControls> for SecondaryControls
sourcefn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.