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] |