pub struct VirtioMem { /* private fields */ }Implementations§
Source§impl VirtioMem
impl VirtioMem
pub fn new( vm: Arc<Vm>, addr: GuestAddress, total_size_mib: usize, block_size_mib: usize, slot_size_mib: usize, ) -> Result<Self, VirtioMemError>
pub fn from_state( vm: Arc<Vm>, queues: Vec<Queue>, config: virtio_mem_config, slot_size: usize, plugged_blocks: BitVec, ) -> Result<Self, VirtioMemError>
pub fn id(&self) -> &str
pub fn guest_address(&self) -> GuestAddress
Sourcepub fn total_size_mib(&self) -> usize
pub fn total_size_mib(&self) -> usize
Gets the total hotpluggable size.
Sourcepub fn block_size_mib(&self) -> usize
pub fn block_size_mib(&self) -> usize
Gets the block size.
Sourcepub fn slot_size_mib(&self) -> usize
pub fn slot_size_mib(&self) -> usize
Gets the block size.
Sourcepub fn plugged_size_mib(&self) -> usize
pub fn plugged_size_mib(&self) -> usize
Gets the total size of the plugged memory blocks.
Sourcepub fn requested_size_mib(&self) -> usize
pub fn requested_size_mib(&self) -> usize
Gets the requested size
pub fn status(&self) -> VirtioMemStatus
pub fn process_virtio_queues(&mut self) -> Result<(), VirtioMemError>
Sourcepub fn update_requested_size(
&mut self,
requested_size_mib: usize,
) -> Result<(), VirtioMemError>
pub fn update_requested_size( &mut self, requested_size_mib: usize, ) -> Result<(), VirtioMemError>
Updates the requested size of the virtio-mem device.
Trait Implementations§
Source§impl Persist<'_> for VirtioMem
impl Persist<'_> for VirtioMem
Source§type State = VirtioMemState
type State = VirtioMemState
The type of the object representing the state of the component.
Source§type ConstructorArgs = VirtioMemConstructorArgs
type ConstructorArgs = VirtioMemConstructorArgs
The type of the object holding the constructor arguments.
Source§type Error = VirtioMemPersistError
type Error = VirtioMemPersistError
The type of the error that can occur while constructing the object.
Source§impl VirtioDevice for VirtioMem
impl VirtioDevice for VirtioMem
Source§fn const_device_type() -> u32
fn const_device_type() -> u32
The virtio device type (as a constant of the struct).
Source§fn device_type(&self) -> u32
fn device_type(&self) -> u32
The virtio device type. Read more
Source§fn queues_mut(&mut self) -> &mut [Queue]
fn queues_mut(&mut self) -> &mut [Queue]
Returns a mutable reference to the device queues.
Source§fn queue_events(&self) -> &[EventFd]
fn queue_events(&self) -> &[EventFd]
Returns the device queues event fds.
fn interrupt_trigger(&self) -> &dyn VirtioInterrupt
Source§fn avail_features(&self) -> u64
fn avail_features(&self) -> u64
Get the available features offered by device.
Source§fn acked_features(&self) -> u64
fn acked_features(&self) -> u64
Get acknowledged features of the driver.
Source§fn set_acked_features(&mut self, acked_features: u64)
fn set_acked_features(&mut self, acked_features: u64)
Set acknowledged features of the driver.
This function must maintain the following invariant: Read more
Source§fn read_config(&self, offset: u64, data: &mut [u8])
fn read_config(&self, offset: u64, data: &mut [u8])
Reads this device configuration space at
offset.Source§fn write_config(&mut self, offset: u64, _data: &[u8])
fn write_config(&mut self, offset: u64, _data: &[u8])
Writes to this device configuration space at
offset.Source§fn is_activated(&self) -> bool
fn is_activated(&self) -> bool
Checks if the resources of this device are activated.
Source§fn activate(
&mut self,
mem: GuestMemoryMmap,
interrupt: Arc<dyn VirtioInterrupt>,
) -> Result<(), ActivateError>
fn activate( &mut self, mem: GuestMemoryMmap, interrupt: Arc<dyn VirtioInterrupt>, ) -> Result<(), ActivateError>
Performs the formal activation for a device, which can be verified also with
is_activated.Source§fn has_feature(&self, feature: u64) -> bool
fn has_feature(&self, feature: u64) -> bool
Check if virtio device has negotiated given feature.
Source§fn interrupt_status(&self) -> Arc<AtomicU32>
fn interrupt_status(&self) -> Arc<AtomicU32>
Returns the current device interrupt status.
Source§fn avail_features_by_page(&self, page: u32) -> u32
fn avail_features_by_page(&self, page: u32) -> u32
The set of feature bits shifted by
page * 32.Source§fn ack_features_by_page(&mut self, page: u32, value: u32)
fn ack_features_by_page(&mut self, page: u32, value: u32)
Acknowledges that this set of features should be enabled.
Source§fn reset(&mut self) -> Option<(Arc<dyn VirtioInterrupt>, Vec<EventFd>)>
fn reset(&mut self) -> Option<(Arc<dyn VirtioInterrupt>, Vec<EventFd>)>
Optionally deactivates this device and returns ownership of the guest memory map, interrupt
event, and queue events.
Source§fn mark_queue_memory_dirty(
&mut self,
mem: &GuestMemoryMmap,
) -> Result<(), QueueError>
fn mark_queue_memory_dirty( &mut self, mem: &GuestMemoryMmap, ) -> Result<(), QueueError>
Mark pages used by queues as dirty.
Source§fn as_cow_file_engine(&self) -> Option<&CowFileEngine>
fn as_cow_file_engine(&self) -> Option<&CowFileEngine>
Returns a COW file engine if the device exposes one (NYX extension).
Source§fn nyx_handle_queue_event(&mut self, _queue_index: u16)
fn nyx_handle_queue_event(&mut self, _queue_index: u16)
Handle a queue notification from an MMIO write (NYX extension).
Auto Trait Implementations§
impl Freeze for VirtioMem
impl !RefUnwindSafe for VirtioMem
impl Send for VirtioMem
impl !Sync for VirtioMem
impl Unpin for VirtioMem
impl !UnwindSafe for VirtioMem
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
Mutably borrows from an owned value. Read more
§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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Formats each item in a sequence. Read more
§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,
Pipes by value. This is generally the method you want to use. Read more
§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,
Borrows
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,
Mutably borrows
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
Borrows
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
Mutably borrows
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
Borrows
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
Immutable access to the
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
Mutable access to the
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
Immutable access to the
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
Mutable access to the
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
Immutable access to the
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
Mutable access to the
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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.tap_deref() only in debug builds, and is erased in release
builds.