[rtems commit] libtest: Use test configuration in T_now()

Sebastian Huber sebh at rtems.org
Fri Dec 20 10:09:06 UTC 2019


Module:    rtems
Branch:    master
Commit:    77ac1519e863b7095f69c976353f7647c6f6f63b
Changeset: http://git.rtems.org/rtems/commit/?id=77ac1519e863b7095f69c976353f7647c6f6f63b

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Dec 20 10:55:36 2019 +0100

libtest: Use test configuration in T_now()

Use the user provided now handler of the test configuration to get the
time in T_now().

---

 cpukit/include/t.h                      | 16 +++++-----------
 cpukit/libtest/t-test-time.c            | 15 ++++++++++-----
 cpukit/libtest/t-test.c                 | 11 +++++++++++
 testsuites/libtests/ttest01/init.c      | 29 ++---------------------------
 testsuites/libtests/ttest01/test-time.c |  8 ++++----
 5 files changed, 32 insertions(+), 47 deletions(-)

diff --git a/cpukit/include/t.h b/cpukit/include/t.h
index ec806a1..12a03b2 100644
--- a/cpukit/include/t.h
+++ b/cpukit/include/t.h
@@ -2146,29 +2146,23 @@ T_time T_seconds_and_nanoseconds_to_time(uint32_t, uint32_t);
 
 void T_time_to_seconds_and_nanoseconds(T_time, uint32_t *, uint32_t *);
 
-#ifdef __rtems__
-int64_t _Timecounter_Sbinuptime(void);
-
-static inline T_time
-T_now(void)
-{
-	return (T_time)_Timecounter_Sbinuptime();
-}
+T_time T_now(void);
 
+#ifdef __rtems__
 static inline T_ticks
 T_tick(void)
 {
 	return _CPU_Counter_read();
 }
 #else
-T_time T_now(void);
-
 T_ticks T_tick(void);
 #endif
 
+T_time T_now_clock(void);
+
 T_time T_now_dummy(void);
 
-T_time T_now_via_tick(void);
+T_time T_now_tick(void);
 
 T_time T_case_begin_time(void);
 
diff --git a/cpukit/libtest/t-test-time.c b/cpukit/libtest/t-test-time.c
index 02d729f..94a9ca3 100644
--- a/cpukit/libtest/t-test-time.c
+++ b/cpukit/libtest/t-test-time.c
@@ -201,16 +201,20 @@ T_time_to_seconds_and_nanoseconds(T_time time, uint32_t *s, uint32_t *ns)
 #endif
 }
 
-#ifndef __rtems__
 T_time
-T_now(void)
+T_now_clock(void)
 {
+#ifndef __rtems__
 	struct timespec tp;
 
 	(void)clock_gettime(CLOCK_MONOTONIC, &tp);
 	return (T_time)tp.tv_sec * (T_time)1000000000 + (T_time)tp.tv_nsec;
+#else /* __rtems__ */
+	return (T_time)_Timecounter_Sbinuptime();
+#endif /* __rtems__ */
 }
 
+#ifndef __rtems__
 T_ticks
 T_tick(void)
 {
@@ -218,16 +222,17 @@ T_tick(void)
 }
 #endif
 
-static atomic_uint dummy_time;
+static atomic_uint T_dummy_time;
 
 T_time
 T_now_dummy(void)
 {
-	return atomic_fetch_add_explicit(&dummy_time, 1, memory_order_relaxed);
+	return atomic_fetch_add_explicit(&T_dummy_time, 1,
+	    memory_order_relaxed);
 }
 
 T_time
-T_now_via_tick(void)
+T_now_tick(void)
 {
 	return T_ticks_to_time(T_tick());
 }
diff --git a/cpukit/libtest/t-test.c b/cpukit/libtest/t-test.c
index 5e9be54..aedf9a4 100644
--- a/cpukit/libtest/t-test.c
+++ b/cpukit/libtest/t-test.c
@@ -994,3 +994,14 @@ T_set_putchar(T_putchar new_putchar, void *new_arg, T_putchar *old_putchar,
 	ctx->putchar = new_putchar;
 	ctx->putchar_arg = new_arg;
 }
