This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Dear All, > This define indicates if the Linux kernel (5.1+) provides syscalls > supporting 64 bit versions of struct timespec and timeval. > > For architectures with __WORDSIZE==64 and __TIMESIZE==64 (e.g. > x86_64, aarch64) this flag is never defined (as those already use 64 > bit versions of struct timespec and timeval). > > The __ASSUME_TIME64_SYSCALLS shall be only defined on systems with > __WORDSIZE==32. > > For x32 this flag is explicitly undefined as this architecture has > __WORDSIZE==32 with __TIMESIZE==64. Despite having __WORDSIZE==32 the > x32 has support for 64 bit time values and hence needs to undefine > __ASSUME_TIME64_SYSCALLS flag. > > > * sysdeps/unix/sysv/linux/kernel-features.h: > (__ASSUME_TIME64_SYSCALLS): [__LINUX_KERNEL_VERSION >= 0x050100]: > Define. > * sysdeps/unix/sysv/linux/x86_64/kernel-features.h > (__ASSUME_TIME64_SYSCALLS): #undef the __ASSUME_TIME64_SYSCALLS for > x32 architecture Gentle ping on this patch. Do you have any more comments? > > --- > Changes for v5: > - Rewrite the in-code comment (x32 description more precise) > - Change patch description (for x32) > > Changes for v4: > - Exclude this patch from the clock_settime64 patch series > - Rewrite the in-code comment > - Change patch description > > Changes for v3: > - Provide more detailed and verbose description > - Change name to __ASSUME_TIME64_SYSCALLS > - Undefine __ASSUME_TIME64_SYSCALLS on x32 > > Changes for v2: > - New patch > --- > sysdeps/unix/sysv/linux/kernel-features.h | 38 > ++++++++++++++++++++++++ > sysdeps/unix/sysv/linux/x86_64/kernel-features.h | 7 +++++ 2 files > changed, 45 insertions(+) > > diff --git a/sysdeps/unix/sysv/linux/kernel-features.h > b/sysdeps/unix/sysv/linux/kernel-features.h index > bc5c959f58..30e77dd213 100644 --- > a/sysdeps/unix/sysv/linux/kernel-features.h +++ > b/sysdeps/unix/sysv/linux/kernel-features.h @@ -143,3 +143,41 @@ > */ > > #define __ASSUME_CLONE_DEFAULT 1 > + > +#include <bits/wordsize.h> > +#if __WORDSIZE != 64 > +/* Support for Linux kernel syscalls, which are able to handle 64 bit > + time on 32 bit systems (with 'long' and __WORDSIZE equal to 32 > bits). + > + Linux kernel, as of version 5.1, provides following set of > syscalls, > + which accept data based on struct timespec and timeval with 64 bit > + tv_sec: > + > + clock_gettime64 > + clock_settime64 > + clock_adjtime64 > + clock_getres_time64 > + clock_nanosleep_time64 > + timer_gettime64 > + timer_settime64 > + timerfd_gettime64 > + timerfd_settime64 > + utimensat_time64 > + pselect6_time64 > + ppoll_time64 > + io_pgetevents_time64 > + recvmmsg_time64 > + mq_timedsend_time64 > + mq_timedreceive_time64 > + semtimedop_time64 > + rt_sigtimedwait_time64 > + futex_time64 > + sched_rr_get_interval_time64 > + > + Above syscalls are supposed to replace legacy ones, which handle > 32 > + bit version of struct timespec and timeval (i.e. without the '64' > + suffix). */ > +# if __LINUX_KERNEL_VERSION >= 0x050100 > +# define __ASSUME_TIME64_SYSCALLS 1 > +# endif > +#endif > diff --git a/sysdeps/unix/sysv/linux/x86_64/kernel-features.h > b/sysdeps/unix/sysv/linux/x86_64/kernel-features.h index > 26280f57ec..179a9ae932 100644 --- > a/sysdeps/unix/sysv/linux/x86_64/kernel-features.h +++ > b/sysdeps/unix/sysv/linux/x86_64/kernel-features.h @@ -24,3 +24,10 @@ > #endif > > #include_next <kernel-features.h> > + > +/* For x32, which is a special case in respect to 64 bit time support > + (it has __WORDSIZE==32 but __TIMESIZE==64), the > + __ASSUME_TIME64_SYSCALLS flag needs to be explicitly undefined. > */ +#ifdef __ILP32__ > +# undef __ASSUME_TIME64_SYSCALLS > +#endif Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
Attachment:
pgpK9i1BPTdV6.pgp
Description: OpenPGP digital signature
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |