Skip to main content

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}