aya: `impl AsFd for RingBuf`

This bound is needed for e.g. `smol::Async`.
reviewable/pr1288/r18
Tamir Duberstein 3 days ago
parent 9be2d723ce
commit 3f02127b6b
No known key found for this signature in database

@ -64,7 +64,7 @@ impl<T: BorrowMut<MapData>> AsFd for PerfEventArrayBuffer<T> {
impl<T: BorrowMut<MapData>> AsRawFd for PerfEventArrayBuffer<T> { impl<T: BorrowMut<MapData>> AsRawFd for PerfEventArrayBuffer<T> {
fn as_raw_fd(&self) -> RawFd { fn as_raw_fd(&self) -> RawFd {
self.buf.as_fd().as_raw_fd() self.as_fd().as_raw_fd()
} }
} }

@ -9,7 +9,7 @@ use std::{
fmt::{self, Debug, Formatter}, fmt::{self, Debug, Formatter},
mem, mem,
ops::Deref, ops::Deref,
os::fd::{AsFd as _, AsRawFd, BorrowedFd, RawFd}, os::fd::{AsFd, AsRawFd, BorrowedFd, RawFd},
sync::atomic::{AtomicU32, AtomicUsize, Ordering}, sync::atomic::{AtomicU32, AtomicUsize, Ordering},
}; };
@ -130,15 +130,20 @@ impl<T> RingBuf<T> {
} }
} }
/// Access to the RawFd can be used to construct an AsyncFd for use with epoll. impl<T: Borrow<MapData>> AsFd for RingBuf<T> {
impl<T: Borrow<MapData>> AsRawFd for RingBuf<T> { fn as_fd(&self) -> BorrowedFd<'_> {
fn as_raw_fd(&self) -> RawFd {
let Self { let Self {
map, map,
consumer: _, consumer: _,
producer: _, producer: _,
} = self; } = self;
map.borrow().fd().as_fd().as_raw_fd() map.borrow().fd().as_fd()
}
}
impl<T: Borrow<MapData>> AsRawFd for RingBuf<T> {
fn as_raw_fd(&self) -> RawFd {
self.as_fd().as_raw_fd()
} }
} }

Loading…
Cancel
Save