Struct FeatureFlags

Source
pub struct FeatureFlags(/* private fields */);

Implementations§

Source§

impl FeatureFlags

Source

pub const fn new() -> Self

Creates a new default initialized bitfield.

Source

pub const fn from_bits(bits: u32) -> Self

Convert from bits.

Source

pub const fn into_bits(self) -> u32

Convert into bits.

Source

pub const fn guest_specified_signal_parameters(&self) -> bool

Feature which allows the guest to specify an event flag and connection ID when opening a channel. If not used, the event flag defaults to the channel ID and the connection ID is specified by the host in the offer channel message.

Bits: 0..1

Source

pub const fn with_guest_specified_signal_parameters_checked( self, value: bool, ) -> Result<Self, ()>

Feature which allows the guest to specify an event flag and connection ID when opening a channel. If not used, the event flag defaults to the channel ID and the connection ID is specified by the host in the offer channel message.

Bits: 0..1

Source

pub const fn with_guest_specified_signal_parameters(self, value: bool) -> Self

Feature which allows the guest to specify an event flag and connection ID when opening a channel. If not used, the event flag defaults to the channel ID and the connection ID is specified by the host in the offer channel message.

Bits: 0..1

Source

pub const fn set_guest_specified_signal_parameters(&mut self, value: bool)

Feature which allows the guest to specify an event flag and connection ID when opening a channel. If not used, the event flag defaults to the channel ID and the connection ID is specified by the host in the offer channel message.

Bits: 0..1

Source

pub const fn set_guest_specified_signal_parameters_checked( &mut self, value: bool, ) -> Result<(), ()>

Feature which allows the guest to specify an event flag and connection ID when opening a channel. If not used, the event flag defaults to the channel ID and the connection ID is specified by the host in the offer channel message.

Bits: 0..1

Source

pub const fn channel_interrupt_redirection(&self) -> bool

Indicates the REDIRECT_INTERRUPT flag is supported in the OpenChannel flags.

Bits: 1..2

Source

pub const fn with_channel_interrupt_redirection_checked( self, value: bool, ) -> Result<Self, ()>

Indicates the REDIRECT_INTERRUPT flag is supported in the OpenChannel flags.

Bits: 1..2

Source

pub const fn with_channel_interrupt_redirection(self, value: bool) -> Self

Indicates the REDIRECT_INTERRUPT flag is supported in the OpenChannel flags.

Bits: 1..2

Source

pub const fn set_channel_interrupt_redirection(&mut self, value: bool)

Indicates the REDIRECT_INTERRUPT flag is supported in the OpenChannel flags.

Bits: 1..2

Source

pub const fn set_channel_interrupt_redirection_checked( &mut self, value: bool, ) -> Result<(), ()>

Indicates the REDIRECT_INTERRUPT flag is supported in the OpenChannel flags.

Bits: 1..2

Source

pub const fn modify_connection(&self) -> bool

Indicates the MODIFY_CONNECTION and MODIFY_CONNECTION_RESPONSE messages are supported.

Bits: 2..3

Source

pub const fn with_modify_connection_checked( self, value: bool, ) -> Result<Self, ()>

Indicates the MODIFY_CONNECTION and MODIFY_CONNECTION_RESPONSE messages are supported.

Bits: 2..3

Source

pub const fn with_modify_connection(self, value: bool) -> Self

Indicates the MODIFY_CONNECTION and MODIFY_CONNECTION_RESPONSE messages are supported.

Bits: 2..3

Source

pub const fn set_modify_connection(&mut self, value: bool)

Indicates the MODIFY_CONNECTION and MODIFY_CONNECTION_RESPONSE messages are supported.

Bits: 2..3

Source

pub const fn set_modify_connection_checked( &mut self, value: bool, ) -> Result<(), ()>

Indicates the MODIFY_CONNECTION and MODIFY_CONNECTION_RESPONSE messages are supported.

Bits: 2..3

Source

pub const fn client_id(&self) -> bool

Feature which allows a client (Windows, Linux, MiniVMBus, etc) to specify a well-known GUID to identify itself when initiating contact. If not used, the client ID is zero.

Bits: 3..4

Source

pub const fn with_client_id_checked(self, value: bool) -> Result<Self, ()>

Feature which allows a client (Windows, Linux, MiniVMBus, etc) to specify a well-known GUID to identify itself when initiating contact. If not used, the client ID is zero.

Bits: 3..4

Source

pub const fn with_client_id(self, value: bool) -> Self

