diff options
Diffstat (limited to 'testsuites/validation/tc-barrier-wait.c')
-rw-r--r-- | testsuites/validation/tc-barrier-wait.c | 40 |
1 files changed, 15 insertions, 25 deletions
diff --git a/testsuites/validation/tc-barrier-wait.c b/testsuites/validation/tc-barrier-wait.c index b67acabe13..bd24c9e3a5 100644 --- a/testsuites/validation/tc-barrier-wait.c +++ b/testsuites/validation/tc-barrier-wait.c @@ -529,7 +529,6 @@ static inline RtemsBarrierReqWait_Entry RtemsBarrierReqWait_GetEntry( T_TEST_CASE_FIXTURE( RtemsBarrierReqWait, &RtemsBarrierReqWait_Fixture ) { RtemsBarrierReqWait_Context *ctx; - RtemsBarrierReqWait_Entry entry; size_t index; ctx = T_fixture_context(); @@ -541,51 +540,42 @@ T_TEST_CASE_FIXTURE( RtemsBarrierReqWait, &RtemsBarrierReqWait_Fixture ) ctx->pcs[ 0 ] < RtemsBarrierReqWait_Pre_Id_NA; ++ctx->pcs[ 0 ] ) { - 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 - * RtemsBarrierReqWait_Pre_Satisfy_NA; - } - for ( ctx->pcs[ 1 ] = RtemsBarrierReqWait_Pre_Timeout_Ticks; ctx->pcs[ 1 ] < RtemsBarrierReqWait_Pre_Timeout_NA; ++ctx->pcs[ 1 ] ) { - 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; - } - for ( ctx->pcs[ 2 ] = RtemsBarrierReqWait_Pre_Satisfy_Never; ctx->pcs[ 2 ] < RtemsBarrierReqWait_Pre_Satisfy_NA; ++ctx->pcs[ 2 ] ) { - entry = RtemsBarrierReqWait_GetEntry( index ); + RtemsBarrierReqWait_Entry entry; + size_t pcs[ 3 ]; - if ( entry.Pre_Satisfy_NA ) { - ctx->pcs[ 2 ] = RtemsBarrierReqWait_Pre_Satisfy_NA; - index += ( RtemsBarrierReqWait_Pre_Satisfy_NA - 1 ); - } + entry = RtemsBarrierReqWait_GetEntry( index ); + ++index; if ( entry.Skip ) { - ++index; continue; } + memcpy( pcs, ctx->pcs, sizeof( pcs ) ); + + if ( entry.Pre_Timeout_NA ) { + ctx->pcs[ 1 ] = RtemsBarrierReqWait_Pre_Timeout_NA; + } + + if ( entry.Pre_Satisfy_NA ) { + ctx->pcs[ 2 ] = RtemsBarrierReqWait_Pre_Satisfy_NA; + } + RtemsBarrierReqWait_Pre_Id_Prepare( ctx, ctx->pcs[ 0 ] ); RtemsBarrierReqWait_Pre_Timeout_Prepare( ctx, ctx->pcs[ 1 ] ); RtemsBarrierReqWait_Pre_Satisfy_Prepare( ctx, ctx->pcs[ 2 ] ); RtemsBarrierReqWait_Action( ctx ); RtemsBarrierReqWait_Post_Status_Check( ctx, entry.Post_Status ); - ++index; + memcpy( ctx->pcs, pcs, sizeof( ctx->pcs ) ); } } } |