Re: RFD: x32 ABI system call numbers

From: Linus Torvalds
Date: Wed Aug 31 2011 - 13:20:25 EST


On Wed, Aug 31, 2011 at 10:09 AM, H. Peter Anvin <hpa@xxxxxxxxx> wrote:
>>
>> I suspect only sane solution to this (having thought about it some
>> more) is to just say "POSIX is f*^&ing wrong".
>
> Urk.  Someone had the bright idea of defining tv_nsec as "long" in the
> standard, whereas tv_usec is suseconds_t.  F**** brilliant, and more
> than a little bit stupid.

I think tv_nsec was just overlooked, and people thought "it has no
legacy users that were 'int', so we'll just leave it at 'long', which
is guaranteed to be enough for nanoseconds that only needs a range of
32 bits".

In contrast, tv_usec probably *does* have legacy users that are "int".

So POSIX almost certainly only looked backwards, and never thought
about users who would need to make it "long long" for compatibility
reasons.

The fact that *every*other*related*field* in POSIX/SuS has a typedef
exactly for these kinds of reasons just shows how stupid that "long
tv_nsec" thing is.

I suspect that on Linux we can just say "tv_nsec" is suseconds_t too.
Then we can make time_t and suseconds_t just match, and be "__s64" on
all new platforms.

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/