tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kqueue: intptr vs void *



On Fri, Aug 17, 2018 at 03:26:23PM +0200, Kamil Rytarowski wrote:
> On 17.08.2018 15:16, Thomas Klausner wrote:
> > Hi!
> > 
> > Does anyone know why NetBSD has udata defined as intptr_t in kqueue(3)?
> > 
> > I.e.:
> > 
> >      EV_SET(&kev, ident, filter, flags, fflags, data, udata);
> > 
> > where the values are defined as:
> > 
> >      struct kevent {
> >              uintptr_t ident;        /* identifier for this event */
> >              uint32_t  filter;       /* filter for event */
> >              uint32_t  flags;        /* action flags for kqueue */
> >              uint32_t  fflags;       /* filter flag value */
> >              int64_t   data;         /* filter data value */
> >              intptr_t  udata;        /* opaque user data identifier */
> >      };
> > 
> > while other operating systems have udata as "void *" instead?
> > This currently causes a bug report in wxWidgets.
> > 
> 
> (Recent?) C++ is more sensitive to casts. In C everything works under
> the neath.
> 
> There might be an option to make it more compatible for C++ this way:
...

I was wondering if the difference is even necessary or if we should
match other operating systems in this aspect.

(fixing wxWidgets is ongoing, that's not the issue here)
 Thomas


Home | Main Index | Thread Index | Old Index