]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
Fixes for libev
authorWillem Toorop <willem@nlnetlabs.nl>
Thu, 10 Mar 2016 12:12:29 +0000 (12:12 +0000)
committerWillem Toorop <willem@nlnetlabs.nl>
Thu, 10 Mar 2016 12:12:29 +0000 (12:12 +0000)
git-svn-id: file:///svn/unbound/trunk@3656 be551aaa-1e26-0410-a405-d3ace91eadb9

util/ub_event.c
util/ub_event_pluggable.c

index c3d217f3180b676cc0a2a8430c0cc198858b6ba2..43498c22c0c2106934d46273c82a282246ada859 100644 (file)
 #  endif
 #endif /* USE_MINI_EVENT */
 
+#if UB_EV_TIMEOUT != EV_TIMEOUT || UB_EV_READ != EV_READ || \
+    UB_EV_WRITE != EV_WRITE || UB_EV_SIGNAL != EV_SIGNAL || \
+    UB_EV_PERSIST != EV_PERSIST 
+/* Only necessary for libev */ 
+#  define NATIVE_BITS(b) ( \
+         ((b) & UB_EV_TIMEOUT) ? EV_TIMEOUT : 0 \
+       | ((b) & UB_EV_READ   ) ? EV_READ    : 0 \
+       | ((b) & UB_EV_WRITE  ) ? EV_WRITE   : 0 \
+       | ((b) & UB_EV_SIGNAL ) ? EV_SIGNAL  : 0 \
+       | ((b) & UB_EV_PERSIST) ? EV_PERSIST : 0)
+#else 
+#  define NATIVE_BITS(b) (b)
+#endif
 
 #define AS_EVENT_BASE(x) \
        (((union {struct ub_event_base* a; struct event_base* b;})x).b)
