@@ -9,6 +9,16 @@ Version 2.38
Major new features:
+* Extra timebase defines are supported, these are:
+ TIME_MONOTONIC_RAW
+ TIME_UTC_COARSE
+ TIME_MONOTONIC_COARSE
+ TIME_BOOTTIME
+ TIME_UTC_ALARM
+ TIME_BOOTTIME_ALARM
+ TIME_SGI_CYCLE
+ TIME_TAI
+
* C2x timebase macro defines are supported, these are:
TIME_MONOTONIC
TIME_ACTIVE
@@ -381,6 +381,40 @@ clock_from_timebase (int timebase)
case TIME_THREAD_ACTIVE:
clockid = CLOCK_THREAD_CPUTIME_ID;
break;
+ case TIME_MONOTONIC_RAW:
+ clockid = CLOCK_MONOTONIC_RAW;
+ break;
+ case TIME_UTC_COARSE:
+ clockid = CLOCK_REALTIME_COARSE;
+ break;
+ case TIME_MONOTONIC_COARSE:
+ clockid = CLOCK_MONOTONIC_COARSE;
+ break;
+# ifdef CLOCK_BOOTTIME
+ case TIME_BOOTTIME:
+ clockid = CLOCK_BOOTTIME;
+ break;
+# endif
+# ifdef CLOCK_REALTIME_ALARM
+ case TIME_UTC_ALARM:
+ clockid = CLOCK_REALTIME_ALARM;
+ break;
+# endif
+# ifdef CLOCK_BOOTTIME_ALARM
+ case TIME_BOOTTIME_ALARM:
+ clockid = CLOCK_BOOTTIME_ALARM;
+ break;
+# endif
+# ifdef CLOCK_SGI_CYCLE
+ case TIME_SGI_CYCLE:
+ clockid = CLOCK_SGI_CYCLE;
+ break;
+# endif
+# ifdef CLOCK_TAI
+ case TIME_TAI:
+ clockid = CLOCK_TAI;
+ break;
+# endif
default:
break;
}
@@ -69,6 +69,16 @@ typedef __pid_t pid_t;
# define TIME_ACTIVE 3
# define TIME_THREAD_ACTIVE 4
#endif
+#ifdef __USE_GNU
+# define TIME_MONOTONIC_RAW 5
+# define TIME_UTC_COARSE 6
+# define TIME_MONOTONIC_COARSE 7
+# define TIME_BOOTTIME 8
+# define TIME_UTC_ALARM 9
+# define TIME_BOOTTIME_ALARM 10
+# define TIME_SGI_CYCLE 11
+# define TIME_TAI 12
+#endif
__BEGIN_DECLS
@@ -28,6 +28,13 @@ test_timespec_get (int timebase)
TEST_VERIFY (ts.tv_nsec < 1000000000);
}
+static void
+test_timespec_get_not_support(int timebase)
+{
+ struct timespec ts;
+ TEST_COMPARE (timespec_get (&ts, timebase), 0);
+}
+
static int
do_test (void)
{
@@ -43,6 +50,40 @@ do_test (void)
test_timespec_get (TIME_THREAD_ACTIVE);
}
+ {
+ test_timespec_get (TIME_MONOTONIC_RAW);
+ test_timespec_get (TIME_UTC_COARSE);
+ test_timespec_get (TIME_MONOTONIC_COARSE);
+ }
+
+ {
+#ifdef CLOCK_BOOTTIME
+ test_timespec_get (TIME_BOOTTIME);
+#else
+ test_timespec_get_not_support (TIME_BOOTTIME);
+#endif
+#ifdef CLOCK_REALTIME_ALARM
+ test_timespec_get (TIME_UTC_ALARM);
+#else
+ test_timespec_get_not_support (TIME_UTC_ALARM);
+#endif
+#ifdef CLOCK_BOOTTIME_ALARM
+ test_timespec_get (TIME_BOOTTIME_ALARM);
+#else
+ test_timespec_get_not_support (TIME_BOOTTIME_ALARM);
+#endif
+#ifdef CLOCK_SGI_CYCLE
+ test_timespec_get (TIME_SGI_CYCLE);
+#else
+ test_timespec_get_not_support (TIME_SGI_CYCLE);
+#endif
+#ifdef CLOCK_TAI
+ test_timespec_get (TIME_TAI);
+#else
+ test_timespec_get_not_support (TIME_TAI);
+#endif
+ }
+
return 0;
}
@@ -54,6 +54,41 @@ do_test (void)
test_timespec_getres (CLOCK_THREAD_CPUTIME_ID, TIME_THREAD_ACTIVE);
}
+ {
+ test_timespec_getres (CLOCK_MONOTONIC_RAW, TIME_MONOTONIC_RAW);
+ test_timespec_getres (CLOCK_REALTIME_COARSE, TIME_UTC_COARSE);
+ test_timespec_getres (CLOCK_MONOTONIC_COARSE, TIME_MONOTONIC_COARSE);
+ }
+
+ {
+ struct timespec ts;
+#ifdef CLOCK_BOOTTIME
+ test_timespec_getres (CLOCK_BOOTTIME, TIME_BOOTTIME);
+#else
+ TEST_COMPARE (timespec_getres (&ts, TIME_BOOTTIME), 0);
+#endif
+#ifdef CLOCK_REALTIME_ALARM
+ test_timespec_getres (CLOCK_REALTIME_ALARM, TIME_UTC_ALARM);
+#else
+ TEST_COMPARE (timespec_getres (&ts, TIME_UTC_ALARM), 0);
+#endif
+#ifdef CLOCK_BOOTTIME_ALARM
+ test_timespec_getres (CLOCK_BOOTTIME_ALARM, TIME_BOOTTIME_ALARM);
+#else
+ TEST_COMPARE (timespec_getres (&ts, TIME_BOOTTIME_ALARM), 0);
+#endif
+#ifdef CLOCK_SGI_CYCLE
+ test_timespec_getres (CLOCK_SGI_CYCLE, TIME_SGI_CYCLE);
+#else
+ TEST_COMPARE (timespec_getres (&ts, TIME_SGI_CYCLE), 0);
+#endif
+#ifdef CLOCK_TAI
+ test_timespec_getres (CLOCK_TAI, TIME_TAI);
+#else
+ TEST_COMPARE (timespec_getres (&ts, TIME_TAI), 0);
+#endif
+ }
+
return 0;
}
these are: TIME_MONOTONIC_RAW TIME_UTC_COARSE TIME_MONOTONIC_COARSE TIME_BOOTTIME TIME_UTC_ALARM TIME_BOOTTIME_ALARM TIME_SGI_CYCLE TIME_TAI according to https://gustedt.gitlabpages.inria.fr/c23-library/#time_monotonic-time_active-time_thread_active Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> --- NEWS | 10 ++++++++++ include/time.h | 34 +++++++++++++++++++++++++++++++ time/time.h | 10 ++++++++++ time/tst-timespec_get.c | 41 ++++++++++++++++++++++++++++++++++++++ time/tst-timespec_getres.c | 35 ++++++++++++++++++++++++++++++++ 5 files changed, 130 insertions(+)