(
&mut self,
_helper: &mut EpollHelper,
event: &epoll::Event,
)
| 671 | |
| 672 | impl EpollHelperHandler for MemEpollHandler { |
| 673 | fn handle_event( |
| 674 | &mut self, |
| 675 | _helper: &mut EpollHelper, |
| 676 | event: &epoll::Event, |
| 677 | ) -> result::Result<(), EpollHelperError> { |
| 678 | let ev_type = event.data as u16; |
| 679 | match ev_type { |
| 680 | QUEUE_AVAIL_EVENT => { |
| 681 | self.queue_evt.read().map_err(|e| { |
| 682 | EpollHelperError::HandleEvent(anyhow!("Failed to get queue event: {e:?}")) |
| 683 | })?; |
| 684 | |
| 685 | let needs_notification = self.process_queue().map_err(|e| { |
| 686 | EpollHelperError::HandleEvent(anyhow!("Failed to process queue : {e:?}")) |
| 687 | })?; |
| 688 | if needs_notification { |
| 689 | self.signal(VirtioInterruptType::Queue(0)).map_err(|e| { |
| 690 | EpollHelperError::HandleEvent(anyhow!("Failed to signal used queue: {e:?}")) |
| 691 | })?; |
| 692 | } |
| 693 | } |
| 694 | _ => { |
| 695 | return Err(EpollHelperError::HandleEvent(anyhow!( |
| 696 | "Unexpected event: {ev_type}" |
| 697 | ))); |
| 698 | } |
| 699 | } |
| 700 | Ok(()) |
| 701 | } |
| 702 | } |
| 703 | |
| 704 | #[derive(PartialEq, Eq, PartialOrd, Ord)] |
nothing calls this directly
no test coverage detected