Feature which allows a client (Windows, Linux, MiniVMBus, etc) to specify a well-known GUID to identify itself when initiating contact. If not used, the client ID is zero.

Bits: 3..4

Source

pub const fn set_client_id(&mut self, value: bool)

Feature which allows a client (Windows, Linux, MiniVMBus, etc) to specify a well-known GUID to identify itself when initiating contact. If not used, the client ID is zero.

Bits: 3..4

Source

pub const fn set_client_id_checked(&mut self, value: bool) -> Result<(), ()>

Feature which allows a client (Windows, Linux, MiniVMBus, etc) to specify a well-known GUID to identify itself when initiating contact. If not used, the client ID is zero.

Bits: 3..4

Source

pub const fn confidential_channels(&self) -> bool

Indicates the confidential_ring_buffer and confidential_external_memory offer flags are supported.

Bits: 4..5

Source

pub const fn with_confidential_channels_checked( self, value: bool, ) -> Result<Self, ()>

Indicates the confidential_ring_buffer and confidential_external_memory offer flags are supported.

Bits: 4..5

Source

pub const fn with_confidential_channels(self, value: bool) -> Self

Indicates the confidential_ring_buffer and confidential_external_memory offer flags are supported.

Bits: 4..5

Source

pub const fn set_confidential_channels(&mut self, value: bool)

Indicates the confidential_ring_buffer and confidential_external_memory offer flags are supported.

Bits: 4..5

Source

pub const fn set_confidential_channels_checked( &mut self, value: bool, ) -> Result<(), ()>

Indicates the confidential_ring_buffer and confidential_external_memory offer flags are supported.

Bits: 4..5

Source

pub const fn pause_resume(&self) -> bool

The server supports messages to pause and resume additional control messages.

Bits: 5..6

Source

pub const fn with_pause_resume_checked(self, value: bool) -> Result<Self, ()>

The server supports messages to pause and resume additional control messages.

Bits: 5..6

Source

pub const fn with_pause_resume(self, value: bool) -> Self

The server supports messages to pause and resume additional control messages.

Bits: 5..6

Source

pub const fn set_pause_resume(&mut self, value: bool)

The server supports messages to pause and resume additional control messages.

Bits: 5..6

Source

pub const fn set_pause_resume_checked(&mut self, value: bool) -> Result<(), ()>

The server supports messages to pause and resume additional control messages.

Bits: 5..6

Source

pub const fn server_specified_monitor_pages(&self) -> bool

The guest supports having the server (host or paravisor) provide monitor page GPAs.

If this flag is present in the InitiateContact message, the guest may still provide its own monitor pages, which the server may ignore if it supports the flag. The server will only set this flag in the VersionResponse message if it is actually providing monitor pages, which the guest must then use instead of its own.

If the server sets the flag in the VersionResponse message, it must provide a non-zero value for the VersionResponse3::child_to_parent_monitor_page_gpa; the VersionResponse3::parent_to_child_monitor_page_gpa is optional and may be zero, in which case the guest cannot cancel MNF interrupts from the host.

Bits: 6..7

Source

pub const fn with_server_specified_monitor_pages_checked( self, value: bool, ) -> Result<Self, ()>

The guest supports having the server (host or paravisor) provide monitor page GPAs.

If this flag is present in the InitiateContact message, the guest may still provide its own monitor pages, which the server may ignore if it supports the flag. The server will only set this flag in the VersionResponse message if it is actually providing monitor pages, which the guest must then use instead of its own.

If the server sets the flag in the VersionResponse message, it must provide a non-zero value for the VersionResponse3::child_to_parent_monitor_page_gpa; the VersionResponse3::parent_to_child_monitor_page_gpa is optional and may be zero, in which case the guest cannot cancel MNF interrupts from the host.

Bits: 6..7

Source

pub const fn with_server_specified_monitor_pages(self, value: bool) -> Self

The guest supports having the server (host or paravisor) provide monitor page GPAs.

If this flag is present in the InitiateContact message, the guest may still provide its own monitor pages, which the server may ignore if it supports the flag. The server will only set this flag in the VersionResponse message if it is actually providing monitor pages, which the guest must then use instead of its own.

If the server sets the flag in the VersionResponse message, it must provide a non-zero value for the VersionResponse3::child_to_parent_monitor_page_gpa; the VersionResponse3::parent_to_child_monitor_page_gpa is optional and may be zero, in which case the guest cannot cancel MNF interrupts from the host.

Bits: 6..7

Source

pub const fn set_server_specified_monitor_pages(&mut self, value: bool)

