[PATCH v3 3/3] system_data_types.7: note struct timespec::tv_nsec type for x32 and portability
Florian Weimer
fweimer@redhat.com
Tue Dec 7 18:52:38 GMT 2021
* Joseph Myers:
> On Tue, 7 Dec 2021, наб via Libc-alpha wrote:
>
>> Looking through "timespec" on Aardvark for prior art reveals nothing,
>> except for a likely resolution to any proposal of this sort:
>> > Although we agree that it would have been better if these functions had
>> > been designed this way to begin with, we believe that making the change
>> > now will break existing, conforming code with no real benefit.
>
> Geoff Clare said (austin-group-l, Thu, 29 May 2014 16:20:22 +0100):
>
> C11 requires tv_nsec to be type long, which means that if we change
> it to be a new snseconds_t type in Issue 8, we would have to require
> that snseconds_t is defined as long in order not to conflict with C11.
>
> and Rich Felker (Thu, 29 May 2014 13:08:59 -0400):
>
> This is just a linux kernel bug which needs to be fixed. They have a
> number of other such bugs in x32 too. It's possible to work around it
> in userspace on the library side (we do this in musl libc) but it's a
> bit costly/painful and glibc does not do so yet. There's an open bug
> for it which I filed:
>
> and I don't see any other responses in that discussion.
This came up again during the time64 work. The kernel was eventually
changed to ignore the padding, so userspace can use a long int type.
x32 wasn't changed for backwards compatibility reasons.
Thanks,
Florian
More information about the Libc-alpha
mailing list