pub struct Vmm {
pub instance_info: InstanceInfo,
pub vm: Arc<Vm>,
pub vcpus_handles: Vec<VcpuHandle>,
pub device_manager: DeviceManager,
/* private fields */
}Expand description
Contains the state and associated methods required for the Firecracker VMM.
Fields§
§instance_info: InstanceInfoThe InstanceInfo state of this Vmm.
vm: Arc<Vm>VM object
vcpus_handles: Vec<VcpuHandle>Handles to the vcpu threads with vcpu_fds inside them.
device_manager: DeviceManagerImplementations§
Source§impl Vmm
impl Vmm
Sourcepub fn instance_info(&self) -> InstanceInfo
pub fn instance_info(&self) -> InstanceInfo
Gets Vmm instance info.
Sourcepub fn shutdown_exit_code(&self) -> Option<FcExitCode>
pub fn shutdown_exit_code(&self) -> Option<FcExitCode>
Provides the Vmm shutdown exit code if there is one.
Sourcepub fn clear_shutdown_exit_code(&mut self)
pub fn clear_shutdown_exit_code(&mut self)
Clears any shutdown exit code and returns the VM to a paused state.
Sourcepub fn start_vcpus(
&mut self,
vcpus: Vec<Vcpu>,
vcpu_seccomp_filter: Arc<BpfProgram>,
) -> Result<(), StartVcpusError>
pub fn start_vcpus( &mut self, vcpus: Vec<Vcpu>, vcpu_seccomp_filter: Arc<BpfProgram>, ) -> Result<(), StartVcpusError>
Starts the microVM vcpus.
§Errors
When:
- [
vmm::VmmEventsObserver::on_vmm_boot] errors. - [
vmm::vstate::vcpu::Vcpu::start_threaded] errors.
Sourcepub fn send_ctrl_alt_del(&mut self) -> Result<(), VmmError>
pub fn send_ctrl_alt_del(&mut self) -> Result<(), VmmError>
Injects CTRL+ALT+DEL keystroke combo in the i8042 device.
Sourcepub fn save_state(
&mut self,
vm_info: &VmInfo,
) -> Result<MicrovmState, MicrovmStateError>
pub fn save_state( &mut self, vm_info: &VmInfo, ) -> Result<MicrovmState, MicrovmStateError>
Saves the state of a paused Microvm.
Sourcepub fn dump_cpu_config(
&mut self,
) -> Result<Vec<CpuConfiguration>, DumpCpuConfigError>
pub fn dump_cpu_config( &mut self, ) -> Result<Vec<CpuConfiguration>, DumpCpuConfigError>
Dumps CPU configuration.
Sourcepub fn update_block_device_path(
&mut self,
drive_id: &str,
path_on_host: String,
) -> Result<(), VmmError>
pub fn update_block_device_path( &mut self, drive_id: &str, path_on_host: String, ) -> Result<(), VmmError>
Updates the path of the host file backing the emulated block device with id drive_id.
We update the disk image on the device and its virtio configuration.
Sourcepub fn update_block_rate_limiter(
&mut self,
drive_id: &str,
rl_bytes: BucketUpdate,
rl_ops: BucketUpdate,
) -> Result<(), VmmError>
pub fn update_block_rate_limiter( &mut self, drive_id: &str, rl_bytes: BucketUpdate, rl_ops: BucketUpdate, ) -> Result<(), VmmError>
Updates the rate limiter parameters for block device with drive_id id.
Sourcepub fn update_vhost_user_block_config(
&mut self,
drive_id: &str,
) -> Result<(), VmmError>
pub fn update_vhost_user_block_config( &mut self, drive_id: &str, ) -> Result<(), VmmError>
Updates the rate limiter parameters for block device with drive_id id.
Sourcepub fn update_net_rate_limiters(
&mut self,
net_id: &str,
rx_bytes: BucketUpdate,
rx_ops: BucketUpdate,
tx_bytes: BucketUpdate,
tx_ops: BucketUpdate,
) -> Result<(), VmmError>
pub fn update_net_rate_limiters( &mut self, net_id: &str, rx_bytes: BucketUpdate, rx_ops: BucketUpdate, tx_bytes: BucketUpdate, tx_ops: BucketUpdate, ) -> Result<(), VmmError>
Updates the rate limiter parameters for net device with net_id id.
Sourcepub fn balloon_config(&self) -> Result<BalloonConfig, VmmError>
pub fn balloon_config(&self) -> Result<BalloonConfig, VmmError>
Returns a reference to the balloon device if present.
Sourcepub fn latest_balloon_stats(&self) -> Result<BalloonStats, VmmError>
pub fn latest_balloon_stats(&self) -> Result<BalloonStats, VmmError>
Returns the latest balloon statistics if they are enabled.
Sourcepub fn update_balloon_config(&mut self, amount_mib: u32) -> Result<(), VmmError>
pub fn update_balloon_config(&mut self, amount_mib: u32) -> Result<(), VmmError>
Updates configuration for the balloon device target size.
Sourcepub fn update_balloon_stats_config(
&mut self,
stats_polling_interval_s: u16,
) -> Result<(), VmmError>
pub fn update_balloon_stats_config( &mut self, stats_polling_interval_s: u16, ) -> Result<(), VmmError>
Updates configuration for the balloon device as described in balloon_stats_update.
Sourcepub fn memory_hotplug_status(&self) -> Result<VirtioMemStatus, VmmError>
pub fn memory_hotplug_status(&self) -> Result<VirtioMemStatus, VmmError>
Returns the current state of the memory hotplug device.
Sourcepub fn update_memory_hotplug_size(
&self,
requested_size_mib: usize,
) -> Result<(), VmmError>
pub fn update_memory_hotplug_size( &self, requested_size_mib: usize, ) -> Result<(), VmmError>
Returns the current state of the memory hotplug device.
Sourcepub fn start_balloon_hinting(
&mut self,
cmd: StartHintingCmd,
) -> Result<(), VmmError>
pub fn start_balloon_hinting( &mut self, cmd: StartHintingCmd, ) -> Result<(), VmmError>
Starts the balloon free page hinting run
Sourcepub fn get_balloon_hinting_status(&mut self) -> Result<HintingStatus, VmmError>
pub fn get_balloon_hinting_status(&mut self) -> Result<HintingStatus, VmmError>
Retrieves the status of the balloon hinting run
Sourcepub fn stop_balloon_hinting(&mut self) -> Result<(), VmmError>
pub fn stop_balloon_hinting(&mut self) -> Result<(), VmmError>
Stops the balloon free page hinting run
Sourcepub fn stop(&mut self, exit_code: FcExitCode)
pub fn stop(&mut self, exit_code: FcExitCode)
Signals Vmm to stop and exit.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Vmm
impl !RefUnwindSafe for Vmm
impl Send for Vmm
impl !Sync for Vmm
impl Unpin for Vmm
impl !UnwindSafe for Vmm
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
§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,
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,
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,
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,
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,
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,
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,
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,
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,
§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,
§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,
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,
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
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
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
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
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
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
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
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
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
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
.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
.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
.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
.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
.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
.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
.tap_deref() only in debug builds, and is erased in release
builds.