From 10d51f6351a454c0eac0758a22c77dc27a76a33f Mon Sep 17 00:00:00 2001 From: William Rusnack Date: Sun, 4 Dec 2022 18:13:22 -0500 Subject: [PATCH 1/5] allow newer base version --- kqueue.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kqueue.cabal b/kqueue.cabal index 7e0cc97..c01799b 100644 --- a/kqueue.cabal +++ b/kqueue.cabal @@ -21,7 +21,7 @@ Library Hs-Source-Dirs: src Exposed-modules: System.KQueue System.KQueue.HighLevel - Build-depends: base >= 4.0 && < 4.15 + Build-depends: base >= 4.0 && < 5 , directory >= 1.0 && < 1.4 , filepath >= 1.1 && < 1.5 , mtl >= 1.1 && < 2.3 From 227a0c4090ce84499bb7c7b0f5b57681d5d624b7 Mon Sep 17 00:00:00 2001 From: William Rusnack Date: Sun, 4 Dec 2022 18:50:05 -0500 Subject: [PATCH 2/5] included sys/types.h --- src/System/KQueue.chs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/System/KQueue.chs b/src/System/KQueue.chs index b3fc2ec..0dbdb74 100644 --- a/src/System/KQueue.chs +++ b/src/System/KQueue.chs @@ -19,6 +19,7 @@ module System.KQueue , KQueueException ) where +#include #include #include From 29170b5da3249945e6b07720312ec3e94dbb4e3b Mon Sep 17 00:00:00 2001 From: William Rusnack Date: Mon, 5 Dec 2022 10:42:47 -0500 Subject: [PATCH 3/5] changes for compiling on OpenBSD --- src/System/KQueue.chs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/System/KQueue.chs b/src/System/KQueue.chs index 0dbdb74..61d15fd 100644 --- a/src/System/KQueue.chs +++ b/src/System/KQueue.chs @@ -56,6 +56,7 @@ import Foreign.C ( CInt (..) import Foreign.C ( CInt ) #endif import Foreign.C ( CLong + , CLLong , CTime , CULong ) @@ -77,7 +78,7 @@ data KEvent = KEvent , evfilter :: Filter -- ^ The kernel filter (type of event). , flags :: [Flag] -- ^ Actions to perform on the event. , fflags :: [FFlag] -- ^ Filter-specific flags. - , data_ :: CLong -- ^ Filter-specific data value. + , data_ :: CLLong -- ^ Filter-specific data value. , udata :: Ptr () -- ^ User-defined data, passed through unchanged. } deriving (Show, Eq) @@ -92,8 +93,9 @@ enum Filter , EvfiltProc = EVFILT_PROC , EvfiltSignal = EVFILT_SIGNAL , EvfiltTimer = EVFILT_TIMER -// Not on Mac OS X -// , EvfiltUser = EVFILT_USER +#ifdef EVFILT_USER + , EvfiltUser = EVFILT_USER +#endif }; #endc @@ -105,8 +107,9 @@ enum Flag { EvAdd = EV_ADD , EvEnable = EV_ENABLE , EvDisable = EV_DISABLE -// Not on Mac OS X -// , EvDispatch = EV_DISPATCH +#ifdef EV_DISPATCH + , EvDispatch = EV_DISPATCH +#endif , EvDelete = EV_DELETE , EvReceipt = EV_RECEIPT , EvOneshot = EV_ONESHOT @@ -128,13 +131,18 @@ enum FFlag , NoteLink = NOTE_LINK , NoteRename = NOTE_RENAME , NoteRevoke = NOTE_REVOKE -// Seems to have the same value as NoteDelete -// , NoteLowat = NOTE_LOWAT +#if NOTE_LOWA != NOTE_DELETE + , NoteLowat = NOTE_LOWAT +#endif , NoteExit = NOTE_EXIT , NoteFork = NOTE_FORK , NoteExec = NOTE_EXEC +#ifdef NOTE_SIGNAL , NoteSignal = NOTE_SIGNAL -// , NoteReap = NOTE_REAP +#endif +#ifdef NOTE_REAP + , NoteReap = NOTE_REAP +#endif }; #endc From 1089ecab8b0c170387f0be31d04c66cee595a963 Mon Sep 17 00:00:00 2001 From: William Rusnack Date: Mon, 5 Dec 2022 10:49:18 -0500 Subject: [PATCH 4/5] removed include sys/types.h --- src/System/KQueue.chs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/System/KQueue.chs b/src/System/KQueue.chs index 61d15fd..99ac1e9 100644 --- a/src/System/KQueue.chs +++ b/src/System/KQueue.chs @@ -19,7 +19,6 @@ module System.KQueue , KQueueException ) where -#include #include #include From c71b1ef6e2f41975dab1eaed39fb40e4d7e9b21f Mon Sep 17 00:00:00 2001 From: William Rusnack Date: Mon, 5 Dec 2022 11:21:30 -0500 Subject: [PATCH 5/5] fixed alignment to a power of two --- src/System/KQueue.chs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System/KQueue.chs b/src/System/KQueue.chs index 99ac1e9..fa33881 100644 --- a/src/System/KQueue.chs +++ b/src/System/KQueue.chs @@ -167,7 +167,7 @@ typedef struct kevent kevent_t; instance Storable KEvent where sizeOf _ = {#sizeof kevent_t #} - alignment _ = 24 + alignment _ = 32 peek e = KEvent <$> ({#get kevent_t->ident #} e) <*> fmap (toEnum . fromIntegral) ({#get kevent_t->filter #} e) <*> fmap (bitmaskToEnum . fromIntegral) ({#get kevent_t->flags #} e)