diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-12-20 10:55:36 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-12-20 11:06:13 +0100 |
commit | 77ac1519e863b7095f69c976353f7647c6f6f63b (patch) | |
tree | dae63260f998c0afcbced1394496d6d3df1547fb | |
parent | libtest: Fix use of T_check_true() (diff) | |
download | rtems-77ac1519e863b7095f69c976353f7647c6f6f63b.tar.bz2 |
libtest: Use test configuration in T_now()
Use the user provided now handler of the test configuration to get the
time in T_now().
-rw-r--r-- | cpukit/include/t.h | 16 | ||||
-rw-r--r-- | cpukit/libtest/t-test-time.c | 15 | ||||
-rw-r--r-- | cpukit/libtest/t-test.c | 11 | ||||
-rw-r--r-- | testsuites/libtests/ttest01/init.c | 29 | ||||
-rw-r--r-- | 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 ec806a1f68..12a03b2a1c 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 02d729f580..94a9ca393b 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 5e9be54ed2..aedf9a49b1 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 b3ebfb5b73..31b57cf6f9 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 01e6516cf2..20148d7ea1 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 |