diff --git a/libc/bionic/time.cpp b/libc/bionic/time.cpp index 3a41027fc..800395e87 100644 --- a/libc/bionic/time.cpp +++ b/libc/bionic/time.cpp @@ -28,27 +28,10 @@ #include -static clockid_t __base_to_clock(int base) { - switch (base) { - case TIME_UTC: - return CLOCK_REALTIME; - case TIME_MONOTONIC: - return CLOCK_MONOTONIC; - case TIME_ACTIVE: - return CLOCK_PROCESS_CPUTIME_ID; - case TIME_THREAD_ACTIVE: - return CLOCK_THREAD_CPUTIME_ID; - default: - return -1; - } -} - int timespec_get(timespec* ts, int base) { - clockid_t clock = __base_to_clock(base); - return (clock != -1 && clock_gettime(clock, ts) != -1) ? base : 0; + return (clock_gettime(base - 1, ts) != -1) ? base : 0; } int timespec_getres(timespec* ts, int base) { - clockid_t clock = __base_to_clock(base); - return (clock != -1 && clock_getres(clock, ts) != -1) ? base : 0; + return (clock_getres(base - 1, ts) != -1) ? base : 0; } diff --git a/libc/include/time.h b/libc/include/time.h index 2d2de9f09..1c3ae4b05 100644 --- a/libc/include/time.h +++ b/libc/include/time.h @@ -109,28 +109,28 @@ time_t timegm(struct tm* _Nonnull __tm); * * Available since API level 29. */ -#define TIME_UTC 1 +#define TIME_UTC (CLOCK_REALTIME+1) /** * The timebase for timespec_get() and timespec_getres() corresponding to CLOCK_MONOTONIC. * * Available since API level 35. */ -#define TIME_MONOTONIC 2 +#define TIME_MONOTONIC (CLOCK_MONOTONIC+1) /** * The timebase for timespec_get() and timespec_getres() corresponding to CLOCK_PROCESS_CPUTIME_ID. * * Available since API level 35. */ -#define TIME_ACTIVE 3 +#define TIME_ACTIVE (CLOCK_PROCESS_CPUTIME_ID+1) /** * The timebase for timespec_get() and timespec_getres() corresponding to CLOCK_THREAD_CPUTIME_ID. * * Available since API level 35. */ -#define TIME_THREAD_ACTIVE 4 +#define TIME_THREAD_ACTIVE (CLOCK_THREAD_CPUTIME_ID+1) /** * timespec_get(3) is equivalent to clock_gettime() for the clock corresponding to the given base. diff --git a/tests/time_test.cpp b/tests/time_test.cpp index 483315d82..d16600cea 100644 --- a/tests/time_test.cpp +++ b/tests/time_test.cpp @@ -1281,7 +1281,7 @@ TEST(time, timespec_get) { TEST(time, timespec_get_invalid) { #if __BIONIC__ timespec ts = {}; - ASSERT_EQ(0, timespec_get(&ts, -1)); + ASSERT_EQ(0, timespec_get(&ts, 123)); #else GTEST_SKIP() << "glibc doesn't have timespec_get until 2.21"; #endif