pub struct ProcessesGuard {
    pids: Vec<Pid>,
}
Expand description

Stops all the crosvm device processes during moving the guest memory to the staging memory.

While moving, we must guarantee that no one changes the guest memory contents. This supports devices in sandbox mode only.

We stop all the crosvm processes instead of the alternatives.

  • Just stop vCPUs
    • devices still may works in the child process and write something to the guest memory.
  • Use write protection of userfaultfd
    • UFFDIO_REGISTER_MODE_WP for shmem is WIP and not supported yet.
  • devices::Suspendable::sleep()
    • Suspendable is not supported by all devices yet.

Fields§

§pids: Vec<Pid>

Implementations§

source§

impl ProcessesGuard

source

fn stop_the_world(&self) -> Result<()>

Stops all the crosvm processes by sending SIGSTOP signal.

source

fn continue_the_world(&self)

Resumes all the crosvm processes by sending SIGCONT signal.

Trait Implementations§

source§

impl Drop for ProcessesGuard

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

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> 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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.