@@ -205,7 +218,7 @@ ub_event_new(struct ub_event_base* base, int fd, short bits,
        if (!ev)
                return NULL;
 
-       event_set(ev, fd, bits, cb, arg);
+       event_set(ev, fd, NATIVE_BITS(bits), cb, arg);
        if (event_base_set(AS_EVENT_BASE(base), ev) != 0) {
                free(ev);
                return NULL;
@@ -257,13 +270,13 @@ ub_winsock_register_wsaevent(struct ub_event_base* base, void* wsaevent,
 void
 ub_event_add_bits(struct ub_event* ev, short bits)
 {
-       AS_EVENT(ev)->ev_events |= bits;
+       AS_EVENT(ev)->ev_events |= NATIVE_BITS(bits);
 }
 
 void
 ub_event_del_bits(struct ub_event* ev, short bits)
 {
-       AS_EVENT(ev)->ev_events &= ~bits;
+       AS_EVENT(ev)->ev_events &= ~NATIVE_BITS(bits);
 }
 
 void
@@ -295,7 +308,7 @@ int
 ub_timer_add(struct ub_event* ev, struct ub_event_base* base,
        void (*cb)(int, short, void*), void* arg, struct timeval* tv)
 {
-       event_set(AS_EVENT(ev), -1, UB_EV_TIMEOUT, cb, arg);
+       event_set(AS_EVENT(ev), -1, EV_TIMEOUT, cb, arg);
        if (event_base_set(AS_EVENT_BASE(base), AS_EVENT(ev)) != 0)
                return -1;
        return evtimer_add(AS_EVENT(ev), tv);
@@ -334,7 +347,7 @@ void
 ub_winsock_tcp_wouldblock(struct ub_event* ev, int eventbits)
 {
 #if defined(USE_MINI_EVENT) && defined(USE_WINSOCK)
-       winsock_tcp_wouldblock(AS_EVENT(ev), eventbits);
+       winsock_tcp_wouldblock(AS_EVENT(ev), NATIVE_BITS(eventbits));
 #else
        (void)ev;
        (void)eventbits;
index e7b6856f19e8830a57d1d6c38a5a0da885175635..c27e34ce1d487cc1a9a8c2848684fa2c5394faf3 100644 (file)
 #  endif
 #endif /* USE_MINI_EVENT */
 
+#if UB_EV_TIMEOUT != EV_TIMEOUT || UB_EV_READ != EV_READ || \
+    UB_EV_WRITE != EV_WRITE || UB_EV_SIGNAL != EV_SIGNAL || \
+    UB_EV_PERSIST != EV_PERSIST
+/* Only necessary for libev */
+#  define NATIVE_BITS(b) ( \
+         ((b) & UB_EV_TIMEOUT) ? EV_TIMEOUT : 0 \
+       | ((b) & UB_EV_READ   ) ? EV_READ    : 0 \
+       | ((b) & UB_EV_WRITE  ) ? EV_WRITE   : 0 \
+       | ((b) & UB_EV_SIGNAL ) ? EV_SIGNAL  : 0 \
+       | ((b) & UB_EV_PERSIST) ? EV_PERSIST : 0)
+#else
+#  define NATIVE_BITS(b) (b)
+#endif
+
 struct my_event_base {
        struct ub_event_base super;
        struct event_base* base;
@@ -88,72 +102,72 @@ const char* ub_event_get_version()
        return "pluggable-event"PACKAGE_VERSION;
 }
 
-void
+static void
 my_event_add_bits(struct ub_event* ev, short bits)
 {
-       AS_MY_EVENT(ev)->ev.ev_events |= bits;
+       AS_MY_EVENT(ev)->ev.ev_events |= NATIVE_BITS(bits);
 }
 
-void
+static void
 my_event_del_bits(struct ub_event* ev, short bits)
 {
-       AS_MY_EVENT(ev)->ev.ev_events &= ~bits;
+       AS_MY_EVENT(ev)->ev.ev_events &= ~NATIVE_BITS(bits);
 }
 
-void
+static void
 my_event_set_fd(struct ub_event* ev, int fd)
 {
        AS_MY_EVENT(ev)->ev.ev_fd = fd;
 }
 
-void
+static void
 my_event_free(struct ub_event* ev)
 {
        free(AS_MY_EVENT(ev));
 }
 
-int
+static int
 my_event_add(struct ub_event* ev, struct timeval* tv)
 {
        return event_add(&AS_MY_EVENT(ev)->ev, tv);
 }
 
-int
+static int
 my_event_del(struct ub_event* ev)
 {
        return event_del(&AS_MY_EVENT(ev)->ev);
 }
 
-int
+static int
 my_timer_add(struct ub_event* ev, struct ub_event_base* base,
        void (*cb)(int, short, void*), void* arg, struct timeval* tv)
 {
-       event_set(&AS_MY_EVENT(ev)->ev, -1, UB_EV_TIMEOUT, cb, arg);
+       event_set(&AS_MY_EVENT(ev)->ev, -1, EV_TIMEOUT, cb, arg);
        if (event_base_set(AS_MY_EVENT_BASE(base)->base, &AS_MY_EVENT(ev)->ev)
                != 0)
                return -1;
        return evtimer_add(&AS_MY_EVENT(ev)->ev, tv);
 }
 
-int
+static int
 my_timer_del(struct ub_event* ev)
 {
        return evtimer_del(&AS_MY_EVENT(ev)->ev);
 }
 
-int
+static int
 my_signal_add(struct ub_event* ev, struct timeval* tv)
 {
        return signal_add(&AS_MY_EVENT(ev)->ev, tv);
 }
 
-int
+static int
 my_signal_del(struct ub_event* ev)
 {
        return signal_del(&AS_MY_EVENT(ev)->ev);
 }
 
-void
+static void
 my_winsock_unregister_wsaevent(struct ub_event* ev)
 {
 #if defined(USE_MINI_EVENT) && defined(USE_WINSOCK)
@@ -164,11 +178,11 @@ my_winsock_unregister_wsaevent(struct ub_event* ev)
 #endif
 }
 
-void
+static void
 my_winsock_tcp_wouldblock(struct ub_event* ev, int eventbits)
 {
 #if defined(USE_MINI_EVENT) && defined(USE_WINSOCK)
-       winsock_tcp_wouldblock(&AS_MY_EVENT(ev)->ev, eventbits);
+       winsock_tcp_wouldblock(&AS_MY_EVENT(ev)->ev, NATIVE_BITS(eventbits));
 #else
        (void)ev;
        (void)eventbits;
@@ -182,7 +196,7 @@ static struct ub_event_vmt default_event_vmt = {
        my_winsock_unregister_wsaevent, my_winsock_tcp_wouldblock
 };
 
-void
+static void
 my_event_base_free(struct ub_event_base* base)
 {
 #ifdef USE_MINI_EVENT
@@ -196,19 +210,19 @@ my_event_base_free(struct ub_event_base* base)
        free(AS_MY_EVENT_BASE(base));
 }
 
-int
+static int
 my_event_base_dispatch(struct ub_event_base* base)
 {
        return event_base_dispatch(AS_MY_EVENT_BASE(base)->base);
 }
 
-int
+static int
 my_event_base_loopexit(struct ub_event_base* base, struct timeval* tv)
 {
        return event_base_loopexit(AS_MY_EVENT_BASE(base)->base, tv);
 }
 
-struct ub_event*
+static struct ub_event*
 my_event_new(struct ub_event_base* base, int fd, short bits,
        void (*cb)(int, short, void*), void* arg)
 {
@@ -218,7 +232,7 @@ my_event_new(struct ub_event_base* base, int fd, short bits,
        if (!my_ev)
                return NULL;
 
-       event_set(&my_ev->ev, fd, bits, cb, arg);
+       event_set(&my_ev->ev, fd, NATIVE_BITS(bits), cb, arg);
        if (event_base_set(AS_MY_EVENT_BASE(base)->base, &my_ev->ev) != 0) {
                free(my_ev);
                return NULL;
@@ -228,7 +242,7 @@ my_event_new(struct ub_event_base* base, int fd, short bits,
        return &my_ev->super;
 }
 
-struct ub_event*
+static struct ub_event*
 my_signal_new(struct ub_event_base* base, int fd,
        void (*cb)(int, short, void*), void* arg)
 {
@@ -248,7 +262,7 @@ my_signal_new(struct ub_event_base* base, int fd,
        return &my_ev->super;
 }
 
-struct ub_event*
+static struct ub_event*
 my_winsock_register_wsaevent(struct ub_event_base* base, void* wsaevent,
        void (*cb)(int, short, void*), void* arg)
 {