diff options
Diffstat (limited to 'testsuites/validation/tc-intr-set-affinity.c')
-rw-r--r-- | testsuites/validation/tc-intr-set-affinity.c | 387 |
1 files changed, 280 insertions, 107 deletions
diff --git a/testsuites/validation/tc-intr-set-affinity.c b/testsuites/validation/tc-intr-set-affinity.c index b2b47baea8..3354681b47 100644 --- a/testsuites/validation/tc-intr-set-affinity.c +++ b/testsuites/validation/tc-intr-set-affinity.c @@ -3,11 +3,11 @@ /** * @file * - * @ingroup RTEMSTestCaseRtemsIntrReqSetAffinity + * @ingroup RtemsIntrReqSetAffinity */ /* - * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * Copyright (C) 2021, 2022 embedded brains GmbH & Co. KG * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -60,10 +60,9 @@ #include <rtems/test.h> /** - * @defgroup RTEMSTestCaseRtemsIntrReqSetAffinity \ - * spec:/rtems/intr/req/set-affinity + * @defgroup RtemsIntrReqSetAffinity spec:/rtems/intr/req/set-affinity * - * @ingroup RTEMSTestSuiteTestsuitesValidation0 + * @ingroup TestsuitesValidationIntr * * @{ */ @@ -75,11 +74,23 @@ typedef enum { } RtemsIntrReqSetAffinity_Pre_Vector; typedef enum { - RtemsIntrReqSetAffinity_Pre_CPUSetKind_Valid, - RtemsIntrReqSetAffinity_Pre_CPUSetKind_Huge, - RtemsIntrReqSetAffinity_Pre_CPUSetKind_Askew, - RtemsIntrReqSetAffinity_Pre_CPUSetKind_NA -} RtemsIntrReqSetAffinity_Pre_CPUSetKind; + RtemsIntrReqSetAffinity_Pre_CPUSetSize_Askew, + RtemsIntrReqSetAffinity_Pre_CPUSetSize_Normal, + RtemsIntrReqSetAffinity_Pre_CPUSetSize_Huge, + RtemsIntrReqSetAffinity_Pre_CPUSetSize_NA +} RtemsIntrReqSetAffinity_Pre_CPUSetSize; + +typedef enum { + RtemsIntrReqSetAffinity_Pre_CPUSetOnline_Valid, + RtemsIntrReqSetAffinity_Pre_CPUSetOnline_Empty, + RtemsIntrReqSetAffinity_Pre_CPUSetOnline_NA +} RtemsIntrReqSetAffinity_Pre_CPUSetOnline; + +typedef enum { + RtemsIntrReqSetAffinity_Pre_CPUSetHuge_NotZero, + RtemsIntrReqSetAffinity_Pre_CPUSetHuge_Zero, + RtemsIntrReqSetAffinity_Pre_CPUSetHuge_NA +} RtemsIntrReqSetAffinity_Pre_CPUSetHuge; typedef enum { RtemsIntrReqSetAffinity_Pre_CPUSet_Valid, @@ -103,11 +114,23 @@ typedef enum { } RtemsIntrReqSetAffinity_Post_Status; typedef enum { - RtemsIntrReqSetAffinity_Post_SetAffinity_Yes, + RtemsIntrReqSetAffinity_Post_SetAffinity_Set, RtemsIntrReqSetAffinity_Post_SetAffinity_Nop, RtemsIntrReqSetAffinity_Post_SetAffinity_NA } RtemsIntrReqSetAffinity_Post_SetAffinity; +typedef struct { + uint16_t Skip : 1; + uint16_t Pre_Vector_NA : 1; + uint16_t Pre_CPUSetSize_NA : 1; + uint16_t Pre_CPUSetOnline_NA : 1; + uint16_t Pre_CPUSetHuge_NA : 1; + uint16_t Pre_CPUSet_NA : 1; + uint16_t Pre_CanSetAffinity_NA : 1; + uint16_t Post_Status : 3; + uint16_t Post_SetAffinity : 2; +} RtemsIntrReqSetAffinity_Entry; + /** * @brief Test context for spec:/rtems/intr/req/set-affinity test case. */ @@ -150,16 +173,39 @@ typedef struct { */ cpu_set_t *cpuset; - /** - * @brief This member defines the pre-condition states for the next action. - */ - size_t pcs[ 4 ]; - - /** - * @brief This member indicates if the test action loop is currently - * executed. - */ - bool in_action_loop; + struct { + /** + * @brief This member defines the pre-condition indices for the next + * action. + */ + size_t pci[ 6 ]; + + /** + * @brief This member defines the pre-condition states for the next action. + */ + size_t pcs[ 6 ]; + + /** + * @brief If this member is true, then the test action loop is executed. + */ + bool in_action_loop; + + /** + * @brief This member contains the next transition map index. + */ + size_t index; + + /** + * @brief This member contains the current transition map entry. + */ + RtemsIntrReqSetAffinity_Entry entry; + + /** + * @brief If this member is true, then the current transition variant + * should be skipped. + */ + bool skip; + } Map; } RtemsIntrReqSetAffinity_Context; static RtemsIntrReqSetAffinity_Context @@ -171,10 +217,22 @@ static const char * const RtemsIntrReqSetAffinity_PreDesc_Vector[] = { "NA" }; -static const char * const RtemsIntrReqSetAffinity_PreDesc_CPUSetKind[] = { - "Valid", - "Huge", +static const char * const RtemsIntrReqSetAffinity_PreDesc_CPUSetSize[] = { "Askew", + "Normal", + "Huge", + "NA" +}; + +static const char * const RtemsIntrReqSetAffinity_PreDesc_CPUSetOnline[] = { + "Valid", + "Empty", + "NA" +}; + +static const char * const RtemsIntrReqSetAffinity_PreDesc_CPUSetHuge[] = { + "NotZero", + "Zero", "NA" }; @@ -192,7 +250,9 @@ static const char * const RtemsIntrReqSetAffinity_PreDesc_CanSetAffinity[] = { static const char * const * const RtemsIntrReqSetAffinity_PreDesc[] = { RtemsIntrReqSetAffinity_PreDesc_Vector, - RtemsIntrReqSetAffinity_PreDesc_CPUSetKind, + RtemsIntrReqSetAffinity_PreDesc_CPUSetSize, + RtemsIntrReqSetAffinity_PreDesc_CPUSetOnline, + RtemsIntrReqSetAffinity_PreDesc_CPUSetHuge, RtemsIntrReqSetAffinity_PreDesc_CPUSet, RtemsIntrReqSetAffinity_PreDesc_CanSetAffinity, NULL @@ -268,43 +328,107 @@ static void RtemsIntrReqSetAffinity_Pre_Vector_Prepare( } } -static void RtemsIntrReqSetAffinity_Pre_CPUSetKind_Prepare( +static void RtemsIntrReqSetAffinity_Pre_CPUSetSize_Prepare( RtemsIntrReqSetAffinity_Context *ctx, - RtemsIntrReqSetAffinity_Pre_CPUSetKind state + RtemsIntrReqSetAffinity_Pre_CPUSetSize state ) { switch ( state ) { - case RtemsIntrReqSetAffinity_Pre_CPUSetKind_Valid: { + case RtemsIntrReqSetAffinity_Pre_CPUSetSize_Askew: { + /* + * While the ``affinity_size`` parameter is not an integral multiple of + * the size of long. + */ + ctx->cpusetsize = SIZE_MAX; + break; + } + + case RtemsIntrReqSetAffinity_Pre_CPUSetSize_Normal: { /* * While the ``affinity_size`` parameter is an integral multiple of the - * size of long, while the ``affinity_size`` and ``affinity`` parameter - * specify a processor set which is within the implementation limits. + * size of long, while the ``affinity_size`` parameter is less than or + * equal to the maximum processor set size storable in the system. */ ctx->cpusetsize = sizeof( ctx->cpuset_obj[ 0 ] ); break; } - case RtemsIntrReqSetAffinity_Pre_CPUSetKind_Huge: { + case RtemsIntrReqSetAffinity_Pre_CPUSetSize_Huge: { /* * While the ``affinity_size`` parameter is an integral multiple of the - * size of long, while the ``affinity_size`` and ``affinity`` parameter - * specify a processor set which exceeds the implementation limits. + * size of long, while the ``affinity_size`` parameter is greater than + * the maximum processor set size storable in the system. */ ctx->cpusetsize = sizeof( ctx->cpuset_obj ); + break; + } + + case RtemsIntrReqSetAffinity_Pre_CPUSetSize_NA: + break; + } +} + +static void RtemsIntrReqSetAffinity_Pre_CPUSetOnline_Prepare( + RtemsIntrReqSetAffinity_Context *ctx, + RtemsIntrReqSetAffinity_Pre_CPUSetOnline state +) +{ + switch ( state ) { + case RtemsIntrReqSetAffinity_Pre_CPUSetOnline_Valid: { + /* + * While the intersection of the processor set specified by the + * ``affinity_size`` and ``affinity`` parameters and the set of online + * processors is not empty, while the intersection of the processor set + * specified by the ``affinity_size`` and ``affinity`` parameters and the + * set of online processors is a processor affinity set supported by the + * interrupt vector. + */ + /* Already prepared */ + break; + } + + case RtemsIntrReqSetAffinity_Pre_CPUSetOnline_Empty: { + /* + * While the intersection of the processor set specified by the + * ``affinity_size`` and ``affinity`` parameters and the set of online + * processors is empty. + */ CPU_ZERO( &ctx->cpuset_obj[ 0 ] ); break; } - case RtemsIntrReqSetAffinity_Pre_CPUSetKind_Askew: { + case RtemsIntrReqSetAffinity_Pre_CPUSetOnline_NA: + break; + } +} + +static void RtemsIntrReqSetAffinity_Pre_CPUSetHuge_Prepare( + RtemsIntrReqSetAffinity_Context *ctx, + RtemsIntrReqSetAffinity_Pre_CPUSetHuge state +) +{ + switch ( state ) { + case RtemsIntrReqSetAffinity_Pre_CPUSetHuge_NotZero: { + /* + * While the processor set specified by the ``affinity_size`` and + * ``affinity`` parameters contains at least one processor which is not + * storable in a processor set supported by the system. + */ + /* Already prepared */ + break; + } + + case RtemsIntrReqSetAffinity_Pre_CPUSetHuge_Zero: { /* - * While the ``affinity_size`` parameter is not an integral multiple of - * the size of long. + * While the processor set specified by the ``affinity_size`` and + * ``affinity`` parameters contains no processor which is not storable in + * a processor set supported by the system. */ - ctx->cpusetsize = SIZE_MAX; + CPU_ZERO( &ctx->cpuset_obj[ 1 ] ); break; } - case RtemsIntrReqSetAffinity_Pre_CPUSetKind_NA: + case RtemsIntrReqSetAffinity_Pre_CPUSetHuge_NA: break; } } @@ -428,7 +552,7 @@ static void RtemsIntrReqSetAffinity_Post_SetAffinity_Check( ) { switch ( state ) { - case RtemsIntrReqSetAffinity_Post_SetAffinity_Yes: { + case RtemsIntrReqSetAffinity_Post_SetAffinity_Set: { /* * The affinity set of the interrupt specified by ``vector`` shall be set * to the processor set specified by ``affinity_size`` and ``affinity`` @@ -467,7 +591,7 @@ static void RtemsIntrReqSetAffinity_Setup_Wrap( void *arg ) RtemsIntrReqSetAffinity_Context *ctx; ctx = arg; - ctx->in_action_loop = false; + ctx->Map.in_action_loop = false; RtemsIntrReqSetAffinity_Setup( ctx ); } @@ -486,7 +610,7 @@ static void RtemsIntrReqSetAffinity_Action( if ( ctx->valid_vector && ctx->cpusetsize == sizeof( ctx->cpuset_obj[ 0 ] ) && - ctx->cpuset == &ctx->cpuset_obj[ 0 ] + ctx->cpuset == &ctx->cpuset_obj[ 0 ] && !CPU_EMPTY( &ctx->cpuset_obj[ 0 ] ) ) { for ( ctx->vector = 0; @@ -505,6 +629,7 @@ static void RtemsIntrReqSetAffinity_Action( T_rsc_success( sc ); CheckSetAffinity( ctx, &attr ); + ctx->status = RTEMS_SUCCESSFUL; } } else { cpu_set_t set; @@ -512,6 +637,8 @@ static void RtemsIntrReqSetAffinity_Action( CPU_ZERO( &set ); CPU_ZERO( &set2 ); + CPU_SET( 0, &set ); + CPU_SET( 0, &set2 ); if ( ctx->valid_vector ) { ctx->vector = ctx->some_vector; @@ -522,7 +649,9 @@ static void RtemsIntrReqSetAffinity_Action( ctx->vector = BSP_INTERRUPT_VECTOR_COUNT; } - CPU_ZERO( &ctx->cpuset_obj[ 0 ] ); + if ( !CPU_EMPTY( &ctx->cpuset_obj[ 0 ] ) ) { + CPU_COPY( &set, &ctx->cpuset_obj[ 0 ] ); + } ctx->status = rtems_interrupt_set_affinity( ctx->vector, @@ -538,35 +667,36 @@ static void RtemsIntrReqSetAffinity_Action( } } -typedef struct { - uint16_t Skip : 1; - uint16_t Pre_Vector_NA : 1; - uint16_t Pre_CPUSetKind_NA : 1; - uint16_t Pre_CPUSet_NA : 1; - uint16_t Pre_CanSetAffinity_NA : 1; - uint16_t Post_Status : 3; - uint16_t Post_SetAffinity : 2; -} RtemsIntrReqSetAffinity_Entry; - static const RtemsIntrReqSetAffinity_Entry RtemsIntrReqSetAffinity_Entries[] = { - { 0, 0, 0, 0, 0, RtemsIntrReqSetAffinity_Post_Status_InvAddr, + { 0, 0, 0, 1, 1, 0, 0, RtemsIntrReqSetAffinity_Post_Status_InvAddr, + RtemsIntrReqSetAffinity_Post_SetAffinity_Nop }, + { 0, 0, 0, 1, 1, 0, 1, RtemsIntrReqSetAffinity_Post_Status_InvAddr, + RtemsIntrReqSetAffinity_Post_SetAffinity_Nop }, + { 0, 0, 0, 1, 1, 0, 1, RtemsIntrReqSetAffinity_Post_Status_InvId, + RtemsIntrReqSetAffinity_Post_SetAffinity_Nop }, + { 0, 0, 0, 0, 1, 0, 0, RtemsIntrReqSetAffinity_Post_Status_InvNum, RtemsIntrReqSetAffinity_Post_SetAffinity_Nop }, - { 0, 0, 0, 0, 1, RtemsIntrReqSetAffinity_Post_Status_InvId, - RtemsIntrReqSetAffinity_Post_SetAffinity_NA }, - { 0, 0, 0, 0, 1, RtemsIntrReqSetAffinity_Post_Status_InvAddr, - RtemsIntrReqSetAffinity_Post_SetAffinity_NA }, - { 0, 0, 0, 0, 0, RtemsIntrReqSetAffinity_Post_Status_InvNum, + { 0, 0, 0, 1, 0, 0, 1, RtemsIntrReqSetAffinity_Post_Status_InvId, RtemsIntrReqSetAffinity_Post_SetAffinity_Nop }, - { 0, 0, 0, 0, 0, RtemsIntrReqSetAffinity_Post_Status_Ok, - RtemsIntrReqSetAffinity_Post_SetAffinity_Yes }, - { 0, 0, 0, 0, 0, RtemsIntrReqSetAffinity_Post_Status_Unsat, + { 0, 0, 0, 0, 0, 0, 0, RtemsIntrReqSetAffinity_Post_Status_InvNum, + RtemsIntrReqSetAffinity_Post_SetAffinity_Nop }, + { 0, 0, 0, 0, 1, 0, 0, RtemsIntrReqSetAffinity_Post_Status_Ok, + RtemsIntrReqSetAffinity_Post_SetAffinity_Set }, + { 0, 0, 0, 0, 1, 0, 0, RtemsIntrReqSetAffinity_Post_Status_Unsat, + RtemsIntrReqSetAffinity_Post_SetAffinity_Nop }, + { 0, 0, 0, 0, 0, 0, 0, RtemsIntrReqSetAffinity_Post_Status_Ok, + RtemsIntrReqSetAffinity_Post_SetAffinity_Set }, + { 0, 0, 0, 0, 0, 0, 0, RtemsIntrReqSetAffinity_Post_Status_Unsat, RtemsIntrReqSetAffinity_Post_SetAffinity_Nop } }; static const uint8_t RtemsIntrReqSetAffinity_Map[] = { - 4, 5, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2 + 3, 3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 6, 7, 0, 0, 6, 7, 0, 0, 3, 3, + 0, 0, 3, 3, 0, 0, 8, 9, 0, 0, 8, 9, 0, 0, 5, 5, 0, 0, 5, 5, 0, 0, 2, 2, 1, 1, + 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, + 1, 1, 4, 4, 1, 1, 4, 4, 1, 1, 4, 4, 1, 1, 4, 4, 1, 1 }; static size_t RtemsIntrReqSetAffinity_Scope( void *arg, char *buf, size_t n ) @@ -575,8 +705,13 @@ static size_t RtemsIntrReqSetAffinity_Scope( void *arg, char *buf, size_t n ) ctx = arg; - if ( ctx->in_action_loop ) { - return T_get_scope( RtemsIntrReqSetAffinity_PreDesc, buf, n, ctx->pcs ); + if ( ctx->Map.in_action_loop ) { + return T_get_scope( + RtemsIntrReqSetAffinity_PreDesc, + buf, + n, + ctx->Map.pcs + ); } return 0; @@ -590,15 +725,65 @@ static T_fixture RtemsIntrReqSetAffinity_Fixture = { .initial_context = &RtemsIntrReqSetAffinity_Instance }; -static inline RtemsIntrReqSetAffinity_Entry RtemsIntrReqSetAffinity_GetEntry( - size_t index +static inline RtemsIntrReqSetAffinity_Entry RtemsIntrReqSetAffinity_PopEntry( + RtemsIntrReqSetAffinity_Context *ctx ) { + size_t index; + + index = ctx->Map.index; + ctx->Map.index = index + 1; return RtemsIntrReqSetAffinity_Entries[ RtemsIntrReqSetAffinity_Map[ index ] ]; } +static void RtemsIntrReqSetAffinity_SetPreConditionStates( + RtemsIntrReqSetAffinity_Context *ctx +) +{ + ctx->Map.pcs[ 0 ] = ctx->Map.pci[ 0 ]; + ctx->Map.pcs[ 1 ] = ctx->Map.pci[ 1 ]; + + if ( ctx->Map.entry.Pre_CPUSetOnline_NA ) { + ctx->Map.pcs[ 2 ] = RtemsIntrReqSetAffinity_Pre_CPUSetOnline_NA; + } else { + ctx->Map.pcs[ 2 ] = ctx->Map.pci[ 2 ]; + } + + if ( ctx->Map.entry.Pre_CPUSetHuge_NA ) { + ctx->Map.pcs[ 3 ] = RtemsIntrReqSetAffinity_Pre_CPUSetHuge_NA; + } else { + ctx->Map.pcs[ 3 ] = ctx->Map.pci[ 3 ]; + } + + ctx->Map.pcs[ 4 ] = ctx->Map.pci[ 4 ]; + + if ( ctx->Map.entry.Pre_CanSetAffinity_NA ) { + ctx->Map.pcs[ 5 ] = RtemsIntrReqSetAffinity_Pre_CanSetAffinity_NA; + } else { + ctx->Map.pcs[ 5 ] = ctx->Map.pci[ 5 ]; + } +} + +static void RtemsIntrReqSetAffinity_TestVariant( + RtemsIntrReqSetAffinity_Context *ctx +) +{ + RtemsIntrReqSetAffinity_Pre_Vector_Prepare( ctx, ctx->Map.pcs[ 0 ] ); + RtemsIntrReqSetAffinity_Pre_CPUSetSize_Prepare( ctx, ctx->Map.pcs[ 1 ] ); + RtemsIntrReqSetAffinity_Pre_CPUSetOnline_Prepare( ctx, ctx->Map.pcs[ 2 ] ); + RtemsIntrReqSetAffinity_Pre_CPUSetHuge_Prepare( ctx, ctx->Map.pcs[ 3 ] ); + RtemsIntrReqSetAffinity_Pre_CPUSet_Prepare( ctx, ctx->Map.pcs[ 4 ] ); + RtemsIntrReqSetAffinity_Pre_CanSetAffinity_Prepare( ctx, ctx->Map.pcs[ 5 ] ); + RtemsIntrReqSetAffinity_Action( ctx ); + RtemsIntrReqSetAffinity_Post_Status_Check( ctx, ctx->Map.entry.Post_Status ); + RtemsIntrReqSetAffinity_Post_SetAffinity_Check( + ctx, + ctx->Map.entry.Post_SetAffinity + ); +} + /** * @fn void T_case_body_RtemsIntrReqSetAffinity( void ) */ @@ -608,59 +793,47 @@ T_TEST_CASE_FIXTURE( ) { RtemsIntrReqSetAffinity_Context *ctx; - size_t index; ctx = T_fixture_context(); - ctx->in_action_loop = true; - index = 0; + ctx->Map.in_action_loop = true; + ctx->Map.index = 0; for ( - ctx->pcs[ 0 ] = RtemsIntrReqSetAffinity_Pre_Vector_Valid; - ctx->pcs[ 0 ] < RtemsIntrReqSetAffinity_Pre_Vector_NA; - ++ctx->pcs[ 0 ] + ctx->Map.pci[ 0 ] = RtemsIntrReqSetAffinity_Pre_Vector_Valid; + ctx->Map.pci[ 0 ] < RtemsIntrReqSetAffinity_Pre_Vector_NA; + ++ctx->Map.pci[ 0 ] ) { for ( - ctx->pcs[ 1 ] = RtemsIntrReqSetAffinity_Pre_CPUSetKind_Valid; - ctx->pcs[ 1 ] < RtemsIntrReqSetAffinity_Pre_CPUSetKind_NA; - ++ctx->pcs[ 1 ] + ctx->Map.pci[ 1 ] = RtemsIntrReqSetAffinity_Pre_CPUSetSize_Askew; + ctx->Map.pci[ 1 ] < RtemsIntrReqSetAffinity_Pre_CPUSetSize_NA; + ++ctx->Map.pci[ 1 ] ) { for ( - ctx->pcs[ 2 ] = RtemsIntrReqSetAffinity_Pre_CPUSet_Valid; - ctx->pcs[ 2 ] < RtemsIntrReqSetAffinity_Pre_CPUSet_NA; - ++ctx->pcs[ 2 ] + ctx->Map.pci[ 2 ] = RtemsIntrReqSetAffinity_Pre_CPUSetOnline_Valid; + ctx->Map.pci[ 2 ] < RtemsIntrReqSetAffinity_Pre_CPUSetOnline_NA; + ++ctx->Map.pci[ 2 ] ) { for ( - ctx->pcs[ 3 ] = RtemsIntrReqSetAffinity_Pre_CanSetAffinity_Yes; - ctx->pcs[ 3 ] < RtemsIntrReqSetAffinity_Pre_CanSetAffinity_NA; - ++ctx->pcs[ 3 ] + ctx->Map.pci[ 3 ] = RtemsIntrReqSetAffinity_Pre_CPUSetHuge_NotZero; + ctx->Map.pci[ 3 ] < RtemsIntrReqSetAffinity_Pre_CPUSetHuge_NA; + ++ctx->Map.pci[ 3 ] ) { - RtemsIntrReqSetAffinity_Entry entry; - size_t pcs[ 4 ]; - - entry = RtemsIntrReqSetAffinity_GetEntry( index ); - ++index; - - memcpy( pcs, ctx->pcs, sizeof( pcs ) ); - - if ( entry.Pre_CanSetAffinity_NA ) { - ctx->pcs[ 3 ] = RtemsIntrReqSetAffinity_Pre_CanSetAffinity_NA; + for ( + ctx->Map.pci[ 4 ] = RtemsIntrReqSetAffinity_Pre_CPUSet_Valid; + ctx->Map.pci[ 4 ] < RtemsIntrReqSetAffinity_Pre_CPUSet_NA; + ++ctx->Map.pci[ 4 ] + ) { + for ( + ctx->Map.pci[ 5 ] = RtemsIntrReqSetAffinity_Pre_CanSetAffinity_Yes; + ctx->Map.pci[ 5 ] < RtemsIntrReqSetAffinity_Pre_CanSetAffinity_NA; + ++ctx->Map.pci[ 5 ] + ) { + ctx->Map.entry = RtemsIntrReqSetAffinity_PopEntry( ctx ); + RtemsIntrReqSetAffinity_SetPreConditionStates( ctx ); + RtemsIntrReqSetAffinity_Prepare( ctx ); + RtemsIntrReqSetAffinity_TestVariant( ctx ); + } } - - RtemsIntrReqSetAffinity_Prepare( ctx ); - RtemsIntrReqSetAffinity_Pre_Vector_Prepare( ctx, ctx->pcs[ 0 ] ); - RtemsIntrReqSetAffinity_Pre_CPUSetKind_Prepare( ctx, ctx->pcs[ 1 ] ); - RtemsIntrReqSetAffinity_Pre_CPUSet_Prepare( ctx, ctx->pcs[ 2 ] ); - RtemsIntrReqSetAffinity_Pre_CanSetAffinity_Prepare( - ctx, - ctx->pcs[ 3 ] - ); - RtemsIntrReqSetAffinity_Action( ctx ); - RtemsIntrReqSetAffinity_Post_Status_Check( ctx, entry.Post_Status ); - RtemsIntrReqSetAffinity_Post_SetAffinity_Check( - ctx, - entry.Post_SetAffinity - ); - memcpy( ctx->pcs, pcs, sizeof( ctx->pcs ) ); } } } |