The guest supports having the server (host or paravisor) provide monitor page GPAs.

If this flag is present in the InitiateContact message, the guest may still provide its own monitor pages, which the server may ignore if it supports the flag. The server will only set this flag in the VersionResponse message if it is actually providing monitor pages, which the guest must then use instead of its own.

If the server sets the flag in the VersionResponse message, it must provide a non-zero value for the VersionResponse3::child_to_parent_monitor_page_gpa; the VersionResponse3::parent_to_child_monitor_page_gpa is optional and may be zero, in which case the guest cannot cancel MNF interrupts from the host.

Bits: 6..7

Source

pub const fn set_server_specified_monitor_pages_checked( &mut self, value: bool, ) -> Result<(), ()>

The guest supports having the server (host or paravisor) provide monitor page GPAs.

If this flag is present in the InitiateContact message, the guest may still provide its own monitor pages, which the server may ignore if it supports the flag. The server will only set this flag in the VersionResponse message if it is actually providing monitor pages, which the guest must then use instead of its own.

If the server sets the flag in the VersionResponse message, it must provide a non-zero value for the VersionResponse3::child_to_parent_monitor_page_gpa; the VersionResponse3::parent_to_child_monitor_page_gpa is optional and may be zero, in which case the guest cannot cancel MNF interrupts from the host.

Bits: 6..7

Source§

impl FeatureFlags

Source

pub fn contains(&self, other: FeatureFlags) -> bool

Returns true if other contains only flags that are also set in self.

Trait Implementations§

Source§

impl BitAnd for FeatureFlags

Source§

type Output = FeatureFlags

The resulting type after applying the & operator.
Source§

fn bitand(self, rhs: Self) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAndAssign for FeatureFlags

Source§

fn bitand_assign(&mut self, rhs: Self)

Performs the &= operation. Read more
Source§

impl BitOr for FeatureFlags

Source§

type Output = FeatureFlags

The resulting type after applying the | operator.
Source§

fn bitor(self, rhs: Self) -> Self::Output

Performs the | operation. Read more
Source§

impl Clone for FeatureFlags

Source§

fn clone(&self) -> FeatureFlags

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FeatureFlags

Source§

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

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

impl Default for FeatureFlags

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl From<FeatureFlags> for u32

Source§

fn from(v: FeatureFlags) -> u32

Converts to this type from the input type.
Source§

impl From<u32> for FeatureFlags

Source§

fn from(v: u32) -> Self

Converts to this type from the input type.
Source§

impl FromBytes for FeatureFlags
where u32: FromBytes,

§

fn ref_from_bytes( source: &[u8], ) -> Result<&Self, ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, Infallible>>
where Self: KnownLayout + Immutable,

Interprets the given source as a &Self. Read more
§

fn ref_from_prefix( source: &[u8], ) -> Result<(&Self, &[u8]), ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, Infallible>>
where Self: KnownLayout + Immutable,

Interprets the prefix of the given source as a &Self without copying. Read more
§

fn ref_from_suffix( source: &[u8], ) -> Result<(&[u8], &Self), ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, Infallible>>
where Self: Immutable + KnownLayout,

Interprets the suffix of the given bytes as a &Self. Read more
§

fn mut_from_bytes( source: &mut [u8], ) -> Result<&mut Self, ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, Infallible>>
where Self: IntoBytes + KnownLayout,

Interprets the given source as a &mut Self. Read more
§

fn mut_from_prefix( source: &mut [u8], ) -> Result<(&mut Self, &mut [u8]), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, Infallible>>
where Self: IntoBytes + KnownLayout,

Interprets the prefix of the given source as a &mut Self without copying. Read more
§

fn mut_from_suffix( source: &mut [u8], ) -> Result<(&mut [u8], &mut Self), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, Infallible>>
where Self: IntoBytes + KnownLayout,

Interprets the suffix of the given source as a &mut Self without copying. Read more
§

fn read_from_bytes(source: &[u8]) -> Result<Self, SizeError<&[u8], Self>>
where Self: Sized,

Reads a copy of Self from the given source. Read more
§

fn read_from_prefix( source: &[u8], ) -> Result<(Self, &[u8]), SizeError<&[u8], Self>>
where Self: Sized,

Reads a copy of Self from the prefix of the given source. Read more
§

fn read_from_suffix( source: &[u8], ) -> Result<(&[u8], Self), SizeError<&[u8], Self>>
where Self: Sized,

Reads a copy of Self from the suffix of the given source. Read more
Source§

impl FromZeros for FeatureFlags
where u32: FromZeros,

