[PATCH 2/4] validation: Add comments to signal tests

Sebastian Huber sebastian.huber at embedded-brains.de
Mon Mar 1 09:27:08 UTC 2021


---
 testsuites/validation/tc-signal-catch.c | 106 ++++++++++++++++++++++++
 testsuites/validation/tc-signal-send.c  |  78 +++++++++++++++++
 2 files changed, 184 insertions(+)

diff --git a/testsuites/validation/tc-signal-catch.c b/testsuites/validation/tc-signal-catch.c
index 9c14cc93a3..7c3292ba71 100644
--- a/testsuites/validation/tc-signal-catch.c
+++ b/testsuites/validation/tc-signal-catch.c
@@ -251,11 +251,17 @@ static void RtemsSignalReqCatch_Pre_Handler_Prepare(
 {
   switch ( state ) {
     case RtemsSignalReqCatch_Pre_Handler_Invalid: {
+      /*
+       * The ``asr_handler`` parameter shall be NULL.
+       */
       ctx->handler = NULL;
       break;
     }
 
     case RtemsSignalReqCatch_Pre_Handler_Valid: {
+      /*
+       * The ``asr_handler`` parameter shall be a valid ASR handler.
+       */
       ctx->handler = SignalHandler;
       break;
     }
@@ -272,6 +278,10 @@ static void RtemsSignalReqCatch_Pre_Preempt_Prepare(
 {
   switch ( state ) {
     case RtemsSignalReqCatch_Pre_Preempt_Yes: {
+      /*
+       * The ``mode_set`` parameter shall specify that
+       * preemption is enabled.
+       */
       #if defined(RTEMS_SMP)
       if ( rtems_configuration_get_maximum_processors() == 1 ) {
         ctx->normal_mode |= RTEMS_NO_PREEMPT;
@@ -283,6 +293,10 @@ static void RtemsSignalReqCatch_Pre_Preempt_Prepare(
     }
 
     case RtemsSignalReqCatch_Pre_Preempt_No: {
+      /*
+       * The ``mode_set`` parameter shall specify that
+       * preemption is disabled.
+       */
       ctx->mode |= RTEMS_NO_PREEMPT;
       break;
     }
@@ -299,11 +313,19 @@ static void RtemsSignalReqCatch_Pre_Timeslice_Prepare(
 {
   switch ( state ) {
     case RtemsSignalReqCatch_Pre_Timeslice_Yes: {
+      /*
+       * The ``mode_set`` parameter shall specify that
+       * timeslicing is enabled.
+       */
       ctx->mode |= RTEMS_TIMESLICE;
       break;
     }
 
     case RtemsSignalReqCatch_Pre_Timeslice_No: {
+      /*
+       * The ``mode_set`` parameter shall specify that
+       * timeslicing is disabled.
+       */
       ctx->normal_mode |= RTEMS_TIMESLICE;
       break;
     }
@@ -320,11 +342,19 @@ static void RtemsSignalReqCatch_Pre_ASR_Prepare(
 {
   switch ( state ) {
     case RtemsSignalReqCatch_Pre_ASR_Yes: {
+      /*
+       * The ``mode_set`` parameter shall specify that
+       * ASR processing is enabled.
+       */
       /* We cannot disable ASR processing at normal task level for this test */
       break;
     }
 
     case RtemsSignalReqCatch_Pre_ASR_No: {
+      /*
+       * The ``mode_set`` parameter shall specify that
+       * ASR processing is disabled.
+       */
       ctx->mode |= RTEMS_NO_ASR;
       break;
     }
@@ -341,6 +371,10 @@ static void RtemsSignalReqCatch_Pre_IntLvl_Prepare(
 {
   switch ( state ) {
     case RtemsSignalReqCatch_Pre_IntLvl_Zero: {
+      /*
+       * The ``mode_set`` parameter shall specify an interrupt
+       * level of zero.
+       */
       #if !defined(RTEMS_SMP) && CPU_ENABLE_ROBUST_THREAD_DISPATCH == FALSE
       ctx->normal_mode |= RTEMS_INTERRUPT_LEVEL( 1 );
       #endif
@@ -348,6 +382,10 @@ static void RtemsSignalReqCatch_Pre_IntLvl_Prepare(
     }
 
     case RtemsSignalReqCatch_Pre_IntLvl_Positive: {
+      /*
+       * The ``mode_set`` parameter shall specify a positive
+       * interrupt level.
+       */
       ctx->mode |= RTEMS_INTERRUPT_LEVEL( 1 );
       break;
     }
@@ -364,11 +402,21 @@ static void RtemsSignalReqCatch_Post_Status_Check(
 {
   switch ( state ) {
     case RtemsSignalReqCatch_Post_Status_Ok: {
+      /*
+       * The return status of rtems_signal_catch() shall be
+       * RTEMS_SUCCESSFUL.
+       */
       T_rsc_success( ctx->catch_status );
       break;
     }
 
     case RtemsSignalReqCatch_Post_Status_NotImplNoPreempt: {
+      /*
+       * 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.
+       */
       #if defined(RTEMS_SMP)
       if ( rtems_configuration_get_maximum_processors() > 1 ) {
         T_rsc( ctx->catch_status, RTEMS_NOT_IMPLEMENTED );
@@ -382,6 +430,13 @@ static void RtemsSignalReqCatch_Post_Status_Check(
     }
 
     case RtemsSignalReqCatch_Post_Status_NotImplIntLvl: {
+      /*
+       * 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.
+       */
       #if CPU_ENABLE_ROBUST_THREAD_DISPATCH == TRUE
       T_rsc( ctx->catch_status, RTEMS_NOT_IMPLEMENTED );
       #elif defined(RTEMS_SMP)
@@ -408,6 +463,11 @@ static void RtemsSignalReqCatch_Post_Send_Check(
 {
   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 ) {
@@ -423,6 +483,12 @@ static void RtemsSignalReqCatch_Post_Send_Check(
     }
 
     case RtemsSignalReqCatch_Post_Send_NotDef: {
+      /*
+       * 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.
+       */
       if ( ctx->catch_status == RTEMS_SUCCESSFUL ) {
         T_rsc( ctx->send_status, RTEMS_NOT_DEFINED );
         T_eq_u32( ctx->default_handler_calls, 0 );
@@ -449,11 +515,21 @@ static void RtemsSignalReqCatch_Post_Preempt_Check(
 {
   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;
     }
@@ -470,11 +546,21 @@ static void RtemsSignalReqCatch_Post_Timeslice_Check(
 {
   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: {
+      /*
+       * 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.
+       */
       CheckHandlerMode( ctx, RTEMS_TIMESLICE_MASK, RTEMS_NO_TIMESLICE );
       break;
     }
@@ -491,11 +577,21 @@ static void RtemsSignalReqCatch_Post_ASR_Check(
 {
   switch ( state ) {
     case RtemsSignalReqCatch_Post_ASR_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 ASR processing enabled.
+       */
       CheckHandlerMode( ctx, RTEMS_ASR_MASK, RTEMS_ASR );
       break;
     }
 
     case RtemsSignalReqCatch_Post_ASR_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 ASR processing disabled.
+       */
       CheckHandlerMode( ctx, RTEMS_ASR_MASK, RTEMS_NO_ASR );
       break;
     }
@@ -512,11 +608,21 @@ static void RtemsSignalReqCatch_Post_IntLvl_Check(
 {
   switch ( state ) {
     case RtemsSignalReqCatch_Post_IntLvl_Zero: {
+      /*
+       * 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.
+       */
       CheckHandlerMode( ctx, RTEMS_INTERRUPT_MASK, RTEMS_INTERRUPT_LEVEL( 0 ) );
       break;
     }
 
     case RtemsSignalReqCatch_Post_IntLvl_Positive: {
+      /*
+       * 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.
+       */
       CheckHandlerMode( ctx, RTEMS_INTERRUPT_MASK, RTEMS_INTERRUPT_LEVEL( 1 ) );
       break;
     }
diff --git a/testsuites/validation/tc-signal-send.c b/testsuites/validation/tc-signal-send.c
index a4232efbae..cf5235f752 100644
--- a/testsuites/validation/tc-signal-send.c
+++ b/testsuites/validation/tc-signal-send.c
@@ -371,16 +371,27 @@ static void RtemsSignalReqSend_Pre_Task_Prepare(
 {
   switch ( state ) {
     case RtemsSignalReqSend_Pre_Task_NoObj: {
+      /*
+       * The ``id`` parameter shall be invalid.
+       */
       ctx->id = 0xffffffff;
       break;
     }
 
     case RtemsSignalReqSend_Pre_Task_Self: {
+      /*
+       * The ``id`` parameter shall be associated with
+       * the calling task.
+       */
       ctx->id = RTEMS_SELF;
       break;
     }
 
     case RtemsSignalReqSend_Pre_Task_Other: {
+      /*
+       * The ``id`` parameter shall be associated with a
+       * task other than the calling task.
+       */
       ctx->id = ctx->worker_id;
       break;
     }
@@ -397,11 +408,17 @@ static void RtemsSignalReqSend_Pre_Set_Prepare(
 {
   switch ( state ) {
     case RtemsSignalReqSend_Pre_Set_Zero: {
+      /*
+       * The ``signal_set`` parameter shall be zero.
+       */
       ctx->signal_set = 0;
       break;
     }
 
     case RtemsSignalReqSend_Pre_Set_NonZero: {
+      /*
+       * The ``signal_set`` parameter shall be non-zero.
+       */
       ctx->signal_set = 0xdeadbeef;
       break;
     }
@@ -418,11 +435,19 @@ static void RtemsSignalReqSend_Pre_Handler_Prepare(
 {
   switch ( state ) {
     case RtemsSignalReqSend_Pre_Handler_Invalid: {
+      /*
+       * When the target task has no valid ASR handler installed, the
+       * rtems_signal_send() directive shall be called.
+       */
       ctx->handler = NULL;
       break;
     }
 
     case RtemsSignalReqSend_Pre_Handler_Valid: {
+      /*
+       * When the target task has a valid ASR handler installed, the
+       * rtems_signal_send() directive shall be called.
+       */
       ctx->handler = SignalHandler;
       break;
     }
@@ -439,11 +464,19 @@ static void RtemsSignalReqSend_Pre_ASR_Prepare(
 {
   switch ( state ) {
     case RtemsSignalReqSend_Pre_ASR_Enabled: {
+      /*
+       * When the target task has ASR processing enabled, the rtems_signal_send()
+       * directive shall be called.
+       */
       ctx->mode = RTEMS_DEFAULT_MODES;
       break;
     }
 
     case RtemsSignalReqSend_Pre_ASR_Disabled: {
+      /*
+       * When the target task has ASR processing disabled, the rtems_signal_send()
+       * directive shall be called.
+       */
       ctx->mode = RTEMS_NO_ASR;
       break;
     }
@@ -460,11 +493,19 @@ static void RtemsSignalReqSend_Pre_Nested_Prepare(
 {
   switch ( state ) {
     case RtemsSignalReqSend_Pre_Nested_Yes: {
+      /*
+       * When the target task processes an asynchronous signal set, the
+       * rtems_signal_send() directive shall be called.
+       */
       ctx->nested = 1;
       break;
     }
 
     case RtemsSignalReqSend_Pre_Nested_No: {
+      /*
+       * When the target task does not process an asynchronous signal set, the
+       * rtems_signal_send() directive shall be called.
+       */
       ctx->nested = 0;
       break;
     }
@@ -481,21 +522,37 @@ static void RtemsSignalReqSend_Post_Status_Check(
 {
   switch ( state ) {
     case RtemsSignalReqSend_Post_Status_Ok: {
+      /*
+       * The return status of rtems_signal_send() shall be
+       * RTEMS_SUCCESSFUL.
+       */
       T_rsc_success( ctx->status );
       break;
     }
 
     case RtemsSignalReqSend_Post_Status_InvNum: {
+      /*
+       * The return status of rtems_signal_send() shall be
+       * RTEMS_INVALID_NUMBER.
+       */
       T_rsc( ctx->status, RTEMS_INVALID_NUMBER );
       break;
     }
 
     case RtemsSignalReqSend_Post_Status_InvId: {
+      /*
+       * The return status of rtems_signal_send() shall be
+       * RTEMS_INVALID_ID.
+       */
       T_rsc( ctx->status, RTEMS_INVALID_ID );
       break;
     }
 
     case RtemsSignalReqSend_Post_Status_NotDef: {
+      /*
+       * The return status of rtems_signal_send() shall be
+       * RTEMS_NOT_DEFINED.
+       */
       T_rsc( ctx->status, RTEMS_NOT_DEFINED );
       break;
     }
@@ -516,6 +573,10 @@ static void RtemsSignalReqSend_Post_Handler_Check(
 
   switch ( state ) {
     case RtemsSignalReqSend_Post_Handler_NoCall: {
+      /*
+       * While the ASR processing is disabled, the ASR handler shall not be
+       * called.
+       */
       T_eq_sz( ctx->calls_after_send, ctx->nested );
       T_eq_sz( ctx->calls_after_dispatch, ctx->nested );
       T_eq_sz( ctx->calls_after_enable, ctx->nested );
@@ -523,6 +584,9 @@ static void RtemsSignalReqSend_Post_Handler_Check(
     }
 
     case RtemsSignalReqSend_Post_Handler_DuringSend: {
+      /*
+       * The ASR handler shall be called during the rtems_signal_send() call.
+       */
       ++expected_calls;
       T_eq_sz( ctx->calls_after_send, ctx->nested + 1 );
       T_eq_sz( ctx->calls_after_dispatch, ctx->nested + 1 );
@@ -531,6 +595,10 @@ static void RtemsSignalReqSend_Post_Handler_Check(
     }
 
     case RtemsSignalReqSend_Post_Handler_AfterDispatch: {
+      /*
+       * When the next thread dispatch of the target task of the
+       * rtems_signal_send() call takes place, the ASR handler shall be called.
+       */
       ++expected_calls;
       T_eq_sz( ctx->calls_after_send, ctx->nested );
       T_eq_sz( ctx->calls_after_dispatch, ctx->nested + 1 );
@@ -539,6 +607,10 @@ static void RtemsSignalReqSend_Post_Handler_Check(
     }
 
     case RtemsSignalReqSend_Post_Handler_AfterEnable: {
+      /*
+       * When the target task of the rtems_signal_send() call re-enables ASR
+       * processing, the ASR handler shall be called.
+       */
       ++expected_calls;
       T_eq_sz( ctx->calls_after_send, ctx->nested );
       T_eq_sz( ctx->calls_after_dispatch, ctx->nested );
@@ -568,6 +640,9 @@ static void RtemsSignalReqSend_Post_Recursive_Check(
 {
   switch ( state ) {
     case RtemsSignalReqSend_Post_Recursive_Yes: {
+      /*
+       * The ASR handler shall be called recursively.
+       */
       T_eq_sz( ctx->handler_calls, 2 );
       T_ne_uptr( ctx->stack_pointers[ 0 ], 0 );
       T_ne_uptr( ctx->stack_pointers[ 1 ], 0 );
@@ -576,6 +651,9 @@ static void RtemsSignalReqSend_Post_Recursive_Check(
     }
 
     case RtemsSignalReqSend_Post_Recursive_No: {
+      /*
+       * The ASR handler shall not be called recursively.
+       */
       if ( ctx->handler_calls == 2 ) {
         T_ne_uptr( ctx->stack_pointers[ 0 ], 0 );
         T_ne_uptr( ctx->stack_pointers[ 1 ], 0 );
-- 
2.26.2



More information about the devel mailing list