This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [RFC v3 05/23] sysdeps/timespec_get: Use clock_gettime64 if avaliable
* Alistair Francis:
> +#if __WORDSIZE == 32
> +int
> +__timespec_get (struct timespec *ts, int base)
> +{
> + int ret;
> +
> +#ifdef __NR_clock_gettime64
> + struct __timespec64 ts64;
> + ret = INTERNAL_VSYSCALL (clock_gettime64, err, 2, CLOCK_REALTIME, &ts64);
> +
> + ts->tv_sec = ts64.tv_sec;
> + ts->tv_nsec = ts64.tv_nsec;
> +
> + if (! in_time_t_range (ts->tv_sec))
> + {
> + __set_errno (EOVERFLOW);
> + return -1;
> + }
> +#endif
> +
> +#ifndef __ASSUME_TIME64_SYSCALLS
> + ret = INTERNAL_VSYSCALL (clock_gettime, err, 2, CLOCK_REALTIME, ts);
> +#endif
I don't think this is right. I think you need to cache clock_gettime64
support somewhere and avoid trying to call the non-existing system call
again and again. And the second system call will overwrite the results
of the first.
Thanks,
Florian