From 9b07207424b301a8660abec2e0315e7db75229c7 Mon Sep 17 00:00:00 2001 From: nkaneko Date: Thu, 4 Jun 2015 17:25:58 +0900 Subject: [PATCH] mk_core: fix timeout given to EVFILT_TIMER in some BSD This patch fix timeout parameter given to EV_SET(EVFILT_TIMER) in BSD system other than FreeBSD. Only FreeBSD(or LINUX_SECOND) has NOTE_SECONDS defined and specify seconds in EV_SET(EVFILT_TIMER). Other BSD expects milliseconds. Tested in NetBSD environment. Signed-off-by: enukane --- lib/mk_core/mk_event_kqueue.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/mk_core/mk_event_kqueue.c b/lib/mk_core/mk_event_kqueue.c index 3cd450c76bc..7812e3be433 100644 --- a/lib/mk_core/mk_event_kqueue.c +++ b/lib/mk_core/mk_event_kqueue.c @@ -166,7 +166,13 @@ static inline int _mk_event_timeout_create(struct mk_event_ctx *ctx, event->type = MK_EVENT_NOTIFICATION; event->mask = MK_EVENT_EMPTY; +#ifdef NOTE_SECONDS + /* FreeBSD or LINUX_KQUEUE defined */ EV_SET(&ke, fd, EVFILT_TIMER, EV_ADD, NOTE_SECONDS, expire, event); +#else + /* Other BSD have no NOTE_SECONDS & specify milliseconds */ + EV_SET(&ke, fd, EVFILT_TIMER, EV_ADD, 0, expire * 1000, event); +#endif ret = kevent(ctx->kfd, &ke, 1, NULL, 0, NULL); if (ret < 0) { close(fd);