| 37 | } |
| 38 | |
| 39 | fn register_ring(fd: BorrowedFd<'_>) -> Result<BorrowedFd<'_>> { |
| 40 | let mut update = io_uring_rsrc_update::default(); |
| 41 | update.data = io_uring_ptr::new(fd.as_raw_fd() as usize as *mut c_void); |
| 42 | update.offset = u32::MAX; |
| 43 | |
| 44 | do_register( |
| 45 | fd, |
| 46 | false, |
| 47 | IoringRegisterOp::RegisterRingFds, |
| 48 | (&mut update as *mut io_uring_rsrc_update).cast::<c_void>(), |
| 49 | 1, |
| 50 | )?; |
| 51 | |
| 52 | let registered_fd = unsafe { BorrowedFd::borrow_raw(update.offset as i32) }; |
| 53 | Ok(registered_fd) |
| 54 | } |
| 55 | |
| 56 | fn unregister_ring<FD>(fd: FD) -> Result<()> |
| 57 | where |