Enum crosvm::crosvm::plugin::PluginObject
source · enum PluginObject {
IoEvent {
evt: Event,
addr: IoeventAddress,
length: u32,
datamatch: u64,
},
Memory {
slot: u32,
length: usize,
},
IrqEvent {
irq_id: u32,
evt: Event,
},
}
Expand description
Each PluginObject
represents one object that was instantiated by the guest using the Create
request.
Each such object has an ID associated with it that exists in an ID space shared by every variant
of PluginObject
. This allows all the objects to be indexed in a single map, and allows for a
common destroy method.
In addition to the destory method, each object may have methods specific to its variant type.
These variant methods must be done by matching the variant to the expected type for that method.
For example, getting the dirty log from a Memory
object starting with an ID:
ⓘ
match objects.get(&request_id) {
Some(&PluginObject::Memory { slot, length }) => vm.get_dirty_log(slot, &mut dirty_log[..]),
_ => return Err(SysError::new(ENOENT)),
}
Variants§
Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for PluginObject
impl Send for PluginObject
impl Sync for PluginObject
impl Unpin for PluginObject
impl UnwindSafe for PluginObject
Blanket Implementations§
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, 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>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
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.