§

fn zero(&mut self)

Overwrites self with zeros. Read more
§

fn new_zeroed() -> Self
where Self: Sized,

Creates an instance of Self from zeroed bytes. Read more
§

fn new_box_zeroed() -> Result<Box<Self>, AllocError>
where Self: Sized,

Creates a Box<Self> from zeroed bytes. Read more
§

fn new_vec_zeroed(len: usize) -> Result<Vec<Self>, AllocError>
where Self: Sized,

Creates a Vec<Self> from zeroed bytes. Read more
§

fn extend_vec_zeroed( v: &mut Vec<Self>, additional: usize, ) -> Result<(), AllocError>
where Self: Sized,

Extends a Vec<Self> by pushing additional new items onto the end of the vector. The new items are initialized with zeros.
§

fn insert_vec_zeroed( v: &mut Vec<Self>, position: usize, additional: usize, ) -> Result<(), AllocError>
where Self: Sized,

Inserts additional new items into Vec<Self> at position. The new items are initialized with zeros. Read more
Source§

impl Inspect for FeatureFlags

Source§

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

Inspects the object.
Source§

impl IntoBytes for FeatureFlags
where u32: IntoBytes,

§

fn as_bytes(&self) -> &[u8]
where Self: Immutable,

Gets the bytes of this value. Read more
§

fn as_mut_bytes(&mut self) -> &mut [u8]
where Self: FromBytes,

Gets the bytes of this value mutably. Read more
§

fn write_to(&self, dst: &mut [u8]) -> Result<(), SizeError<&Self, &mut [u8]>>
where Self: Immutable,

Writes a copy of self to dst. Read more
§

fn write_to_prefix( &self, dst: &mut [u8], ) -> Result<(), SizeError<&Self, &mut [u8]>>
where Self: Immutable,

Writes a copy of self to the prefix of dst. Read more
§

fn write_to_suffix( &self, dst: &mut [u8], ) -> Result<(), SizeError<&Self, &mut [u8]>>
where Self: Immutable,

Writes a copy of self to the suffix of dst. Read more
Source§

impl KnownLayout for FeatureFlags
where Self: Sized,

Source§

type PointerMetadata = ()

The type of metadata stored in a pointer to Self. Read more
Source§

impl PartialEq for FeatureFlags

Source§

fn eq(&self, other: &FeatureFlags) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl TryFromBytes for FeatureFlags
where u32: TryFromBytes,

§

fn try_ref_from_bytes( source: &[u8], ) -> Result<&Self, ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>
where Self: KnownLayout + Immutable,

Attempts to interpret the given source as a &Self. Read more
§

fn try_ref_from_prefix( source: &[u8], ) -> Result<(&Self, &[u8]), ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>
where Self: KnownLayout + Immutable,

Attempts to interpret the prefix of the given source as a &Self. Read more
§

fn try_ref_from_suffix( source: &[u8], ) -> Result<(&[u8], &Self), ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>
where Self: KnownLayout + Immutable,

Attempts to interpret the suffix of the given source as a &Self. Read more
§

fn try_mut_from_bytes( bytes: &mut [u8], ) -> Result<&mut Self, ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>
where Self: KnownLayout + IntoBytes,

Attempts to interpret the given source as a &mut Self without copying. Read more
§

fn try_mut_from_prefix( source: &mut [u8], ) -> Result<(&mut Self, &mut [u8]), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>
where Self: KnownLayout + IntoBytes,

Attempts to interpret the prefix of the given source as a &mut Self. Read more
§

fn try_mut_from_suffix( source: &mut [u8], ) -> Result<(&mut [u8], &mut Self), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>
where Self: KnownLayout + IntoBytes,

Attempts to interpret the suffix of the given source as a &mut Self. Read more
§

fn try_read_from_bytes( source: &[u8], ) -> Result<Self, ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>
where Self: Sized,

Attempts to read the given source as a Self. Read more
§

fn try_read_from_prefix( source: &[u8], ) -> Result<(Self, &[u8]), ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>
where Self: Sized,

Attempts to read a Self from the prefix of the given source. Read more
§

fn try_read_from_suffix( source: &[u8], ) -> Result<(&[u8], Self), ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>
where Self: Sized,

Attempts to read a Self from the suffix of the given source. Read more
Source§

impl Copy for FeatureFlags

Source§

impl Eq for FeatureFlags

Source§

impl Immutable for FeatureFlags
where u32: Immutable,

Source§

impl StructuralPartialEq for FeatureFlags

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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