(
&mut self,
_helper: &mut EpollHelper,
event: &epoll::Event,
)
| 234 | |
| 235 | impl 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 | |
| 268 | pub struct Pmem { |
nothing calls this directly
no test coverage detected