From fa1e7ea054ae4bde00e3bc4d1996fa05ed001a6d Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 16 Mar 2021 09:32:58 +0100 Subject: validation: Reduce source code/rodata size Use a common wording for the tests. Use the new templates for action requirements described in the RTEMS Software Engineering manual. --- testsuites/validation/tc-barrier-wait.c | 183 ++++++++++---------------------- 1 file changed, 55 insertions(+), 128 deletions(-) (limited to 'testsuites/validation/tc-barrier-wait.c') diff --git a/testsuites/validation/tc-barrier-wait.c b/testsuites/validation/tc-barrier-wait.c index 6fd5b02d50..2f7e41a28c 100644 --- a/testsuites/validation/tc-barrier-wait.c +++ b/testsuites/validation/tc-barrier-wait.c @@ -264,7 +264,7 @@ static void RtemsBarrierReqWait_Pre_Id_Prepare( switch ( state ) { case RtemsBarrierReqWait_Pre_Id_NoObj: { /* - * The ``id`` parameter shall not be associated with a barrier. + * While the ``id`` parameter is not associated with a barrier. */ ctx->id = 0xffffffff; break; @@ -272,7 +272,7 @@ static void RtemsBarrierReqWait_Pre_Id_Prepare( case RtemsBarrierReqWait_Pre_Id_Manual: { /* - * The ``id`` parameter shall be associated with a manual release + * While the ``id`` parameter is associated with a manual release * barrier. */ ctx->id = ctx->manual_release_id; @@ -281,7 +281,7 @@ static void RtemsBarrierReqWait_Pre_Id_Prepare( case RtemsBarrierReqWait_Pre_Id_Auto: { /* - * The ``id`` parameter shall be associated with an automatic release + * While the ``id`` parameter is associated with an automatic release * barrier. */ ctx->id = ctx->auto_release_id; @@ -301,7 +301,7 @@ static void RtemsBarrierReqWait_Pre_Timeout_Prepare( switch ( state ) { case RtemsBarrierReqWait_Pre_Timeout_Ticks: { /* - * The ``released`` parameter shall be a clock tick interval. + * While the ``released`` parameter is a clock tick interval. */ ctx->timeout = 2; break; @@ -309,7 +309,7 @@ static void RtemsBarrierReqWait_Pre_Timeout_Prepare( case RtemsBarrierReqWait_Pre_Timeout_Forever: { /* - * The ``released`` parameter shall be RTEMS_NO_TIMEOUT. + * While the ``released`` parameter is RTEMS_NO_TIMEOUT. */ ctx->timeout = RTEMS_NO_TIMEOUT; break; @@ -328,7 +328,7 @@ static void RtemsBarrierReqWait_Pre_Satisfy_Prepare( switch ( state ) { case RtemsBarrierReqWait_Pre_Satisfy_Never: { /* - * While the calling task waits at the barrier, the barrier shall not be + * While the calling task waits at the barrier, while the barrier is not * released or deleted. */ if ( ctx->timeout == RTEMS_NO_TIMEOUT ) { @@ -339,7 +339,7 @@ static void RtemsBarrierReqWait_Pre_Satisfy_Prepare( case RtemsBarrierReqWait_Pre_Satisfy_Wait: { /* - * Calling the directive shall release the barrier. + * While calling the directive releases the barrier. */ SendEvents( ctx->high_worker_id, EVENT_WAIT ); break; @@ -347,7 +347,7 @@ static void RtemsBarrierReqWait_Pre_Satisfy_Prepare( case RtemsBarrierReqWait_Pre_Satisfy_Release: { /* - * While the calling task waits at the barrier, the barrier shall be + * While the calling task waits at the barrier, while the barrier is * released. */ SendEvents( ctx->low_worker_id, EVENT_RELEASE ); @@ -356,7 +356,7 @@ static void RtemsBarrierReqWait_Pre_Satisfy_Prepare( case RtemsBarrierReqWait_Pre_Satisfy_Delete: { /* - * While the calling task waits at the barrier, the barrier shall be + * While the calling task waits at the barrier, while the barrier is * deleted. */ SendEvents( ctx->low_worker_id, EVENT_DELETE ); @@ -533,6 +533,34 @@ static void RtemsBarrierReqWait_Teardown_Wrap( void *arg ) RtemsBarrierReqWait_Teardown( ctx ); } +static void RtemsBarrierReqWait_Action( RtemsBarrierReqWait_Context *ctx ) +{ + ctx->status = rtems_barrier_wait( ctx->id, ctx->timeout ); +} + +typedef struct { + uint8_t Skip : 1; + uint8_t Pre_Id_NA : 1; + uint8_t Pre_Timeout_NA : 1; + uint8_t Pre_Satisfy_NA : 1; + uint8_t Post_Status : 3; +} RtemsBarrierReqWait_Entry; + +static const RtemsBarrierReqWait_Entry +RtemsBarrierReqWait_Entries[] = { + { 0, 0, 1, 1, RtemsBarrierReqWait_Post_Status_InvId }, + { 0, 0, 0, 0, RtemsBarrierReqWait_Post_Status_Ok }, + { 0, 0, 0, 0, RtemsBarrierReqWait_Post_Status_ObjDel }, + { 0, 0, 0, 0, RtemsBarrierReqWait_Post_Status_Timeout }, + { 1, 0, 0, 0, RtemsBarrierReqWait_Post_Status_NA }, + { 0, 0, 0, 0, RtemsBarrierReqWait_Post_Status_NoReturn } +}; + +static const uint8_t +RtemsBarrierReqWait_Map[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 1, 2, 5, 4, 1, 2, 3, 1, 1, 2, 5, 1, 1, 2 +}; + static size_t RtemsBarrierReqWait_Scope( void *arg, char *buf, size_t n ) { RtemsBarrierReqWait_Context *ctx; @@ -554,118 +582,13 @@ static T_fixture RtemsBarrierReqWait_Fixture = { .initial_context = &RtemsBarrierReqWait_Instance }; -static const uint8_t RtemsBarrierReqWait_TransitionMap[][ 1 ] = { - { - RtemsBarrierReqWait_Post_Status_InvId - }, { - RtemsBarrierReqWait_Post_Status_InvId - }, { - RtemsBarrierReqWait_Post_Status_InvId - }, { - RtemsBarrierReqWait_Post_Status_InvId - }, { - RtemsBarrierReqWait_Post_Status_InvId - }, { - RtemsBarrierReqWait_Post_Status_InvId - }, { - RtemsBarrierReqWait_Post_Status_InvId - }, { - RtemsBarrierReqWait_Post_Status_InvId - }, { - RtemsBarrierReqWait_Post_Status_Timeout - }, { - RtemsBarrierReqWait_Post_Status_NA - }, { - RtemsBarrierReqWait_Post_Status_Ok - }, { - RtemsBarrierReqWait_Post_Status_ObjDel - }, { - RtemsBarrierReqWait_Post_Status_NoReturn - }, { - RtemsBarrierReqWait_Post_Status_NA - }, { - RtemsBarrierReqWait_Post_Status_Ok - }, { - RtemsBarrierReqWait_Post_Status_ObjDel - }, { - RtemsBarrierReqWait_Post_Status_Timeout - }, { - RtemsBarrierReqWait_Post_Status_Ok - }, { - RtemsBarrierReqWait_Post_Status_Ok - }, { - RtemsBarrierReqWait_Post_Status_ObjDel - }, { - RtemsBarrierReqWait_Post_Status_NoReturn - }, { - RtemsBarrierReqWait_Post_Status_Ok - }, { - RtemsBarrierReqWait_Post_Status_Ok - }, { - RtemsBarrierReqWait_Post_Status_ObjDel - } -}; - -static const struct { - uint8_t Skip : 1; - uint8_t Pre_Id_NA : 1; - uint8_t Pre_Timeout_NA : 1; - uint8_t Pre_Satisfy_NA : 1; -} RtemsBarrierReqWait_TransitionInfo[] = { - { - 0, 0, 1, 1 - }, { - 0, 0, 1, 1 - }, { - 0, 0, 1, 1 - }, { - 0, 0, 1, 1 - }, { - 0, 0, 1, 1 - }, { - 0, 0, 1, 1 - }, { - 0, 0, 1, 1 - }, { - 0, 0, 1, 1 - }, { - 0, 0, 0, 0 - }, { - 1, 0, 0, 0 - }, { - 0, 0, 0, 0 - }, { - 0, 0, 0, 0 - }, { - 0, 0, 0, 0 - }, { - 1, 0, 0, 0 - }, { - 0, 0, 0, 0 - }, { - 0, 0, 0, 0 - }, { - 0, 0, 0, 0 - }, { - 0, 0, 0, 0 - }, { - 0, 0, 0, 0 - }, { - 0, 0, 0, 0 - }, { - 0, 0, 0, 0 - }, { - 0, 0, 0, 0 - }, { - 0, 0, 0, 0 - }, { - 0, 0, 0, 0 - } -}; - -static void RtemsBarrierReqWait_Action( RtemsBarrierReqWait_Context *ctx ) +static inline RtemsBarrierReqWait_Entry RtemsBarrierReqWait_GetEntry( + size_t index +) { - ctx->status = rtems_barrier_wait( ctx->id, ctx->timeout ); + return RtemsBarrierReqWait_Entries[ + RtemsBarrierReqWait_Map[ index ] + ]; } /** @@ -674,6 +597,7 @@ static void RtemsBarrierReqWait_Action( RtemsBarrierReqWait_Context *ctx ) T_TEST_CASE_FIXTURE( RtemsBarrierReqWait, &RtemsBarrierReqWait_Fixture ) { RtemsBarrierReqWait_Context *ctx; + RtemsBarrierReqWait_Entry entry; size_t index; ctx = T_fixture_context(); @@ -685,7 +609,9 @@ T_TEST_CASE_FIXTURE( RtemsBarrierReqWait, &RtemsBarrierReqWait_Fixture ) ctx->pcs[ 0 ] < RtemsBarrierReqWait_Pre_Id_NA; ++ctx->pcs[ 0 ] ) { - if ( RtemsBarrierReqWait_TransitionInfo[ index ].Pre_Id_NA ) { + entry = RtemsBarrierReqWait_GetEntry( index ); + + if ( entry.Pre_Id_NA ) { ctx->pcs[ 0 ] = RtemsBarrierReqWait_Pre_Id_NA; index += ( RtemsBarrierReqWait_Pre_Id_NA - 1 ) * RtemsBarrierReqWait_Pre_Timeout_NA @@ -697,7 +623,9 @@ T_TEST_CASE_FIXTURE( RtemsBarrierReqWait, &RtemsBarrierReqWait_Fixture ) ctx->pcs[ 1 ] < RtemsBarrierReqWait_Pre_Timeout_NA; ++ctx->pcs[ 1 ] ) { - if ( RtemsBarrierReqWait_TransitionInfo[ index ].Pre_Timeout_NA ) { + entry = RtemsBarrierReqWait_GetEntry( index ); + + if ( entry.Pre_Timeout_NA ) { ctx->pcs[ 1 ] = RtemsBarrierReqWait_Pre_Timeout_NA; index += ( RtemsBarrierReqWait_Pre_Timeout_NA - 1 ) * RtemsBarrierReqWait_Pre_Satisfy_NA; @@ -708,12 +636,14 @@ T_TEST_CASE_FIXTURE( RtemsBarrierReqWait, &RtemsBarrierReqWait_Fixture ) ctx->pcs[ 2 ] < RtemsBarrierReqWait_Pre_Satisfy_NA; ++ctx->pcs[ 2 ] ) { - if ( RtemsBarrierReqWait_TransitionInfo[ index ].Pre_Satisfy_NA ) { + entry = RtemsBarrierReqWait_GetEntry( index ); + + if ( entry.Pre_Satisfy_NA ) { ctx->pcs[ 2 ] = RtemsBarrierReqWait_Pre_Satisfy_NA; index += ( RtemsBarrierReqWait_Pre_Satisfy_NA - 1 ); } - if ( RtemsBarrierReqWait_TransitionInfo[ index ].Skip ) { + if ( entry.Skip ) { ++index; continue; } @@ -722,10 +652,7 @@ T_TEST_CASE_FIXTURE( RtemsBarrierReqWait, &RtemsBarrierReqWait_Fixture ) RtemsBarrierReqWait_Pre_Timeout_Prepare( ctx, ctx->pcs[ 1 ] ); RtemsBarrierReqWait_Pre_Satisfy_Prepare( ctx, ctx->pcs[ 2 ] ); RtemsBarrierReqWait_Action( ctx ); - RtemsBarrierReqWait_Post_Status_Check( - ctx, - RtemsBarrierReqWait_TransitionMap[ index ][ 0 ] - ); + RtemsBarrierReqWait_Post_Status_Check( ctx, entry.Post_Status ); ++index; } } -- cgit v1.2.3