Index: sys/sys/event.h =================================================================== RCS file: /cvsroot/src/sys/sys/event.h,v retrieving revision 1.37 diff -u -r1.37 event.h --- sys/sys/event.h 10 Aug 2019 23:47:13 -0000 1.37 +++ sys/sys/event.h 11 Aug 2019 15:04:08 -0000 @@ -60,38 +60,39 @@ _EV_SET((kevp), __CAST(uintptr_t, (ident)), (filter), (flags), \ (fflags), (data), (udata)) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion-null" - -static __inline void +template +void _EV_SET(struct kevent *_kevp, uintptr_t _ident, uint32_t _filter, - uint32_t _flags, uint32_t _fflags, int64_t _data, void *_udata) + uint32_t _flags, uint32_t _fflags, int64_t _data, T _udata) { _kevp->ident = _ident; _kevp->filter = _filter; _kevp->flags = _flags; _kevp->fflags = _fflags; _kevp->data = _data; - _kevp->udata = reinterpret_cast(_udata); + _kevp->udata = static_cast(_udata); } -#define _EV_SET_INTEGER_TYPE(_UTYPE) \ -static __inline void \ -_EV_SET(struct kevent *_kevp, uintptr_t _ident, uint32_t _filter, \ - uint32_t _flags, uint32_t _fflags, int64_t _data, _UTYPE _udata) \ -{ \ - _EV_SET(_kevp, _ident, _filter, _flags, _fflags, _data, \ - reinterpret_cast(static_cast(_udata))); \ +template +void +_EV_SET(struct kevent *_kevp, uintptr_t _ident, uint32_t _filter, + uint32_t _flags, uint32_t _fflags, int64_t _data, T *_udata) +{ + _EV_SET(_kevp, _ident, _filter, _flags, _fflags, _data, + reinterpret_cast(_udata)); } -_EV_SET_INTEGER_TYPE(int) -_EV_SET_INTEGER_TYPE(long int) -_EV_SET_INTEGER_TYPE(long long int) -_EV_SET_INTEGER_TYPE(unsigned int) -_EV_SET_INTEGER_TYPE(unsigned long int) -_EV_SET_INTEGER_TYPE(unsigned long long int) +#if __cplusplus >= 201103L +#include +template <> +void +_EV_SET(struct kevent *_kevp, uintptr_t _ident, uint32_t _filter, + uint32_t _flags, uint32_t _fflags, int64_t _data, std::nullptr_t _udata) +{ + _EV_SET(_kevp, _ident, _filter, _flags, _fflags, _data, 0); +} +#endif -#pragma GCC diagnostic pop #else static __inline void _EV_SET(struct kevent *_kevp, uintptr_t _ident, uint32_t _filter,