This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 11/16] linux: Optimize fallback 32-bit clock_gettime
- From: Siddhesh Poyarekar <siddhesh at gotplt dot org>
- To: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>, libc-alpha at sourceware dot org
- Date: Thu, 2 Jan 2020 18:37:56 +0530
- Subject: Re: [PATCH 11/16] linux: Optimize fallback 32-bit clock_gettime
- References: <20191217214728.2886-1-adhemerval.zanella@linaro.org> <20191217214728.2886-11-adhemerval.zanella@linaro.org>
On 18/12/19 3:17 am, Adhemerval Zanella wrote:
> This patch avoid probing the __NR_clock_getttime64 syscall each time
> __clock_gettime64 is issued on a kernel without 64 bit time support.
> Once ENOSYS is obtained, only 32-bit clock_gettime are used.
>
> The following snippet:
>
> clock_gettime (CLOCK_REALTIME, &(struct timespec) { 0 });
> clock_gettime (CLOCK_MONOTONIC, &(struct timespec) { 0 });
> clock_gettime (CLOCK_BOOTTIME, &(struct timespec) { 0 });
> clock_gettime (20, &(struct timespec) { 0 });
>
> On a kernel without 64 bit time support and with vDSO support results
> on the following syscalls:
>
> syscall_0x193(0, 0xff87ba30, [...]) = -1 ENOSYS (Function not implemented)
> clock_gettime(CLOCK_BOOTTIME, {tv_sec=927082, tv_nsec=474382032}) = 0
> clock_gettime(0x14 /* CLOCK_??? */, 0xff87b9f8) = -1 EINVAL (Invalid argument)
>
> While on a kernel without vDSO support:
>
> syscall_0x193(0, 0xbec95550, 0xb6ed2000, 0x1, 0xbec95550, 0) = -1 (errno 38)
> clock_gettime(CLOCK_REALTIME, {tv_sec=1576615930, tv_nsec=638250162}) = 0
> clock_gettime(CLOCK_MONOTONIC, {tv_sec=1665478, tv_nsec=638779620}) = 0
> clock_gettime(CLOCK_BOOTTIME, {tv_sec=1675418, tv_nsec=292932704}) = 0
> clock_gettime(0x14 /* CLOCK_??? */, 0xbec95530) = -1 EINVAL (Invalid argument)
>
> Checked on i686-linux-gnu on 4.15 kernel.
> ---
> sysdeps/unix/sysv/linux/clock_gettime.c | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
OK.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>