diff options
author | 2019-10-24 17:52:30 +0000 | |
---|---|---|
committer | 2019-10-30 17:05:14 -0300 | |
commit | 0d563783490bf5b2d7d52cab205760fdff5d5650 (patch) | |
tree | e1578f3d2c36b1ee5b4f0fb84705141ebcf1d301 /time | |
parent | Use clock_settime to implement settimeofday. (diff) | |
download | glibc-0d563783490bf5b2d7d52cab205760fdff5d5650.tar.gz glibc-0d563783490bf5b2d7d52cab205760fdff5d5650.tar.bz2 glibc-0d563783490bf5b2d7d52cab205760fdff5d5650.zip |
Use clock_gettime to implement time.
Change the default implementation of time to call clock_gettime,
to align with new Linux ports that are expected to only implement
__NR_clock_gettime. Arch-specific implementation that either call
the time vDSO or route to gettimeofday vDSO are not removed.
Also for Linux, CLOCK_REALTIME_COARSE is used instead of generic
CLOCK_REALTIME clockid. This takes less CPU time and its behavior
better matches what the current glibc does.
Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu,
powerpc64-linux-gnu, powerpc-linux-gnu, and aarch64-linux-gnu.
Co-authored-by: Zack Weinberg <zackw@panix.com>
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Diffstat (limited to 'time')
-rw-r--r-- | time/time.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/time/time.c b/time/time.c index b53a06e29c..e6e5eeff7e 100644 --- a/time/time.c +++ b/time/time.c @@ -15,19 +15,18 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <errno.h> #include <time.h> +#include <time-clockid.h> /* Return the time now, and store it in *TIMER if not NULL. */ time_t time (time_t *timer) { - __set_errno (ENOSYS); + struct timespec ts; + __clock_gettime (TIME_CLOCK_GETTIME_CLOCKID, &ts); - if (timer != NULL) - *timer = (time_t) -1; - return (time_t) -1; + if (timer) + *timer = ts.tv_sec; + return ts.tv_sec; } libc_hidden_def (time) - -stub_warning (time) |