There is little benefit to using epoll_create1 (especially if we still
have the epoll_create code too), and it cuases problems if people build
a GHC binary on one machine and try to use it on another.
import GHC.Real (ceiling, fromIntegral)
import GHC.Show (Show)
import System.Posix.Internals (c_close)
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)
import System.Posix.Internals (setCloseOnExec)
import System.Posix.Types (Fd(..))
import qualified System.Event.Array as A
import System.Posix.Types (Fd(..))
import qualified System.Event.Array as A
epollCreate :: IO EPollFd
epollCreate = do
fd <- throwErrnoIfMinus1 "epollCreate" $
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
c_epoll_create 256 -- argument is ignored
setCloseOnExec fd
let !epollFd' = EPollFd fd
return epollFd'
let !epollFd' = EPollFd fd
return epollFd'
fromTimeout Forever = -1
fromTimeout (Timeout s) = ceiling $ 1000 * s
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
foreign import ccall unsafe "sys/epoll.h epoll_create"
c_epoll_create :: CInt -> IO CInt
foreign import ccall unsafe "sys/epoll.h epoll_ctl"
c_epoll_ctl :: CInt -> CInt -> CInt -> Ptr Event -> IO CInt
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([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])