import GHC.Real (ceiling, fromIntegral)
import GHC.Show (Show)
import System.Posix.Internals (c_close)
-#if !defined(HAVE_EPOLL_CREATE1)
import System.Posix.Internals (setCloseOnExec)
-#endif
import System.Posix.Types (Fd(..))
import qualified System.Event.Array as A
epollCreate :: IO EPollFd
epollCreate = do
fd <- throwErrnoIfMinus1 "epollCreate" $
-#if defined(HAVE_EPOLL_CREATE1)
- c_epoll_create1 (#const EPOLL_CLOEXEC)
-#else
c_epoll_create 256 -- argument is ignored
setCloseOnExec fd
-#endif
let !epollFd' = EPollFd fd
return epollFd'
fromTimeout Forever = -1
fromTimeout (Timeout s) = ceiling $ 1000 * s
-#if defined(HAVE_EPOLL_CREATE1)
-foreign import ccall unsafe "sys/epoll.h epoll_create1"
- c_epoll_create1 :: CInt -> IO CInt
-#else
foreign import ccall unsafe "sys/epoll.h epoll_create"
c_epoll_create :: CInt -> IO CInt
-#endif
foreign import ccall unsafe "sys/epoll.h epoll_ctl"
c_epoll_ctl :: CInt -> CInt -> CInt -> Ptr Event -> IO CInt
AC_CHECK_FUNCS([getclock getrusage times])
AC_CHECK_FUNCS([_chsize ftruncate])
-AC_CHECK_FUNCS([epoll_create1 epoll_ctl eventfd kevent kevent64 kqueue poll])
+AC_CHECK_FUNCS([epoll_ctl eventfd kevent kevent64 kqueue poll])
# event-related fun