Struct KvmNestedStateBuffer

Source
#[non_exhaustive]
#[repr(C)]
pub struct KvmNestedStateBuffer { pub flags: u16, pub format: u16, pub size: u32, pub hdr: kvm_nested_state__bindgen_ty_1, pub data: kvm_nested_state__data, }
Expand description

A stack-allocated buffer for nested KVM state including the mandatory header with meta-information.

KVM uses a dynamically sized buffer structure (with a header reporting the size of the buffer/state). This helper type makes working with get_nested_state() and set_nested_state() significantly more convenient at the cost of a slightly higher memory footprint in some cases.

§Type Size

On Intel VMX, the actual state requires 128 + 8192 == 8320 bytes, on AMD SVM, the actual state requires 128 + 4096 == 4224 bytes. This type doesn’t make a differentiation and unifies the required memory. By sacrificing a few more bytes on VMX, this type is generally convenient to use.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§flags: u16§format: u16§size: u32§hdr: kvm_nested_state__bindgen_ty_1§data: kvm_nested_state__data

Implementations§

Source§

impl KvmNestedStateBuffer

Source

pub fn empty() -> KvmNestedStateBuffer

Creates a new empty buffer, ready for nested state to be stored in by KVM.

The size property will report the size of the buffer to KVM.

Trait Implementations§

Source§

impl Clone for KvmNestedStateBuffer

Source§

fn clone(&self) -> KvmNestedStateBuffer

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 Default for KvmNestedStateBuffer

Source§

fn default() -> KvmNestedStateBuffer

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

impl Copy for KvmNestedStateBuffer

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.

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.