1use crate::{bindings, const_conversions};
2use num_enum::{IntoPrimitive, TryFromPrimitive};
3
4bitflags::bitflags! {
5    #[derive(Copy, Clone, Debug, Default, Eq, PartialEq)]
7    pub struct EpollCreateFlags: i32 {
8        const EPOLL_CLOEXEC = const_conversions::i32_from_u32(bindings::LINUX_EPOLL_CLOEXEC);
9    }
10}
11
12#[derive(Debug, Copy, Clone, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)]
14#[repr(i32)]
15#[allow(non_camel_case_types)]
16pub enum EpollCtlOp {
17    EPOLL_CTL_ADD = const_conversions::i32_from_u32(bindings::LINUX_EPOLL_CTL_ADD),
18    EPOLL_CTL_MOD = const_conversions::i32_from_u32(bindings::LINUX_EPOLL_CTL_MOD),
19    EPOLL_CTL_DEL = const_conversions::i32_from_u32(bindings::LINUX_EPOLL_CTL_DEL),
20}
21
22bitflags::bitflags! {
23    #[derive(Copy, Clone, Debug, Default, Eq, PartialEq)]
27    pub struct EpollEvents: u32 {
28        const EPOLLIN = bindings::LINUX_EPOLLIN;
30        const EPOLLPRI = bindings::LINUX_EPOLLPRI;
32        const EPOLLOUT = bindings::LINUX_EPOLLOUT;
34        const EPOLLERR = bindings::LINUX_EPOLLERR;
36        const EPOLLHUP = bindings::LINUX_EPOLLHUP;
38        const EPOLLNVAL = bindings::LINUX_EPOLLNVAL;
40        const EPOLLRDNORM = bindings::LINUX_EPOLLRDNORM;
42        const EPOLLRDBAND = bindings::LINUX_EPOLLRDBAND;
44        const EPOLLWRNORM = bindings::LINUX_EPOLLWRNORM;
46        const EPOLLWRBAND = bindings::LINUX_EPOLLWRBAND;
48        const EPOLLMSG = bindings::LINUX_EPOLLMSG;
50        const EPOLLRDHUP = bindings::LINUX_EPOLLRDHUP;
52        const EPOLLEXCLUSIVE = bindings::LINUX_EPOLLEXCLUSIVE;
54        const EPOLLWAKEUP = bindings::LINUX_EPOLLWAKEUP;
56        const EPOLLONESHOT = bindings::LINUX_EPOLLONESHOT;
58        const EPOLLET = bindings::LINUX_EPOLLET;
60    }
61}
62
63#[allow(non_camel_case_types)]
65pub type epoll_event = crate::bindings::linux_epoll_event;
66unsafe impl shadow_pod::Pod for epoll_event {}