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] | |
Hi Stepan,
> 06.05.2019 в 23:14:44 +0200 Lukasz Majewski написал:
> > For ARM, x86 there shall be call to clock_settime64 syscall
> >
> > For x32 there shall be call to clock_settime syscall (which is
> > supporting 64 bit anyway - despite the ignoring possible padding
> > clearing issue).
>
> > I rather thought about something like:
> >
> > __clock_settime64 (clockid_t clock_id, const struct __timespec64
> > *tp) {
> > <overflow check>
> >
> > #ifdef __ASSUME_TIME64_SYSCALLS
> > # ifdef __NR_clock_settime64
> > int ret = INLINE_SYSCALL_CALL (clock_settime64, clock_id, tp);
> > if (ret == 0 || errno != ENOSYS)
> > return ret;
> > # endif
> > /* Fall back to syscall supporting 32bit struct timespec. */
> > struct timespec ts32;
> > valid_timespec64_to_timespec (tp, &ts32);
> > return INLINE_SYSCALL_CALL (clock_settime, clock_id, &ts32);
> > #else
> > /* 64 bit machines + x32 */
> > return INLINE_SYSCALL_CALL (clock_settime, clock_id, tp);
> > #endif
> > }
> >
> > In the above pseudo code we assume that __ASSUME_TIME64_SYSCALLS is
> > #undef'ed for x32 (so it is treated as a 'special case' - in the
> > same way as x86_64).
>
> Usually the point of __ASSUME_* macros is to avoid compiling old
> compatibility code when it's not needed. That means there should be
> no fallback to 32-bit clock_settime when __ASSUME_TIME64_SYSCALLS is
> defined. Even when it's defined on 32-bit arm or x86.
>
> And with your current use of __ASSUME_TIME64_SYSCALLS
> __NR_clock_settime64 won't be used on any existing architecture.
> Because __ASSUME_TIME64_SYSCALLS won't be defined until Linux 5.0 is
> no longer supported.
It will be used when the minimal supported kernel reaches 5.1. (now it
is 3.2.)
For testing I do use --enable-kernel="5.1.0" passed to configure.
>
> If you replace
>
> #ifdef __ASSUME_TIME64_SYSCALLS
>
> with
>
> #ifdef __NR_clock_settime64
>
> result would make more sense than what you have now.
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:
pgpSNzIcXOd1B.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] |