Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/sys/event.h,v rcsdiff: /ftp/cvs/cvsroot/src/sys/sys/event.h,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.23.30.3 retrieving revision 1.23.30.4 diff -u -p -r1.23.30.3 -r1.23.30.4 --- src/sys/sys/event.h 2016/03/19 11:30:39 1.23.30.3 +++ src/sys/sys/event.h 2017/08/28 17:53:16 1.23.30.4 @@ -1,4 +1,4 @@ -/* $NetBSD: event.h,v 1.23.30.3 2016/03/19 11:30:39 skrll Exp $ */ +/* $NetBSD: event.h,v 1.23.30.4 2017/08/28 17:53:16 skrll Exp $ */ /*- * Copyright (c) 1999,2000,2001 Jonathan Lemon @@ -45,17 +45,6 @@ #define EVFILT_TIMER 6U /* arbitrary timer (in ms) */ #define EVFILT_SYSCOUNT 7U /* number of filters */ -#define EV_SET(kevp, a, b, c, d, e, f) \ -do { \ - (kevp)->ident = (a); \ - (kevp)->filter = (b); \ - (kevp)->flags = (c); \ - (kevp)->fflags = (d); \ - (kevp)->data = (e); \ - (kevp)->udata = (f); \ -} while (/* CONSTCOND */ 0) - - struct kevent { uintptr_t ident; /* identifier for this event */ uint32_t filter; /* filter for event */ @@ -65,6 +54,22 @@ struct kevent { intptr_t udata; /* opaque user data identifier */ }; +#define EV_SET(kevp, ident, filter, flags, fflags, data, udata) \ + _EV_SET((kevp), __CAST(uintptr_t, (ident)), (filter), (flags), \ + (fflags), (data), __CAST(intptr_t, (udata))) + +static __inline void +_EV_SET(struct kevent *_kevp, uintptr_t _ident, uint32_t _filter, + uint32_t _flags, uint32_t _fflags, int64_t _data, intptr_t _udata) +{ + _kevp->ident = _ident; + _kevp->filter = _filter; + _kevp->flags = _flags; + _kevp->fflags = _fflags; + _kevp->data = _data; + _kevp->udata = _udata; +} + /* actions */ #define EV_ADD 0x0001U /* add event to kq (implies ENABLE) */ #define EV_DELETE 0x0002U /* delete event from kq */ @@ -183,10 +188,10 @@ struct knote { TAILQ_ENTRY(knote) kn_tqe; /* q: for struct kqueue */ struct kqueue *kn_kq; /* q: which queue we are on */ struct kevent kn_kevent; - uint32_t kn_status; - uint32_t kn_sfflags; /* saved filter flags */ - uintptr_t kn_sdata; /* saved data field */ - void *kn_obj; /* pointer to monitored obj */ + uint32_t kn_status; /* q: flags below */ + uint32_t kn_sfflags; /* saved filter flags */ + uintptr_t kn_sdata; /* saved data field */ + void *kn_obj; /* monitored obj */ const struct filterops *kn_fop; struct kfilter *kn_kfilter; void *kn_hook; @@ -196,7 +201,8 @@ struct knote { #define KN_DISABLED 0x04U /* event is disabled */ #define KN_DETACHED 0x08U /* knote is detached */ #define KN_MARKER 0x10U /* is a marker */ -#define KN_BUSY 0x20U /* is being scanned */ +#define KN_BUSY 0x20U /* is being scanned */ +/* Toggling KN_BUSY also requires kn_kq->kq_fdp->fd_lock. */ #define kn_id kn_kevent.ident #define kn_filter kn_kevent.filter