Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3

Evgeniy Polyakov
2007-03-01T08:39:56Z

On Wed, Feb 28, 2007 at 11:42:24AM -0800, Davide Libenzi (davidel@xmailserver.org) wrote:
> On Wed, 28 Feb 2007, Chris Friesen wrote:
>
> > Davide Libenzi wrote:
> >
> > > struct async_syscall {
> > > unsigned long nr_sysc;
> > > unsigned long params[8];
> > > long *result;
> > > };
> > >
> > > And what would async_wait() return bak? Pointers to "struct async_syscall"
> > > or pointers to "result"?
> >
> > Either one has downsides. Pointer to struct async_syscall requires that the
> > caller keep the struct around. Pointer to result requires that the caller
> > always reserve a location for the result.
> >
> > Does the kernel care about the (possibly rare) case of callers that don't want
> > to pay attention to result? If so, what about adding some kind of
> > caller-specified handle to struct async_syscall, and having async_wait()
> > return the handle? In the case where the caller does care about the result,
> > the handle could just be the address of result.
>
> Something like this (with async_wait() returning asynid's)?
>
> struct async_syscall {
> long *result;
> unsigned long asynid;
> unsigned long nr_sysc;
> unsigned long params[8];
> };

Having result pointer as NULL might imply that result is not interested
in and thus it can be discarded and event async syscall will not be
returned through aync_wait().
More flexible is having request flags field in the structure.

> - Davide
>

--
Evgeniy Polyakov