MCPcopy Create free account
hub / github.com/cloud-hypervisor/cloud-hypervisor / handle_event

Method handle_event

virtio-devices/src/iommu.rs:904–934  ·  view source on GitHub ↗
(
        &mut self,
        _helper: &mut EpollHelper,
        event: &epoll::Event,
    )

Source from the content-addressed store, hash-verified

902
903impl EpollHelperHandler for IommuEpollHandler {
904 fn handle_event(
905 &mut self,
906 _helper: &mut EpollHelper,
907 event: &epoll::Event,
908 ) -> result::Result<(), EpollHelperError> {
909 let ev_type = event.data as u16;
910 match ev_type {
911 REQUEST_Q_EVENT => {
912 self.request_queue_evt.read().map_err(|e| {
913 EpollHelperError::HandleEvent(anyhow!("Failed to get queue event: {e:?}"))
914 })?;
915
916 let needs_notification = self.request_queue().map_err(|e| {
917 EpollHelperError::HandleEvent(anyhow!(
918 "Failed to process request queue : {e:?}"
919 ))
920 })?;
921 if needs_notification {
922 self.signal_used_queue(0).map_err(|e| {
923 EpollHelperError::HandleEvent(anyhow!("Failed to signal used queue: {e:?}"))
924 })?;
925 }
926 }
927 _ => {
928 return Err(EpollHelperError::HandleEvent(anyhow!(
929 "Unexpected event: {ev_type}"
930 )));
931 }
932 }
933 Ok(())
934 }
935}
936
937#[derive(Clone, Copy, Debug, Serialize, Deserialize)]

Callers

nothing calls this directly

Calls 3

request_queueMethod · 0.80
readMethod · 0.45
signal_used_queueMethod · 0.45

Tested by

no test coverage detected