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§
Source§impl 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§
Source§impl Binary for SecondaryControls
impl Binary for SecondaryControls
Source§impl BitAnd for SecondaryControls
impl BitAnd for SecondaryControls
Source§impl BitAndAssign for SecondaryControls
impl BitAndAssign for SecondaryControls
Source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
Source§impl BitOr for SecondaryControls
impl BitOr for SecondaryControls
Source§fn bitor(self, other: SecondaryControls) -> Self
fn bitor(self, other: SecondaryControls) -> Self
Returns the union of the two sets of flags.
Source§type Output = SecondaryControls
type Output = SecondaryControls
|
operator.Source§impl BitOrAssign for SecondaryControls
impl BitOrAssign for SecondaryControls
Source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
Source§impl BitXor for SecondaryControls
impl BitXor for SecondaryControls
Source§impl BitXorAssign for SecondaryControls
impl BitXorAssign for SecondaryControls
Source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
Source§impl Clone for SecondaryControls
impl Clone for SecondaryControls
Source§fn clone(&self) -> SecondaryControls
fn clone(&self) -> SecondaryControls
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for SecondaryControls
impl Debug for SecondaryControls
Source§impl Extend<SecondaryControls> for SecondaryControls
impl Extend<SecondaryControls> for SecondaryControls
Source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)Source§impl FromIterator<SecondaryControls> for SecondaryControls
impl FromIterator<SecondaryControls> for SecondaryControls
Source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Source§impl Hash for SecondaryControls
impl Hash for SecondaryControls
Source§impl LowerHex for SecondaryControls
impl LowerHex for SecondaryControls
Source§impl Not for SecondaryControls
impl Not for SecondaryControls
Source§impl Octal for SecondaryControls
impl Octal for SecondaryControls
Source§impl Ord for SecondaryControls
impl Ord for SecondaryControls
Source§fn cmp(&self, other: &SecondaryControls) -> Ordering
fn cmp(&self, other: &SecondaryControls) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for SecondaryControls
impl PartialEq for SecondaryControls
Source§impl PartialOrd for SecondaryControls
impl PartialOrd for SecondaryControls
Source§impl Sub for SecondaryControls
impl Sub for SecondaryControls
Source§impl SubAssign for SecondaryControls
impl SubAssign for SecondaryControls
Source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.