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

Method handle_event

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

Source from the content-addressed store, hash-verified

234
235impl EpollHelperHandler for PmemEpollHandler {
236 fn handle_event(
237 &mut self,
238 _helper: &mut EpollHelper,
239 event: &epoll::Event,
240 ) -> result::Result<(), EpollHelperError> {
241 let ev_type = event.data as u16;
242 match ev_type {
243 QUEUE_AVAIL_EVENT => {
244 self.queue_evt.read().map_err(|e| {
245 EpollHelperError::HandleEvent(anyhow!("Failed to get queue event: {e:?}"))
246 })?;
247
248 let needs_notification = self.process_queue().map_err(|e| {
249 EpollHelperError::HandleEvent(anyhow!("Failed to process queue : {e:?}"))
250 })?;
251
252 if needs_notification {
253 self.signal_used_queue().map_err(|e| {
254 EpollHelperError::HandleEvent(anyhow!("Failed to signal used queue: {e:?}"))
255 })?;
256 }
257 }
258 _ => {
259 return Err(EpollHelperError::HandleEvent(anyhow!(
260 "Unexpected event: {ev_type}"
261 )));
262 }
263 }
264 Ok(())
265 }
266}
267
268pub struct Pmem {

Callers

nothing calls this directly

Calls 3

readMethod · 0.45
process_queueMethod · 0.45
signal_used_queueMethod · 0.45

Tested by

no test coverage detected