Re: [patch 143/166] preadv/pwritev: Add preadv and pwritev system calls.

Linus Torvalds
2009-04-03T01:43:08Z

On Thu, 2 Apr 2009, akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org wrote:
>
> glibc entriely and use a syscall prototype which works without
> arch-specific wrappers inside the kernel: The offset argument is
> explicitly split into two 32bit values.

Grr. That may make sense on 32-bit architectures, but makes no sense
what-so-ever on 64-bit ones.

Why not just say that it's two "unsigned long" arguments, and split it by
"sizeof unsigned long". And then, on 64-bit architectures, the high bits
can be ignored. You can even get gcc to optimize it all away by doing
something like

#define HALF_LONG (BITS_IN_LONG / 2)

offset = (((loff_t)high << HALF_LONG) << HALF_LONG) | low;

and then gcc should automaticaly notice that shifting up that way is just
a fancy way of saying "0", and ignore the high bits.

How married are people to this crazy 2x "32 bits" model?

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-api" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html