only fallback to gettimeofday/settimeofday syscalls if they exist
authorStefan O'Rear <sorear@fastmail.com>
Thu, 3 Sep 2020 07:33:10 +0000 (03:33 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 2 May 2022 03:25:21 +0000 (23:25 -0400)
riscv32 and future architectures only provide the clock_ functions.

src/time/clock_gettime.c

index 3e1d097..c7e66a5 100644 (file)
@@ -80,10 +80,12 @@ int __clock_gettime(clockid_t clk, struct timespec *ts)
                return __syscall_ret(r);
        long ts32[2];
        r = __syscall(SYS_clock_gettime, clk, ts32);
+#ifdef SYS_gettimeofday
        if (r==-ENOSYS && clk==CLOCK_REALTIME) {
                r = __syscall(SYS_gettimeofday, ts32, 0);
                ts32[1] *= 1000;
        }
+#endif
        if (!r) {
                ts->tv_sec = ts32[0];
                ts->tv_nsec = ts32[1];
@@ -92,6 +94,7 @@ int __clock_gettime(clockid_t clk, struct timespec *ts)
        return __syscall_ret(r);
 #else
        r = __syscall(SYS_clock_gettime, clk, ts);
+#ifdef SYS_gettimeofday
        if (r == -ENOSYS) {
                if (clk == CLOCK_REALTIME) {
                        __syscall(SYS_gettimeofday, ts, 0);
@@ -100,6 +103,7 @@ int __clock_gettime(clockid_t clk, struct timespec *ts)
                }
                r = -EINVAL;
        }
+#endif
        return __syscall_ret(r);
 #endif
 }