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-signal-catch.c | 1126 +++++++------------------------ 1 file changed, 262 insertions(+), 864 deletions(-) (limited to 'testsuites/validation/tc-signal-catch.c') diff --git a/testsuites/validation/tc-signal-catch.c b/testsuites/validation/tc-signal-catch.c index e513fdc621..9025521aa9 100644 --- a/testsuites/validation/tc-signal-catch.c +++ b/testsuites/validation/tc-signal-catch.c @@ -105,69 +105,93 @@ typedef enum { typedef enum { RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, RtemsSignalReqCatch_Post_Status_NotImplIntLvl, + RtemsSignalReqCatch_Post_Status_NotImplIntLvlSMP, + RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, RtemsSignalReqCatch_Post_Status_NA } RtemsSignalReqCatch_Post_Status; typedef enum { - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Send_NA -} RtemsSignalReqCatch_Post_Send; - -typedef enum { - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Preempt_NA -} RtemsSignalReqCatch_Post_Preempt; - -typedef enum { - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_Timeslice_NA -} RtemsSignalReqCatch_Post_Timeslice; - -typedef enum { - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_ASR_NA -} RtemsSignalReqCatch_Post_ASR; - -typedef enum { - RtemsSignalReqCatch_Post_IntLvl_Zero, - RtemsSignalReqCatch_Post_IntLvl_Positive, - RtemsSignalReqCatch_Post_IntLvl_NA -} RtemsSignalReqCatch_Post_IntLvl; + RtemsSignalReqCatch_Post_ASRInfo_NopIntLvl, + RtemsSignalReqCatch_Post_ASRInfo_NopIntLvlSMP, + RtemsSignalReqCatch_Post_ASRInfo_NopNoPreempt, + RtemsSignalReqCatch_Post_ASRInfo_New, + RtemsSignalReqCatch_Post_ASRInfo_Inactive, + RtemsSignalReqCatch_Post_ASRInfo_NA +} RtemsSignalReqCatch_Post_ASRInfo; /** * @brief Test context for spec:/rtems/signal/req/catch test case. */ typedef struct { + /** + * @brief This member contains the object identifier of the runner task. + */ rtems_id runner_id; + /** + * @brief This member contains the object identifier of the worker task. + */ rtems_id worker_id; + /** + * @brief null If this member is non-zero, then rtems_signal_catch() is + * called with pending signals, otherwise it is called with no pending + * signals. + */ uint32_t pending_signals; + /** + * @brief This member provides a barrier to synchronize the runner and worker + * tasks. + */ SMP_barrier_Control barrier; + /** + * @brief This member is used for barrier operations done by the runner task. + */ SMP_barrier_State runner_barrier_state; + /** + * @brief When the default handler is called, this member is incremented. + */ uint32_t default_handler_calls; + /** + * @brief When the handler is called, this member is incremented. + */ uint32_t handler_calls; + /** + * @brief This member contains the mode observed in the last handler call. + */ rtems_mode handler_mode; + /** + * @brief This member specifies the normal task mode for the action. + */ rtems_mode normal_mode; + /** + * @brief This member specifies the handler for the action. + */ rtems_asr_entry handler; + /** + * @brief This member specifies the task mode for the action. + */ rtems_mode mode; + /** + * @brief This member contains the return status of the rtems_signal_catch() + * call of the action. + */ rtems_status_code catch_status; + /** + * @brief This member contains the return status of the rtems_signal_send() + * call of the action. + */ rtems_status_code send_status; /** @@ -269,12 +293,20 @@ static void SignalHandler( rtems_signal_set signal_set ) } } -static void CheckHandlerMode( Context *ctx, rtems_mode mask, rtems_mode mode ) +static void CheckNoASRChange( Context *ctx ) { - if ( ctx->catch_status == RTEMS_SUCCESSFUL && ctx->handler != NULL ) { - T_ne_u32( ctx->handler_mode, 0xffffffff ); - T_eq_u32( ctx->handler_mode & mask, mode ); - } + T_rsc_success( ctx->send_status ); + T_eq_u32( ctx->default_handler_calls, 1 + ctx->pending_signals ); + T_eq_u32( ctx->handler_calls, 0 ); + T_eq_u32( ctx->handler_mode, 0xffffffff ); +} + +static void CheckNewASRSettings( Context *ctx ) +{ + T_rsc_success( ctx->send_status ); + T_eq_u32( ctx->default_handler_calls, 0 ); + T_eq_u32( ctx->handler_calls, 1 + ctx->pending_signals ); + T_eq_u32( ctx->handler_mode, ctx->mode ); } static void Worker( rtems_task_argument arg ) @@ -306,19 +338,22 @@ static void RtemsSignalReqCatch_Pre_Pending_Prepare( case RtemsSignalReqCatch_Pre_Pending_Yes: { /* * Where the system has more than one processor, while the calling task - * has pending signals, the rtems_signal_catch() directive shall be - * called. Where the system has exactly one processor, while the calling - * task has no pending signals, the rtems_signal_catch() directive shall - * be called. + * has pending signals. + * + * Where the system has exactly one processor, while the calling task has + * no pending signals. */ - ctx->pending_signals = ( rtems_scheduler_get_processor_maximum() > 1 ) ? 1 : 0; + if ( rtems_scheduler_get_processor_maximum() > 1 ) { + ctx->pending_signals = 1; + } else { + ctx->pending_signals = 0; + } break; } case RtemsSignalReqCatch_Pre_Pending_No: { /* - * While the calling task has no pending signals, the - * rtems_signal_catch() directive shall be called. + * While the calling task has no pending signals. */ ctx->pending_signals = 0; break; @@ -337,7 +372,7 @@ static void RtemsSignalReqCatch_Pre_Handler_Prepare( switch ( state ) { case RtemsSignalReqCatch_Pre_Handler_Invalid: { /* - * The ``asr_handler`` parameter shall be NULL. + * While the ``asr_handler`` parameter is NULL. */ ctx->handler = NULL; break; @@ -345,7 +380,7 @@ static void RtemsSignalReqCatch_Pre_Handler_Prepare( case RtemsSignalReqCatch_Pre_Handler_Valid: { /* - * The ``asr_handler`` parameter shall be a valid ASR handler. + * While the ``asr_handler`` parameter is a valid ASR handler. */ ctx->handler = SignalHandler; break; @@ -364,21 +399,18 @@ static void RtemsSignalReqCatch_Pre_Preempt_Prepare( switch ( state ) { case RtemsSignalReqCatch_Pre_Preempt_Yes: { /* - * The ``mode_set`` parameter shall specify that preemption is enabled. + * While the ``mode_set`` parameter specifies that preemption is enabled. */ - #if defined(RTEMS_SMP) if ( rtems_configuration_get_maximum_processors() == 1 ) { ctx->normal_mode |= RTEMS_NO_PREEMPT; } - #else - ctx->normal_mode |= RTEMS_NO_PREEMPT; - #endif break; } case RtemsSignalReqCatch_Pre_Preempt_No: { /* - * The ``mode_set`` parameter shall specify that preemption is disabled. + * While the ``mode_set`` parameter specifies that preemption is + * disabled. */ ctx->mode |= RTEMS_NO_PREEMPT; break; @@ -397,7 +429,8 @@ static void RtemsSignalReqCatch_Pre_Timeslice_Prepare( switch ( state ) { case RtemsSignalReqCatch_Pre_Timeslice_Yes: { /* - * The ``mode_set`` parameter shall specify that timeslicing is enabled. + * While the ``mode_set`` parameter specifies that timeslicing is + * enabled. */ ctx->mode |= RTEMS_TIMESLICE; break; @@ -405,7 +438,8 @@ static void RtemsSignalReqCatch_Pre_Timeslice_Prepare( case RtemsSignalReqCatch_Pre_Timeslice_No: { /* - * The ``mode_set`` parameter shall specify that timeslicing is disabled. + * While the ``mode_set`` parameter specifies that timeslicing is + * disabled. */ ctx->normal_mode |= RTEMS_TIMESLICE; break; @@ -424,16 +458,18 @@ static void RtemsSignalReqCatch_Pre_ASR_Prepare( switch ( state ) { case RtemsSignalReqCatch_Pre_ASR_Yes: { /* - * The ``mode_set`` parameter shall specify that ASR processing is + * While the ``mode_set`` parameter specifies that ASR processing is * enabled. */ - /* We cannot disable ASR processing at normal task level for this test */ + /* + * We cannot disable ASR processing at normal task level for this state. + */ break; } case RtemsSignalReqCatch_Pre_ASR_No: { /* - * The ``mode_set`` parameter shall specify that ASR processing is + * While the ``mode_set`` parameter specifies that ASR processing is * disabled. */ ctx->mode |= RTEMS_NO_ASR; @@ -453,9 +489,9 @@ static void RtemsSignalReqCatch_Pre_IntLvl_Prepare( switch ( state ) { case RtemsSignalReqCatch_Pre_IntLvl_Zero: { /* - * The ``mode_set`` parameter shall specify an interrupt level of zero. + * While the ``mode_set`` parameter specifies an interrupt level of zero. */ - #if !defined(RTEMS_SMP) && CPU_ENABLE_ROBUST_THREAD_DISPATCH == FALSE + #if CPU_ENABLE_ROBUST_THREAD_DISPATCH == FALSE && !defined(RTEMS_SMP) ctx->normal_mode |= RTEMS_INTERRUPT_LEVEL( 1 ); #endif break; @@ -463,7 +499,9 @@ static void RtemsSignalReqCatch_Pre_IntLvl_Prepare( case RtemsSignalReqCatch_Pre_IntLvl_Positive: { /* - * The ``mode_set`` parameter shall specify a positive interrupt level. + * While the ``mode_set`` parameter specifies an interrupt level greater + * than or equal to one and less than or equal to + * CPU_MODES_INTERRUPT_MASK. */ ctx->mode |= RTEMS_INTERRUPT_LEVEL( 1 ); break; @@ -488,226 +526,131 @@ static void RtemsSignalReqCatch_Post_Status_Check( break; } - case RtemsSignalReqCatch_Post_Status_NotImplNoPreempt: { + case RtemsSignalReqCatch_Post_Status_NotImplIntLvl: { /* - * Where the system is configured with SMP support, if the scheduler does - * not support the no-preempt mode, then the return status of - * rtems_signal_catch() shall be RTEMS_NOT_IMPLEMENTED, otherwise the - * return status shall be RTEMS_SUCCESSFUL. + * The return status of rtems_signal_catch() shall be + * RTEMS_NOT_IMPLEMENTED. */ - #if defined(RTEMS_SMP) - if ( rtems_configuration_get_maximum_processors() > 1 ) { - T_rsc( ctx->catch_status, RTEMS_NOT_IMPLEMENTED ); - } else { - T_rsc_success( ctx->catch_status ); - } - #else - T_rsc_success( ctx->catch_status ); - #endif + T_rsc( ctx->catch_status, RTEMS_NOT_IMPLEMENTED ); break; } - case RtemsSignalReqCatch_Post_Status_NotImplIntLvl: { + case RtemsSignalReqCatch_Post_Status_NotImplIntLvlSMP: { /* - * Where the system is configured with SMP support and the configured - * processor maximum is greater than one, or the CPU port enabled robust - * thread dispatching, the return status of rtems_signal_catch() shall be - * RTEMS_NOT_IMPLEMENTED, otherwise the return status shall be - * RTEMS_SUCCESSFUL. + * Where the system needs inter-processor interrupts, the return status + * of rtems_signal_catch() shall be RTEMS_NOT_IMPLEMENTED. + * + * Where the system does not need inter-processor interrupts, the return + * status of rtems_signal_catch() shall be RTEMS_SUCCESSFUL. */ - #if CPU_ENABLE_ROBUST_THREAD_DISPATCH == TRUE - T_rsc( ctx->catch_status, RTEMS_NOT_IMPLEMENTED ); - #elif defined(RTEMS_SMP) if ( rtems_configuration_get_maximum_processors() > 1 ) { T_rsc( ctx->catch_status, RTEMS_NOT_IMPLEMENTED ); } else { T_rsc_success( ctx->catch_status ); } - #else - T_rsc_success( ctx->catch_status ); - #endif - break; - } - - case RtemsSignalReqCatch_Post_Status_NA: - break; - } -} - -static void RtemsSignalReqCatch_Post_Send_Check( - RtemsSignalReqCatch_Context *ctx, - RtemsSignalReqCatch_Post_Send state -) -{ - switch ( state ) { - case RtemsSignalReqCatch_Post_Send_New: { - /* - * When a signal set is sent to the caller of rtems_signal_catch() and - * the call was successful, the ASR processing shall be done with the - * specified handler, otherwise the ASR information of the caller shall - * be unchanged. - */ - T_rsc_success( ctx->send_status ); - - if ( ctx->catch_status == RTEMS_SUCCESSFUL ) { - T_eq_u32( ctx->default_handler_calls, 0 ); - T_eq_u32( ctx->handler_calls, 1 + ctx->pending_signals ); - T_ne_u32( ctx->handler_mode, 0xffffffff ); - } else { - T_eq_u32( ctx->default_handler_calls, 1 + ctx->pending_signals ); - T_eq_u32( ctx->handler_calls, 0 ); - T_eq_u32( ctx->handler_mode, 0xffffffff ); - } break; } - case RtemsSignalReqCatch_Post_Send_NotDef: { + case RtemsSignalReqCatch_Post_Status_NotImplNoPreempt: { /* - * When a signal set is sent to the caller of rtems_signal_catch() and - * the call was successful, the ASR processing shall be deactivated and - * all pending signals shall be cleared, otherwise the ASR information of - * the caller shall be unchanged. + * Where the scheduler does not support the no-preempt mode, the return + * status of rtems_signal_catch() shall be RTEMS_NOT_IMPLEMENTED. + * + * Where the scheduler does support the no-preempt mode, the return + * status of rtems_signal_catch() shall be RTEMS_SUCCESSFUL. */ - if ( ctx->catch_status == RTEMS_SUCCESSFUL ) { - T_rsc( ctx->send_status, RTEMS_NOT_DEFINED ); - T_eq_u32( ctx->default_handler_calls, 0 ); - T_eq_u32( ctx->handler_calls, 0 ); - T_eq_u32( ctx->handler_mode, 0xffffffff ); + if ( rtems_configuration_get_maximum_processors() > 1 ) { + T_rsc( ctx->catch_status, RTEMS_NOT_IMPLEMENTED ); } else { - T_rsc_success( ctx->send_status ); - T_eq_u32( ctx->default_handler_calls, 1 + ctx->pending_signals ); - T_eq_u32( ctx->handler_calls, 0 ); - T_eq_u32( ctx->handler_mode, 0xffffffff ); + T_rsc_success( ctx->catch_status ); } break; } - case RtemsSignalReqCatch_Post_Send_NA: + case RtemsSignalReqCatch_Post_Status_NA: break; } } -static void RtemsSignalReqCatch_Post_Preempt_Check( +static void RtemsSignalReqCatch_Post_ASRInfo_Check( RtemsSignalReqCatch_Context *ctx, - RtemsSignalReqCatch_Post_Preempt state + RtemsSignalReqCatch_Post_ASRInfo state ) { switch ( state ) { - case RtemsSignalReqCatch_Post_Preempt_Yes: { - /* - * When a signal set is sent to the caller of rtems_signal_catch() and - * the call with a valid handler was successful, the ASR processing shall - * be done with preemption enabled. - */ - CheckHandlerMode( ctx, RTEMS_PREEMPT_MASK, RTEMS_PREEMPT ); - break; - } - - case RtemsSignalReqCatch_Post_Preempt_No: { - /* - * When a signal set is sent to the caller of rtems_signal_catch() and - * the call with a valid handler was successful, the ASR processing shall - * be done with preemption disabled. - */ - CheckHandlerMode( ctx, RTEMS_PREEMPT_MASK, RTEMS_NO_PREEMPT ); - break; - } - - case RtemsSignalReqCatch_Post_Preempt_NA: - break; - } -} - -static void RtemsSignalReqCatch_Post_Timeslice_Check( - RtemsSignalReqCatch_Context *ctx, - RtemsSignalReqCatch_Post_Timeslice state -) -{ - switch ( state ) { - case RtemsSignalReqCatch_Post_Timeslice_Yes: { - /* - * When a signal set is sent to the caller of rtems_signal_catch() and - * the call with a valid handler was successful, the ASR processing shall - * be done with timeslicing enabled. - */ - CheckHandlerMode( ctx, RTEMS_TIMESLICE_MASK, RTEMS_TIMESLICE ); - break; - } - - case RtemsSignalReqCatch_Post_Timeslice_No: { + case RtemsSignalReqCatch_Post_ASRInfo_NopIntLvl: { /* - * When a signal set is sent to the caller of rtems_signal_catch() and - * the call with a valid handler was successful, the ASR processing shall - * be done with timeslicing disabled. + * The ASR information of the caller of rtems_signal_catch() shall not be + * changed by the rtems_signal_catch() call. */ - CheckHandlerMode( ctx, RTEMS_TIMESLICE_MASK, RTEMS_NO_TIMESLICE ); + CheckNoASRChange( ctx ); break; } - case RtemsSignalReqCatch_Post_Timeslice_NA: - break; - } -} - -static void RtemsSignalReqCatch_Post_ASR_Check( - RtemsSignalReqCatch_Context *ctx, - RtemsSignalReqCatch_Post_ASR state -) -{ - switch ( state ) { - case RtemsSignalReqCatch_Post_ASR_Yes: { + case RtemsSignalReqCatch_Post_ASRInfo_NopIntLvlSMP: { /* - * When a signal set is sent to the caller of rtems_signal_catch() and - * the call with a valid handler was successful, the ASR processing shall - * be done with ASR processing enabled. + * Where the system needs inter-processor interrupts, the ASR information + * of the caller of rtems_signal_catch() shall not be changed by the + * rtems_signal_catch() call. + * + * Where the system does not need inter-processor interrupts, the ASR + * processing for the caller of rtems_signal_catch() shall be done using + * the handler specified by ``asr_handler`` in the mode specified by + * ``mode_set``. */ - CheckHandlerMode( ctx, RTEMS_ASR_MASK, RTEMS_ASR ); + if ( rtems_configuration_get_maximum_processors() > 1 ) { + CheckNoASRChange( ctx ); + } else { + CheckNewASRSettings( ctx ); + } break; } - case RtemsSignalReqCatch_Post_ASR_No: { + case RtemsSignalReqCatch_Post_ASRInfo_NopNoPreempt: { /* - * When a signal set is sent to the caller of rtems_signal_catch() and - * the call with a valid handler was successful, the ASR processing shall - * be done with ASR processing disabled. + * Where the scheduler does not support the no-preempt mode, the ASR + * information of the caller of rtems_signal_catch() shall not be changed + * by the rtems_signal_catch() call. + * + * Where the scheduler does support the no-preempt mode, the ASR + * processing for the caller of rtems_signal_catch() shall be done using + * the handler specified by ``asr_handler`` in the mode specified by + * ``mode_set``. */ - CheckHandlerMode( ctx, RTEMS_ASR_MASK, RTEMS_NO_ASR ); + if ( rtems_configuration_get_maximum_processors() > 1 ) { + CheckNoASRChange( ctx ); + } else { + CheckNewASRSettings( ctx ); + } break; } - case RtemsSignalReqCatch_Post_ASR_NA: - break; - } -} - -static void RtemsSignalReqCatch_Post_IntLvl_Check( - RtemsSignalReqCatch_Context *ctx, - RtemsSignalReqCatch_Post_IntLvl state -) -{ - switch ( state ) { - case RtemsSignalReqCatch_Post_IntLvl_Zero: { + case RtemsSignalReqCatch_Post_ASRInfo_New: { /* - * When a signal set is sent to the caller of rtems_signal_catch() and - * the call with a valid handler was successful, the ASR processing shall - * be done with interrupts enabled. + * The ASR processing for the caller of rtems_signal_catch() shall be + * done using the handler specified by ``asr_handler`` in the mode + * specified by ``mode_set``. */ - CheckHandlerMode( ctx, RTEMS_INTERRUPT_MASK, RTEMS_INTERRUPT_LEVEL( 0 ) ); + CheckNewASRSettings( ctx ); break; } - case RtemsSignalReqCatch_Post_IntLvl_Positive: { + case RtemsSignalReqCatch_Post_ASRInfo_Inactive: { /* - * When a signal set is sent to the caller of rtems_signal_catch() and - * the call with a valid handler was successful, the ASR processing shall - * be done with interrupts disabled according to the specified interrupt - * level. + * The ASR processing for the caller of rtems_signal_catch() shall be + * deactivated. + * + * The pending signals of the caller of rtems_signal_catch() shall be + * cleared. */ - CheckHandlerMode( ctx, RTEMS_INTERRUPT_MASK, RTEMS_INTERRUPT_LEVEL( 1 ) ); + T_rsc( ctx->send_status, RTEMS_NOT_DEFINED ); + T_eq_u32( ctx->default_handler_calls, 0 ); + T_eq_u32( ctx->handler_calls, 0 ); + T_eq_u32( ctx->handler_mode, 0xffffffff ); break; } - case RtemsSignalReqCatch_Post_IntLvl_NA: + case RtemsSignalReqCatch_Post_ASRInfo_NA: break; } } @@ -779,619 +722,6 @@ static void RtemsSignalReqCatch_Teardown_Wrap( void *arg ) RtemsSignalReqCatch_Teardown( ctx ); } -static size_t RtemsSignalReqCatch_Scope( void *arg, char *buf, size_t n ) -{ - RtemsSignalReqCatch_Context *ctx; - - ctx = arg; - - if ( ctx->in_action_loop ) { - return T_get_scope( RtemsSignalReqCatch_PreDesc, buf, n, ctx->pcs ); - } - - return 0; -} - -static T_fixture RtemsSignalReqCatch_Fixture = { - .setup = RtemsSignalReqCatch_Setup_Wrap, - .stop = NULL, - .teardown = RtemsSignalReqCatch_Teardown_Wrap, - .scope = RtemsSignalReqCatch_Scope, - .initial_context = &RtemsSignalReqCatch_Instance -}; - -static const uint8_t RtemsSignalReqCatch_TransitionMap[][ 6 ] = { - { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_NotDef, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_Ok, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_Yes, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_Yes, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_Yes, - RtemsSignalReqCatch_Post_IntLvl_Positive - }, { - RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Zero - }, { - RtemsSignalReqCatch_Post_Status_NotImplIntLvl, - RtemsSignalReqCatch_Post_Send_New, - RtemsSignalReqCatch_Post_Preempt_No, - RtemsSignalReqCatch_Post_Timeslice_No, - RtemsSignalReqCatch_Post_ASR_No, - RtemsSignalReqCatch_Post_IntLvl_Positive - } -}; - -static const struct { - uint8_t Skip : 1; - uint8_t Pre_Pending_NA : 1; - uint8_t Pre_Handler_NA : 1; - uint8_t Pre_Preempt_NA : 1; - uint8_t Pre_Timeslice_NA : 1; - uint8_t Pre_ASR_NA : 1; - uint8_t Pre_IntLvl_NA : 1; -} RtemsSignalReqCatch_TransitionInfo[] = { - { - 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, 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, 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, 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, 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, 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, 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 - }, { - 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, 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, 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, 0, 0, 0, 0 - }, { - 0, 0, 0, 0, 0, 0, 0 - }, { - 0, 0, 0, 0, 0, 0, 0 - } -}; - static void RtemsSignalReqCatch_Prepare( RtemsSignalReqCatch_Context *ctx ) { rtems_status_code sc; @@ -1433,12 +763,87 @@ static void RtemsSignalReqCatch_Action( RtemsSignalReqCatch_Context *ctx ) T_rsc_success( sc ); } +typedef struct { + uint16_t Skip : 1; + uint16_t Pre_Pending_NA : 1; + uint16_t Pre_Handler_NA : 1; + uint16_t Pre_Preempt_NA : 1; + uint16_t Pre_Timeslice_NA : 1; + uint16_t Pre_ASR_NA : 1; + uint16_t Pre_IntLvl_NA : 1; + uint16_t Post_Status : 3; + uint16_t Post_ASRInfo : 3; +} RtemsSignalReqCatch_Entry; + +static const RtemsSignalReqCatch_Entry +RtemsSignalReqCatch_Entries[] = { + { 0, 0, 0, 0, 0, 0, 0, RtemsSignalReqCatch_Post_Status_Ok, + RtemsSignalReqCatch_Post_ASRInfo_Inactive }, +#if CPU_ENABLE_ROBUST_THREAD_DISPATCH == TRUE + { 0, 0, 0, 0, 0, 0, 0, RtemsSignalReqCatch_Post_Status_NotImplIntLvl, + RtemsSignalReqCatch_Post_ASRInfo_NopIntLvl }, +#elif defined(RTEMS_SMP) + { 0, 0, 0, 0, 0, 0, 0, RtemsSignalReqCatch_Post_Status_NotImplIntLvlSMP, + RtemsSignalReqCatch_Post_ASRInfo_NopIntLvlSMP }, +#else + { 0, 0, 0, 0, 0, 0, 0, RtemsSignalReqCatch_Post_Status_Ok, + RtemsSignalReqCatch_Post_ASRInfo_New }, +#endif + { 0, 0, 0, 0, 0, 0, 0, RtemsSignalReqCatch_Post_Status_Ok, + RtemsSignalReqCatch_Post_ASRInfo_New }, +#if defined(RTEMS_SMP) + { 0, 0, 0, 0, 0, 0, 0, RtemsSignalReqCatch_Post_Status_NotImplNoPreempt, + RtemsSignalReqCatch_Post_ASRInfo_NopNoPreempt } +#else + { 0, 0, 0, 0, 0, 0, 0, RtemsSignalReqCatch_Post_Status_Ok, + RtemsSignalReqCatch_Post_ASRInfo_New } +#endif +}; + +static const uint8_t +RtemsSignalReqCatch_Map[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, + 3, 1, 3, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, + 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1 +}; + +static size_t RtemsSignalReqCatch_Scope( void *arg, char *buf, size_t n ) +{ + RtemsSignalReqCatch_Context *ctx; + + ctx = arg; + + if ( ctx->in_action_loop ) { + return T_get_scope( RtemsSignalReqCatch_PreDesc, buf, n, ctx->pcs ); + } + + return 0; +} + +static T_fixture RtemsSignalReqCatch_Fixture = { + .setup = RtemsSignalReqCatch_Setup_Wrap, + .stop = NULL, + .teardown = RtemsSignalReqCatch_Teardown_Wrap, + .scope = RtemsSignalReqCatch_Scope, + .initial_context = &RtemsSignalReqCatch_Instance +}; + +static inline RtemsSignalReqCatch_Entry RtemsSignalReqCatch_GetEntry( + size_t index +) +{ + return RtemsSignalReqCatch_Entries[ + RtemsSignalReqCatch_Map[ index ] + ]; +} + /** * @fn void T_case_body_RtemsSignalReqCatch( void ) */ T_TEST_CASE_FIXTURE( RtemsSignalReqCatch, &RtemsSignalReqCatch_Fixture ) { RtemsSignalReqCatch_Context *ctx; + RtemsSignalReqCatch_Entry entry; size_t index; ctx = T_fixture_context(); @@ -1450,7 +855,9 @@ T_TEST_CASE_FIXTURE( RtemsSignalReqCatch, &RtemsSignalReqCatch_Fixture ) ctx->pcs[ 0 ] < RtemsSignalReqCatch_Pre_Pending_NA; ++ctx->pcs[ 0 ] ) { - if ( RtemsSignalReqCatch_TransitionInfo[ index ].Pre_Pending_NA ) { + entry = RtemsSignalReqCatch_GetEntry( index ); + + if ( entry.Pre_Pending_NA ) { ctx->pcs[ 0 ] = RtemsSignalReqCatch_Pre_Pending_NA; index += ( RtemsSignalReqCatch_Pre_Pending_NA - 1 ) * RtemsSignalReqCatch_Pre_Handler_NA @@ -1465,7 +872,9 @@ T_TEST_CASE_FIXTURE( RtemsSignalReqCatch, &RtemsSignalReqCatch_Fixture ) ctx->pcs[ 1 ] < RtemsSignalReqCatch_Pre_Handler_NA; ++ctx->pcs[ 1 ] ) { - if ( RtemsSignalReqCatch_TransitionInfo[ index ].Pre_Handler_NA ) { + entry = RtemsSignalReqCatch_GetEntry( index ); + + if ( entry.Pre_Handler_NA ) { ctx->pcs[ 1 ] = RtemsSignalReqCatch_Pre_Handler_NA; index += ( RtemsSignalReqCatch_Pre_Handler_NA - 1 ) * RtemsSignalReqCatch_Pre_Preempt_NA @@ -1479,7 +888,9 @@ T_TEST_CASE_FIXTURE( RtemsSignalReqCatch, &RtemsSignalReqCatch_Fixture ) ctx->pcs[ 2 ] < RtemsSignalReqCatch_Pre_Preempt_NA; ++ctx->pcs[ 2 ] ) { - if ( RtemsSignalReqCatch_TransitionInfo[ index ].Pre_Preempt_NA ) { + entry = RtemsSignalReqCatch_GetEntry( index ); + + if ( entry.Pre_Preempt_NA ) { ctx->pcs[ 2 ] = RtemsSignalReqCatch_Pre_Preempt_NA; index += ( RtemsSignalReqCatch_Pre_Preempt_NA - 1 ) * RtemsSignalReqCatch_Pre_Timeslice_NA @@ -1492,7 +903,9 @@ T_TEST_CASE_FIXTURE( RtemsSignalReqCatch, &RtemsSignalReqCatch_Fixture ) ctx->pcs[ 3 ] < RtemsSignalReqCatch_Pre_Timeslice_NA; ++ctx->pcs[ 3 ] ) { - if ( RtemsSignalReqCatch_TransitionInfo[ index ].Pre_Timeslice_NA ) { + entry = RtemsSignalReqCatch_GetEntry( index ); + + if ( entry.Pre_Timeslice_NA ) { ctx->pcs[ 3 ] = RtemsSignalReqCatch_Pre_Timeslice_NA; index += ( RtemsSignalReqCatch_Pre_Timeslice_NA - 1 ) * RtemsSignalReqCatch_Pre_ASR_NA @@ -1504,7 +917,9 @@ T_TEST_CASE_FIXTURE( RtemsSignalReqCatch, &RtemsSignalReqCatch_Fixture ) ctx->pcs[ 4 ] < RtemsSignalReqCatch_Pre_ASR_NA; ++ctx->pcs[ 4 ] ) { - if ( RtemsSignalReqCatch_TransitionInfo[ index ].Pre_ASR_NA ) { + entry = RtemsSignalReqCatch_GetEntry( index ); + + if ( entry.Pre_ASR_NA ) { ctx->pcs[ 4 ] = RtemsSignalReqCatch_Pre_ASR_NA; index += ( RtemsSignalReqCatch_Pre_ASR_NA - 1 ) * RtemsSignalReqCatch_Pre_IntLvl_NA; @@ -1515,12 +930,14 @@ T_TEST_CASE_FIXTURE( RtemsSignalReqCatch, &RtemsSignalReqCatch_Fixture ) ctx->pcs[ 5 ] < RtemsSignalReqCatch_Pre_IntLvl_NA; ++ctx->pcs[ 5 ] ) { - if ( RtemsSignalReqCatch_TransitionInfo[ index ].Pre_IntLvl_NA ) { + entry = RtemsSignalReqCatch_GetEntry( index ); + + if ( entry.Pre_IntLvl_NA ) { ctx->pcs[ 5 ] = RtemsSignalReqCatch_Pre_IntLvl_NA; index += ( RtemsSignalReqCatch_Pre_IntLvl_NA - 1 ); } - if ( RtemsSignalReqCatch_TransitionInfo[ index ].Skip ) { + if ( entry.Skip ) { ++index; continue; } @@ -1533,29 +950,10 @@ T_TEST_CASE_FIXTURE( RtemsSignalReqCatch, &RtemsSignalReqCatch_Fixture ) RtemsSignalReqCatch_Pre_ASR_Prepare( ctx, ctx->pcs[ 4 ] ); RtemsSignalReqCatch_Pre_IntLvl_Prepare( ctx, ctx->pcs[ 5 ] ); RtemsSignalReqCatch_Action( ctx ); - RtemsSignalReqCatch_Post_Status_Check( - ctx, - RtemsSignalReqCatch_TransitionMap[ index ][ 0 ] - ); - RtemsSignalReqCatch_Post_Send_Check( - ctx, - RtemsSignalReqCatch_TransitionMap[ index ][ 1 ] - ); - RtemsSignalReqCatch_Post_Preempt_Check( - ctx, - RtemsSignalReqCatch_TransitionMap[ index ][ 2 ] - ); - RtemsSignalReqCatch_Post_Timeslice_Check( - ctx, - RtemsSignalReqCatch_TransitionMap[ index ][ 3 ] - ); - RtemsSignalReqCatch_Post_ASR_Check( - ctx, - RtemsSignalReqCatch_TransitionMap[ index ][ 4 ] - ); - RtemsSignalReqCatch_Post_IntLvl_Check( + RtemsSignalReqCatch_Post_Status_Check( ctx, entry.Post_Status ); + RtemsSignalReqCatch_Post_ASRInfo_Check( ctx, - RtemsSignalReqCatch_TransitionMap[ index ][ 5 ] + entry.Post_ASRInfo ); ++index; } -- cgit v1.2.3