struct GpuBackend {
    ex: Executor,
    gpu: Rc<RefCell<Gpu>>,
    resource_bridges: Arc<Mutex<Vec<Tube>>>,
    acked_protocol_features: u64,
    state: Option<Rc<RefCell<Frontend>>>,
    fence_state: Arc<Mutex<FenceState>>,
    queue_workers: [Option<WorkerState<Arc<Mutex<Queue>>, ()>>; 2],
    platform_workers: Rc<RefCell<Vec<TaskHandle<()>>>>,
    shmem_mapper: Arc<Mutex<Option<Box<dyn SharedMemoryMapper>>>>,
}

Fields§

§ex: Executor§gpu: Rc<RefCell<Gpu>>§resource_bridges: Arc<Mutex<Vec<Tube>>>§acked_protocol_features: u64§state: Option<Rc<RefCell<Frontend>>>§fence_state: Arc<Mutex<FenceState>>§queue_workers: [Option<WorkerState<Arc<Mutex<Queue>>, ()>>; 2]§platform_workers: Rc<RefCell<Vec<TaskHandle<()>>>>§shmem_mapper: Arc<Mutex<Option<Box<dyn SharedMemoryMapper>>>>

Implementations§

source§

impl GpuBackend

source

pub fn start_platform_workers(&mut self, _interrupt: Interrupt) -> Result<()>

Trait Implementations§

source§

impl Drop for GpuBackend

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl VhostUserDevice for GpuBackend

source§

fn max_queue_num(&self) -> usize

The maximum number of queues that this backend can manage.
source§

fn features(&self) -> u64

The set of feature bits that this backend supports.
source§

fn ack_features(&mut self, value: u64) -> Result<()>

Acknowledges that this set of features should be enabled.
source§

fn acked_features(&self) -> u64

Returns the set of enabled features.
source§

fn protocol_features(&self) -> VhostUserProtocolFeatures

The set of protocol feature bits that this backend supports.
source§

fn ack_protocol_features(&mut self, features: u64) -> Result<()>

Acknowledges that this set of protocol features should be enabled.
source§

fn acked_protocol_features(&self) -> u64

Returns the set of enabled protocol features.
source§

fn read_config(&self, offset: u64, dst: &mut [u8])

Reads this device configuration space at offset.
source§

fn write_config(&self, offset: u64, data: &[u8])

writes data to this device’s configuration space at offset.
source§

fn start_queue( &mut self, idx: usize, queue: Queue, mem: GuestMemory, doorbell: Interrupt ) -> Result<()>

Indicates that the backend should start processing requests for virtio queue number idx. This method must not block the current thread so device backends should either spawn an async task or another thread to handle messages from the Queue.
source§

fn stop_queue(&mut self, idx: usize) -> Result<Queue>

Indicates that the backend should stop processing requests for virtio queue number idx. This method should return the queue passed to start_queue for the corresponding idx. This method will only be called for queues that were previously started by start_queue.
source§

fn stop_non_queue_workers(&mut self) -> Result<()>

Used to stop non queue workers that VhostUserDevice::stop_queue can’t stop. May or may not also stop all queue workers.
source§

fn reset(&mut self)

Resets the vhost-user backend.
source§

fn get_shared_memory_region(&self) -> Option<SharedMemoryRegion>

Returns the device’s shared memory region if present.
source§

fn set_backend_req_connection(&mut self, conn: Arc<VhostBackendReqConnection>)

Accepts VhostBackendReqConnection to conduct Vhost backend to frontend message handling. Read more
source§

fn snapshot(&self) -> Result<Vec<u8>>

Snapshot device and return serialized bytes.
source§

fn restore(&mut self, data: Vec<u8>) -> Result<()>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for Twhere T: Any,

§

fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>

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, Global>) -> Rc<dyn Any, Global>

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)

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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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 Twhere 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 Twhere 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.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V