+
+T_time
+T_now(void)
+{
+	T_context *ctx;
+	const T_config *config;
+
+	ctx = &T_instance;
+	config = ctx->config;
+	return (*config->now)();
+}
diff --git a/testsuites/libtests/ttest01/init.c b/testsuites/libtests/ttest01/init.c
index b3ebfb5..31b57cf 100644
--- a/testsuites/libtests/ttest01/init.c
+++ b/testsuites/libtests/ttest01/init.c
@@ -32,8 +32,6 @@
 
 #include <rtems.h>
 #include <rtems/bspIo.h>
-#include <rtems/timecounter.h>
-#include <rtems/sysinit.h>
 
 #include "t-self-test.h"
 
@@ -54,7 +52,6 @@ typedef struct {
 	const char *c;
 	size_t case_begin_count;
 	size_t case_end_count;
-	struct timecounter tc;
 	T_putchar putchar;
 	void *putchar_arg;
 	const char *censor_c;
@@ -180,8 +177,8 @@ run_initialize(void)
 	T_set_putchar(censor_putchar, ctx, &ctx->putchar, &ctx->putchar_arg);
 }
 
-static const char expected_final[] = "Z:ttest01:C:341:N:1316:F:790:D:0.682999\n"
-"Y:ReportHash:SHA256:62d6f3b37299137932ea2c2f0505c8b8f12b95749c81d5af19570e9470203475\n";
+static const char expected_final[] = "Z:ttest01:C:341:N:1316:F:790:D:0.685999\n"
+"Y:ReportHash:SHA256:cb5ba027ade5b907d9e988776e393835f34a76cc2381d67bb9db44d986a3fecf\n";
 
 static void
 run_finalize(void)
@@ -226,28 +223,6 @@ now(void)
 	return t * SBT_1MS;
 }
 
-static uint32_t
-get_timecount(struct timecounter *tc)
-{
-	return 0;
-}
-
-static void
-install_timecounter(void)
-{
-	test_context *ctx;
-
-	ctx = &test_instance;
-	ctx->tc.tc_get_timecount = get_timecount;
-	ctx->tc.tc_counter_mask = 0xffffffff;
-	ctx->tc.tc_frequency = 1000000000;
-	ctx->tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER + 1;
-	rtems_timecounter_install(&ctx->tc);
-}
-
-RTEMS_SYSINIT_ITEM(install_timecounter, RTEMS_SYSINIT_DEVICE_DRIVERS,
-    RTEMS_SYSINIT_ORDER_FIRST);
-
 static char buffer[512];
 
 static const T_action actions[] = {
diff --git a/testsuites/libtests/ttest01/test-time.c b/testsuites/libtests/ttest01/test-time.c
index 01e6516..20148d7 100644
--- a/testsuites/libtests/ttest01/test-time.c
+++ b/testsuites/libtests/ttest01/test-time.c
@@ -203,8 +203,8 @@ T_TEST_OUTPUT(time_to_string,
 
 T_TEST_OUTPUT(now,
 "B:now\n"
-"L:0.000000000\n"
-"E:now:N:0:F:0:D:0.001000\n");
+"L:0.001000000\n"
+"E:now:N:0:F:0:D:0.003000\n");
 
 T_TEST_OUTPUT(tick,
 "B:tick\n"
@@ -268,8 +268,8 @@ T_TEST_OUTPUT(ticks,
 
 T_TEST_OUTPUT(begin_time,
 "B:begin_time\n"
-"L:time at test case begin 0.325000046\n"
-"E:begin_time:N:0:F:0:D:0.001000\n");
+"L:time at test case begin 0.001000000\n"
+"E:begin_time:N:0:F:0:D:0.002000\n");
 
 /*
  * The license is at the end of the file to be able to use the test code and



More information about the vc mailing list