summaryrefslogtreecommitdiffstats
path: root/testsuites/validation/tc-barrier-wait.c
diff options
context:
space:
mode:
Diffstat (limited to 'testsuites/validation/tc-barrier-wait.c')
-rw-r--r--testsuites/validation/tc-barrier-wait.c40
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 ) );
}
}
}