Struct devices::virtio::vhost_user_backend::handler::DeviceRequestHandler    
source · pub struct DeviceRequestHandler<T: VhostUserDevice> {
    vrings: Vec<Vring>,
    owned: bool,
    vmm_maps: Option<Vec<MappingInfo>>,
    mem: Option<GuestMemory>,
    acked_features: u64,
    acked_protocol_features: VhostUserProtocolFeatures,
    backend: T,
    backend_req_connection: Option<VhostBackendReqConnection>,
    device_state_thread: Option<DeviceStateThread>,
}Expand description
An adapter that implements vmm_vhost::Backend for any type implementing VhostUserDevice.
Fields§
§vrings: Vec<Vring>§owned: bool§vmm_maps: Option<Vec<MappingInfo>>§mem: Option<GuestMemory>§acked_features: u64§acked_protocol_features: VhostUserProtocolFeatures§backend: T§backend_req_connection: Option<VhostBackendReqConnection>§device_state_thread: Option<DeviceStateThread>Implementations§
source§impl<T: VhostUserDevice> DeviceRequestHandler<T>
 
impl<T: VhostUserDevice> DeviceRequestHandler<T>
sourcefn all_queues_stopped(&self) -> bool
 
fn all_queues_stopped(&self) -> bool
Check if all queues are stopped.
The device can be suspended with enter_suspended_state() only when all queues are stopped.
Trait Implementations§
source§impl<T: VhostUserDevice> AsMut<T> for DeviceRequestHandler<T>
 
impl<T: VhostUserDevice> AsMut<T> for DeviceRequestHandler<T>
source§impl<T: VhostUserDevice> AsRef<T> for DeviceRequestHandler<T>
 
impl<T: VhostUserDevice> AsRef<T> for DeviceRequestHandler<T>
source§impl<T: VhostUserDevice> Backend for DeviceRequestHandler<T>
 
impl<T: VhostUserDevice> Backend for DeviceRequestHandler<T>
fn set_owner(&mut self) -> VhostResult<()>
fn reset_owner(&mut self) -> VhostResult<()>
fn get_features(&mut self) -> VhostResult<u64>
fn set_features(&mut self, features: u64) -> VhostResult<()>
fn get_protocol_features(&mut self) -> VhostResult<VhostUserProtocolFeatures>
fn set_protocol_features(&mut self, features: u64) -> VhostResult<()>
fn set_mem_table( &mut self, contexts: &[VhostUserMemoryRegion], files: Vec<File>, ) -> VhostResult<()>
fn get_queue_num(&mut self) -> VhostResult<u64>
fn set_vring_num(&mut self, index: u32, num: u32) -> VhostResult<()>
fn set_vring_addr( &mut self, index: u32, _flags: VhostUserVringAddrFlags, descriptor: u64, used: u64, available: u64, _log: u64, ) -> VhostResult<()>
fn set_vring_base(&mut self, index: u32, base: u32) -> VhostResult<()>
fn get_vring_base(&mut self, index: u32) -> VhostResult<VhostUserVringState>
fn set_vring_kick(&mut self, index: u8, file: Option<File>) -> VhostResult<()>
fn set_vring_call(&mut self, index: u8, file: Option<File>) -> VhostResult<()>
fn set_vring_err(&mut self, _index: u8, _fd: Option<File>) -> VhostResult<()>
fn set_vring_enable(&mut self, index: u32, enable: bool) -> VhostResult<()>
fn get_config( &mut self, offset: u32, size: u32, _flags: VhostUserConfigFlags, ) -> VhostResult<Vec<u8>>
fn set_config( &mut self, offset: u32, buf: &[u8], _flags: VhostUserConfigFlags, ) -> VhostResult<()>
fn set_backend_req_fd(&mut self, ep: Connection<BackendReq>)
fn get_inflight_fd( &mut self, _inflight: &VhostUserInflight, ) -> VhostResult<(VhostUserInflight, File)>
fn set_inflight_fd( &mut self, _inflight: &VhostUserInflight, _file: File, ) -> VhostResult<()>
fn get_max_mem_slots(&mut self) -> VhostResult<u64>
fn add_mem_region( &mut self, _region: &VhostUserSingleMemoryRegion, _fd: File, ) -> VhostResult<()>
fn remove_mem_region( &mut self, _region: &VhostUserSingleMemoryRegion, ) -> VhostResult<()>
fn set_device_state_fd( &mut self, transfer_direction: VhostUserTransferDirection, migration_phase: VhostUserMigrationPhase, fd: File, ) -> VhostResult<Option<File>>
fn check_device_state(&mut self) -> VhostResult<()>
source§impl<T: VhostUserDevice> Drop for DeviceRequestHandler<T>
 
impl<T: VhostUserDevice> Drop for DeviceRequestHandler<T>
Auto Trait Implementations§
impl<T> Freeze for DeviceRequestHandler<T>where
    T: Freeze,
impl<T> !RefUnwindSafe for DeviceRequestHandler<T>
impl<T> Send for DeviceRequestHandler<T>where
    T: Send,
impl<T> Sync for DeviceRequestHandler<T>where
    T: Sync,
impl<T> Unpin for DeviceRequestHandler<T>where
    T: Unpin,
impl<T> !UnwindSafe for DeviceRequestHandler<T>
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> Downcast for Twhere
    T: Any,
 
impl<T> Downcast for Twhere
    T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
 
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert 
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
 
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert 
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
 
fn as_any(&self) -> &(dyn Any + 'static)
Convert 
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
 
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert 
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.