Re: [PATCH 31/31] aio: implement io_pgetevents

From: Arnd Bergmann
Date: Tue Jan 09 2018 - 17:16:23 EST


On Thu, Jan 4, 2018 at 9:00 AM, Christoph Hellwig <hch@xxxxxx> wrote:

> +}
> +
> +SYSCALL_DEFINE6(io_pgetevents,
> + aio_context_t, ctx_id,
> + long, min_nr,
> + long, nr,
> + struct io_event __user *, events,
> + struct timespec __user *, timeout,
> + const sigset_t __user *, sigmask)
> +{

> +COMPAT_SYSCALL_DEFINE6(io_pgetevents,
> + compat_aio_context_t, ctx_id,
> + compat_long_t, min_nr,
> + compat_long_t, nr,
> + struct io_event __user *, events,
> + struct compat_timespec __user *, timeout,
> + const compat_sigset_t __user *, sigmask)
> +{

Hmm, these two new syscall entry points turn into four when we add in
support for 64-bit time_t, as we'd have to support all combinations of 32/64
bit aio_context_t and time_t.

Would it be better to start this interface out by defining it using a 64-bit
timeout structure? The downside would be that the user space syscall
wrappers have to start out with a conversion, if we don't do it, then
the opposite conversion would have to get added later.

Arnd