0 | module System.Linux.Epoll.Struct
3 | import Derive.Prelude
5 | import System.Linux.Epoll.Flags
6 | import System.Posix.File.FileDesc
7 | import System.Posix.File.ReadRes
8 | import public System.Posix.Poll.Struct
11 | %language ElabReflection
13 | %foreign "C:get_epoll_event_events, linux-idris"
14 | prim__get_epoll_event_events : AnyPtr -> PrimIO Bits32
16 | %foreign "C:get_epoll_event_fd, linux-idris"
17 | prim__get_epoll_event_fd : AnyPtr -> PrimIO Bits32
22 | record Epollfd where
27 | Cast Epollfd Fd where cast = MkFd . fd
30 | Cast CInt Epollfd where cast = EFD . cast
34 | record SSEpollEvent (s : Type) where
39 | Struct SSEpollEvent where
44 | 0 SEpollEvent : Type
45 | SEpollEvent = SSEpollEvent World
48 | SizeOf (SSEpollEvent s) where sizeof_ = epoll_event_size
51 | pollPair : SSEpollEvent s -> F1 s PollPair
53 | let fd # t := ffi (prim__get_epoll_event_fd p) t
54 | ev # t := ffi (prim__get_epoll_event_events p) t
55 | in PP (cast fd) (PE ev) # t
57 | export %inline %hint
58 | convEpollEvent : Convert PollPair
59 | convEpollEvent = convStruct SSEpollEvent pollPair