relibc/platform/pal/epoll.rs
1use crate::{
2 error::Result,
3 header::{bits_sigset_t::sigset_t, sys_epoll::epoll_event},
4 platform::{Pal, types::c_int},
5};
6
7/// Platform abstraction for `epoll` functionality.
8pub trait PalEpoll: Pal {
9 /// Platform implementation of [`epoll_create1()`](crate::header::sys_epoll::epoll_create1) from [`sys/epoll.h`](crate::header::sys_epoll).
10 fn epoll_create1(flags: c_int) -> Result<c_int>;
11
12 /// Platform implementation of [`epoll_ctl()`](crate::header::sys_epoll::epoll_ctl) from [`sys/epoll.h`](crate::header::sys_epoll).
13 unsafe fn epoll_ctl(epfd: c_int, op: c_int, fd: c_int, event: *mut epoll_event) -> Result<()>;
14
15 /// Platform implementation of [`epoll_pwait()`](crate::header::sys_epoll::epoll_pwait) from [`sys/epoll.h`](crate::header::sys_epoll).
16 unsafe fn epoll_pwait(
17 epfd: c_int,
18 events: *mut epoll_event,
19 maxevents: c_int,
20 timeout: c_int,
21 sigmask: *const sigset_t,
22 ) -> Result<usize>;
23}