From 661e0e6377b16cb52c46c87877ed182bcf39ef01 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 15 Jun 2016 11:18:10 +0200 Subject: psxtests/psx12: Use and print proper rounded ms Update #2738. --- testsuites/psxtests/psx12/init.c | 35 ++++++++++++++++++++--------------- testsuites/psxtests/psx12/psx12.scn | 12 ++++++------ 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/testsuites/psxtests/psx12/init.c b/testsuites/psxtests/psx12/init.c index 559cad1d7e..d7218933ee 100644 --- a/testsuites/psxtests/psx12/init.c +++ b/testsuites/psxtests/psx12/init.c @@ -22,9 +22,11 @@ const char rtems_test_name[] = "PSX 12"; -#define SS_REPL_PERIOD_US 200000 +#define SS_REPL_PERIOD_NS 200000000 -#define SS_INIT_BUDGET_US 100000 +#define SS_INIT_BUDGET_NS 100000000 + +#define SS_REPL_PERIOD_MS ( SS_REPL_PERIOD_NS / 1000000 ) #define SS_PRIO_LOW 1 @@ -35,8 +37,8 @@ const char rtems_test_name[] = "PSX 12"; typedef struct { uint64_t start; struct { - uint64_t high; - uint64_t low; + uint32_t high; + uint32_t low; } samples[ SS_SAMPLE_PERIODS ]; } test_context; @@ -74,9 +76,12 @@ static uint64_t now( void ) return timeval_to_us( &now ); } -static uint64_t delta( test_context *ctx ) +static uint32_t delta_in_ms( test_context *ctx ) { - return now() - ctx->start; + uint32_t d; + + d = (uint32_t) ( now() - ctx->start ); + return ( d + 499 ) / 1000; } static void *sporadic_server( void *argument ) @@ -88,9 +93,9 @@ static void *sporadic_server( void *argument ) for ( i = 0 ; i < SS_SAMPLE_PERIODS ; ++i ) { wait_for_prio( SS_PRIO_LOW ); - ctx->samples[ i ].high = delta( ctx ); + ctx->samples[ i ].high = delta_in_ms( ctx ); wait_for_prio( SS_PRIO_HIGH ); - ctx->samples[ i ].low = delta( ctx ); + ctx->samples[ i ].low = delta_in_ms( ctx ); } puts( "Sporadic Server: exitting" ); @@ -164,9 +169,9 @@ static void *POSIX_Init( void *argument ) /* invalid sched_ss_low_priority error */ schedparam.sched_ss_repl_period.tv_sec = 0; - schedparam.sched_ss_repl_period.tv_nsec = SS_REPL_PERIOD_US * 1000; + schedparam.sched_ss_repl_period.tv_nsec = SS_REPL_PERIOD_NS; schedparam.sched_ss_init_budget.tv_sec = 0; - schedparam.sched_ss_init_budget.tv_nsec = SS_INIT_BUDGET_US * 1000; + schedparam.sched_ss_init_budget.tv_nsec = SS_INIT_BUDGET_NS; schedparam.sched_priority = SS_PRIO_HIGH; schedparam.sched_ss_low_priority = -1; @@ -181,9 +186,9 @@ static void *POSIX_Init( void *argument ) /* create a thread as a sporadic server */ schedparam.sched_ss_repl_period.tv_sec = 0; - schedparam.sched_ss_repl_period.tv_nsec = SS_REPL_PERIOD_US * 1000; + schedparam.sched_ss_repl_period.tv_nsec = SS_REPL_PERIOD_NS; schedparam.sched_ss_init_budget.tv_sec = 0; - schedparam.sched_ss_init_budget.tv_nsec = SS_INIT_BUDGET_US * 1000; + schedparam.sched_ss_init_budget.tv_nsec = SS_INIT_BUDGET_NS; schedparam.sched_priority = SS_PRIO_HIGH; schedparam.sched_ss_low_priority = SS_PRIO_LOW; @@ -205,9 +210,9 @@ static void *POSIX_Init( void *argument ) rtems_test_assert( !status ); for ( i = 0 ; i < SS_SAMPLE_PERIODS ; ++i ) { - printf( "[%zu] H %6" PRIu64 "us\n", i, ctx->samples[ i ].high ); - printf( "[%zu] L %6" PRIu64 "us\n", i, ctx->samples[ i ].low ); - rtems_test_assert( ctx->samples[ i ].low / SS_REPL_PERIOD_US == i + 1 ); + printf( "[%zu] H %3" PRIu32 "ms\n", i, ctx->samples[ i ].high ); + printf( "[%zu] L %3" PRIu32 "ms\n", i, ctx->samples[ i ].low ); + rtems_test_assert( ctx->samples[ i ].low / SS_REPL_PERIOD_MS == i + 1 ); } TEST_END(); diff --git a/testsuites/psxtests/psx12/psx12.scn b/testsuites/psxtests/psx12/psx12.scn index 8cdc94b103..6640e220dd 100644 --- a/testsuites/psxtests/psx12/psx12.scn +++ b/testsuites/psxtests/psx12/psx12.scn @@ -8,10 +8,10 @@ Init: pthread_create - EINVAL (replenish < budget) Init: pthread_create - EINVAL (invalid sched_ss_low_priority) Init: pthread_create - SUCCESSFUL Sporadic Server: exitting -[0] H 99902us -[0] L 200008us -[1] H 289908us -[1] L 400009us -[2] H 489903us -[2] L 600009us +[0] H 100ms +[0] L 200ms +[1] H 290ms +[1] L 400ms +[2] H 490ms +[2] L 600ms *** END OF TEST PSX 12 *** -- cgit v1.2.3