public inbox for glibc-cvs@sourceware.org help / color / mirror / Atom feed
From: Adhemerval Zanella <azanella@sourceware.org> To: glibc-cvs@sourceware.org Subject: [glibc] Use clock_gettime to implement timespec_get. Date: Wed, 30 Oct 2019 20:24:00 -0000 [thread overview] Message-ID: <20191030202409.102913.qmail@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=40a36935fff4eac83b9676b04048990ccb3c4754 commit 40a36935fff4eac83b9676b04048990ccb3c4754 Author: Zack Weinberg <zackw@panix.com> Date: Thu Aug 22 17:10:35 2019 -0400 Use clock_gettime to implement timespec_get. timespec_get is the same function as clock_gettime, with an obnoxious coating of NIH painted on it by the ISO C committee. In addition to the rename, it takes its arguments in a different order, it returns 0 on *failure* or a positive number on *success*, and it requires that all of its TIME_* constants be positive. This last means we cannot directly reuse the existing CLOCK_* constants for it, because those have been allocated starting with CLOCK_REALTIME = 0 on all existing platforms. This patch simply promotes the sysdeps/posix implementation to universal, and removes the Linux-specific implementation, whose apparent reason for existing was to cut out one function call's worth of overhead. Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu, powerpc64-linux-gnu, powerpc-linux-gnu, and aarch64-linux-gnu. Reviewed-by: Lukasz Majewski <lukma@denx.de> Diff: --- sysdeps/posix/timespec_get.c | 32 ----------------------- sysdeps/unix/sysv/linux/timespec_get.c | 46 ---------------------------------- time/timespec_get.c | 14 +++-------- 3 files changed, 4 insertions(+), 88 deletions(-) diff --git a/sysdeps/posix/timespec_get.c b/sysdeps/posix/timespec_get.c deleted file mode 100644 index e3146da..0000000 --- a/sysdeps/posix/timespec_get.c +++ /dev/null @@ -1,32 +0,0 @@ -/* timespec_get -- C11 interface to sample a clock. Generic POSIX.1 version. - Copyright (C) 2013-2019 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - -#include <time.h> - - -/* Set TS to calendar time based in time base BASE. */ -int -timespec_get (struct timespec *ts, int base) -{ - if (base == TIME_UTC) - { - __clock_gettime (CLOCK_REALTIME, ts); - return base; - } - return 0; -} diff --git a/sysdeps/unix/sysv/linux/timespec_get.c b/sysdeps/unix/sysv/linux/timespec_get.c deleted file mode 100644 index 629827d..0000000 --- a/sysdeps/unix/sysv/linux/timespec_get.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (C) 2011-2019 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - -#include <time.h> -#include <sysdep.h> -#include <errno.h> - -#ifdef HAVE_CLOCK_GETTIME_VSYSCALL -# define HAVE_VSYSCALL -#endif -#include <sysdep-vdso.h> - -/* Set TS to calendar time based in time base BASE. */ -int -timespec_get (struct timespec *ts, int base) -{ - switch (base) - { - int res; - INTERNAL_SYSCALL_DECL (err); - case TIME_UTC: - res = INTERNAL_VSYSCALL (clock_gettime, err, 2, CLOCK_REALTIME, ts); - if (INTERNAL_SYSCALL_ERROR_P (res, err)) - return 0; - break; - - default: - return 0; - } - - return base; -} diff --git a/time/timespec_get.c b/time/timespec_get.c index cef9a42..5124c74 100644 --- a/time/timespec_get.c +++ b/time/timespec_get.c @@ -22,16 +22,10 @@ int timespec_get (struct timespec *ts, int base) { - switch (base) + if (base == TIME_UTC) { - case TIME_UTC: - /* Not supported. */ - return 0; - - default: - return 0; + __clock_gettime (CLOCK_REALTIME, ts); + return base; } - - return base; + return 0; } -stub_warning (timespec_get)
reply other threads:[~2019-10-30 20:24 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20191030202409.102913.qmail@sourceware.org \ --to=azanella@sourceware.org \ --cc=glibc-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).