Re: [take12 0/3] kevent: Generic event handling mechanism.

Jari Sundell
2006-08-23T09:49:25Z

On 8/23/06, Evgeniy Polyakov <johnpol@2ka.mipt.ru> wrote:
> On Wed, Aug 23, 2006 at 10:22:06AM +0200, Jari Sundell (sundell.software@gmail.com) wrote:
> > On 8/23/06, Evgeniy Polyakov <johnpol@2ka.mipt.ru> wrote:
> > >void * in structure exported to userspace is forbidden.
> >
> > Only void * I'm seeing belongs to the user, (udata) perhaps you are
> > talking of something different?
>
> Yes, exactly about it.
>
> I put union {
> u32 a[2];
> void *b;
> }
> epcially to eliminate that problem.

It's just random data of a known maximum size appended to the struct,
I'm sure you can find a clean way to handle it. If you mangle the
first variable name in your union, you'll end up with something that
should be usable instead of udata.

> And I'm not that sure aboit stuff like uptr_t or how they call pointers
> in userspace and kernelspace.

Well, I can't find any use of pointers in your struct ukevent, nor in
any of the kqueue events in my man page. So if this is a deficit it
applies to both, I guess?

> ukevent is aligned to 8 bytes already (it's size selected to be 40 bytes),
> so it should not be a problem.
>
> > Eric

Even if it is so, wouldn't it be better to be explicit about it?

Rakshasa