[PATCH v8] y2038: Introduce __ASSUME_TIME64_SYSCALLS define

Joseph Myers joseph@codesourcery.com
Fri Aug 16 15:49:00 GMT 2019


On Thu, 15 Aug 2019, Alistair Francis wrote:

> /* Support for the 64-bit time Linux kernel syscalls.
> 
>    This flag indicates support for Linux kernel syscalls, which are able
>    to handle the 64 bit time ABI. It is defined for all 64-bit architectures as

I think "syscalls, which are able to handle the 64 bit time ABI" is 
awkward.  "syscalls using 64-bit time" or similar would seem better.  
(Throughout, use "64-bit" with a hyphen as an adjective.)

>    they have always supported 64 bit time support. It is also defined for all
>    32-bit architectures when using Linux kernel version 5.1 or newer.

"always supported 64 bit time support" should lose the last "support" (and 
add the hyphen in 64-bit).

>    When __ASSUME_TIME64_SYSCALLS is defined glibc should call the *64/time64
>    suffixed syscalls. These should be #defined to the the unsuffixed versions
>    when required (such as when running on 64-bit systems).

I don't think the interface definition involves "should call".  It's more 
like "can call, without needing to check at runtime for ENOSYS errors".

>    On systems with __WORDSIZE == 64 the __NR_clock_settime syscall is used
>    to achieve this goal. Contrary, systems with __WORDSIZE == 32 do use
>    new __NR_clock_settime64 syscall available from Linux version 5.1.

Describing syscalls as "new" is a bad idea.  (You can also remove 
"Contrary" and "do".)

>    The __ASSUME_TIME64_SYSCALLS is defined for:

The __ASSUME_TIME64_SYSCALLS *macro*.

>    1. Systems with intrinsic 64 bit time support (__WORDSIZE == 64).

As I said in <https://sourceware.org/ml/libc-alpha/2019-05/msg00688.html>, 
don't use this "intrinsic" description.

>    3. Systems with __WORDSIZE==32, which gain 64 bit time support
>       with new set of syscalls added to Linux kernel 5.1.

And avoid "new".

>    4. All new 32-bit architectures that only support 64-bit time, such as RV32.

Again, avoid "new"; describe the actual properties involved so the comment 
doesn't depend on people reading it from a 2019 perspective in which 
certain things count as "new".  I think you mean 32-bit architectures for 
which support was added in Linux 5.1 or later, or for which the 
kernel/userspace ABI changed incompatibly in Linux 5.1 or later so that 
there are no syscalls using 32-bit time.

-- 
Joseph S. Myers
joseph@codesourcery.com



More information about the Libc-alpha mailing list