diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-08-05 08:15:27 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-08-06 14:06:50 +0200 |
commit | 52a905bdb25db63d64201ea7a4df4f95a2da9be4 (patch) | |
tree | c79aab280ef1145cb1f78ce5464396ee23fdf1d0 | |
parent | 3d4c5e257c886b4b045b0a13fe9eb820450b787f (diff) |
testsuites/validation/tc-task-restart.c
-rw-r--r-- | testsuites/validation/tc-task-restart.c | 253 |
1 files changed, 122 insertions, 131 deletions
diff --git a/testsuites/validation/tc-task-restart.c b/testsuites/validation/tc-task-restart.c index a09c8ba62c..ab1a43bb6f 100644 --- a/testsuites/validation/tc-task-restart.c +++ b/testsuites/validation/tc-task-restart.c @@ -59,7 +59,6 @@ #include <rtems/score/statesimpl.h> #include <rtems/score/threaddispatch.h> #include <rtems/score/threadimpl.h> -#include <rtems/score/threadqimpl.h> #include "tx-support.h" @@ -208,6 +207,12 @@ typedef enum { RtemsTaskReqRestart_Post_RestartExtensions_NA } RtemsTaskReqRestart_Post_RestartExtensions; +typedef enum { + RtemsTaskReqRestart_Post_TerminateExtensions_Yes, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_NA +} RtemsTaskReqRestart_Post_TerminateExtensions; + /** * @brief Test context for spec:/rtems/task/req/restart test case. */ @@ -223,21 +228,9 @@ typedef struct { jmp_buf thread_dispatch_context;; /** - * @brief This member provides an call within ISR request. - */ - CallWithinISRRequest isr_request; - - /** - * @brief This member may reference wrapped thread queue operations used to - * trigger a nested request. - */ - const Thread_queue_Operations *wrapped_operations; - - /** - * @brief This member provides a thread queue used to trigger a nested - * request. + * @brief This member provides the context to wrap thread queue operations. */ - Thread_queue_Control thread_queue; + WrapThreadQueueContext wrap_tq_ctx; /** * @brief This member contains the identifier of the runner scheduler. @@ -587,10 +580,10 @@ static void Restart( void *arg ) /* * Where the system was built with SMP support enabled, a suspended * executing thread during the rtems_task_restart() call can happen - * if the thread was suspended by another processor and the inter - * interrupt interrupt did not yet arrive. Where the system was built - * with SMP support disabled, this state cannot happen with the current - * implementation. However, we still specify and validate this + * if the thread was suspended by another processor and the + * inter-processor interrupt did not yet arrive. Where the system was + * built with SMP support disabled, this state cannot happen with the + * current implementation. However, we still specify and validate this * behaviour unconditionally since there exist alternative * implementations which would lead to such a state if the executing * thread is suspended by an ISR. @@ -687,58 +680,12 @@ static void ResumeThreadDispatch( longjmp( ctx->thread_dispatch_context, 1 ); } -static void TriggerNestedRequest( - Thread_queue_Queue *queue, - Thread_Control *thread, - Thread_queue_Context *queue_context -) -{ - Context *ctx; - - ctx = T_fixture_context(); - CallWithinISRSubmit( &ctx->isr_request ); - - if ( ctx->wrapped_operations ) { - thread->Wait.operations = ctx->wrapped_operations; - ( *thread->Wait.operations->extract )( queue, thread, queue_context ); - } -} - -const Thread_queue_Operations trigger_nested_request = { - .extract = TriggerNestedRequest -}; - -static void PrepareNestedRequest( Context *ctx ) -{ - Thread_Control *thread; - - thread = ctx->worker_tcb; - - if ( thread->Wait.queue != NULL ) { - ctx->wrapped_operations = thread->Wait.operations; - thread->Wait.operations = &trigger_nested_request; - } else { - Thread_queue_Context queue_context; - - ctx->wrapped_operations = NULL; - _Thread_queue_Context_initialize( &queue_context ); - _Thread_queue_Acquire( &ctx->thread_queue, &queue_context ); - _Thread_Wait_flags_set( - thread, - THREAD_WAIT_CLASS_OBJECT | THREAD_WAIT_STATE_INTEND_TO_BLOCK - ); - _Thread_Wait_claim( thread, &ctx->thread_queue.Queue ); - _Thread_Wait_claim_finalize( thread, &trigger_nested_request ); - _Thread_queue_Release( &ctx->thread_queue, &queue_context ); - } -} - static void TriggerNestedRequestViaSelfRestart( Context *ctx, Per_CPU_Control *cpu_self ) { - PrepareNestedRequest( ctx ); + WrapThreadQueueExtract( &ctx->wrap_tq_ctx, ctx->worker_tcb ); SetFatalExtension( ResumeThreadDispatch ); if ( setjmp( ctx->thread_dispatch_context ) == 0 ) { @@ -824,33 +771,15 @@ static void Deleter( rtems_task_argument arg ) * below. */ if ( ctx->nested_request ) { - rtems_status_code sc; - rtems_id id; - - /* - * This sequence lowers the priority to PRIO_NORMAL without an - * implicit yield. - */ - - sc = rtems_semaphore_create( - rtems_build_name( 'M', 'U', 'T', 'X' ), - 0, - RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_PRIORITY_CEILING, - PRIO_HIGH, - &id - ); - T_rsc_success( sc ); - - SetSelfPriority( PRIO_NORMAL ); - ReleaseMutex( id ); - DeleteMutex( id ); + /* Lower the priority to PRIO_NORMAL without an * implicit yield */ + SetSelfPriorityNoYield( PRIO_NORMAL ); } else { SetScheduler( ctx->worker_id, ctx->scheduler_id, PRIO_HIGH ); } } if ( ctx->nested_request ) { - PrepareNestedRequest( ctx ); + WrapThreadQueueExtract( &ctx->wrap_tq_ctx, ctx->worker_tcb ); DeleteTask( ctx->worker_id ); } else { DeleteTask( ctx->worker_id ); @@ -1075,7 +1004,7 @@ static void RtemsTaskReqRestart_Pre_Protected_Prepare( switch ( state ) { case RtemsTaskReqRestart_Pre_Protected_Yes: { /* - * While thread life of the the task specified by the ``id`` parameter is + * While thread life of the task specified by the ``id`` parameter is * protected. */ ctx->protected = true; @@ -1084,8 +1013,8 @@ static void RtemsTaskReqRestart_Pre_Protected_Prepare( case RtemsTaskReqRestart_Pre_Protected_No: { /* - * While thread life of the the task specified by the ``id`` parameter is - * not protected. + * While thread life of the task specified by the ``id`` parameter is not + * protected. */ ctx->protected = false; break; @@ -1313,7 +1242,7 @@ static void RtemsTaskReqRestart_Post_FatalError_Check( /* * The fatal error with a fatal source of INTERNAL_ERROR_CORE and a fatal * code of INTERNAL_ERROR_BAD_THREAD_DISPATCH_DISABLE_LEVEL shall occur - * by the rtems_task_restart() call. + * through the rtems_task_restart() call. */ T_eq_u32( ctx->calls.fatal, 1 ); break; @@ -1321,7 +1250,7 @@ static void RtemsTaskReqRestart_Post_FatalError_Check( case RtemsTaskReqRestart_Post_FatalError_Nop: { /* - * No fatal error shall occur by the rtems_task_restart() call. + * No fatal error shall occur through the rtems_task_restart() call. */ T_eq_u32( ctx->calls.fatal, 0 ); break; @@ -1736,6 +1665,35 @@ static void RtemsTaskReqRestart_Post_RestartExtensions_Check( } } +static void RtemsTaskReqRestart_Post_TerminateExtensions_Check( + RtemsTaskReqRestart_Context *ctx, + RtemsTaskReqRestart_Post_TerminateExtensions state +) +{ + switch ( state ) { + case RtemsTaskReqRestart_Post_TerminateExtensions_Yes: { + /* + * The thread terminate user extensions shall be invoked by the + * rtems_task_restart() call. + */ + T_eq_u32( ctx->calls_after_restart.thread_terminate, 1 ); + break; + } + + case RtemsTaskReqRestart_Post_TerminateExtensions_Nop: { + /* + * The thread terminate user extensions shall not be invoked by the + * rtems_task_restart() call. + */ + T_eq_u32( ctx->calls_after_restart.thread_terminate, 0 ); + break; + } + + case RtemsTaskReqRestart_Post_TerminateExtensions_NA: + break; + } +} + static void RtemsTaskReqRestart_Setup( RtemsTaskReqRestart_Context *ctx ) { rtems_status_code sc; @@ -1744,11 +1702,7 @@ static void RtemsTaskReqRestart_Setup( RtemsTaskReqRestart_Context *ctx ) ctx->scheduler_id = GetSelfScheduler(); ctx->mutex_id = CreateMutexNoProtocol(); ObtainMutex( ctx->mutex_id ); - - ctx->isr_request.handler = Restart; - ctx->isr_request.arg = ctx; - - _Thread_queue_Initialize( &ctx->thread_queue, "Nested Request" ); + WrapThreadQueueInitialize( &ctx->wrap_tq_ctx, Restart, ctx ); sc = rtems_extension_create( rtems_build_name( 'T', 'E', 'S', 'T' ), @@ -1787,7 +1741,7 @@ static void RtemsTaskReqRestart_Teardown( RtemsTaskReqRestart_Context *ctx ) DeleteMutex( ctx->mutex_id ); RestoreRunnerASR(); RestoreRunnerPriority(); - _Thread_queue_Destroy( &ctx->thread_queue ); + WrapThreadQueueDestroy( &ctx->wrap_tq_ctx ); } static void RtemsTaskReqRestart_Teardown_Wrap( void *arg ) @@ -1858,7 +1812,7 @@ static void RtemsTaskReqRestart_Action( RtemsTaskReqRestart_Context *ctx ) sc = rtems_task_restart( ctx->deleter_id, (rtems_task_argument) ctx ); T_rsc_success( sc ); } else { - PrepareNestedRequest( ctx ); + WrapThreadQueueExtract( &ctx->wrap_tq_ctx, ctx->worker_tcb ); sc = rtems_task_restart( ctx->worker_id, (rtems_task_argument) ctx ); T_rsc_success( sc ); @@ -1918,6 +1872,7 @@ typedef struct { uint64_t Post_Terminating : 2; uint64_t Post_Protected : 2; uint64_t Post_RestartExtensions : 2; + uint64_t Post_TerminateExtensions : 2; } RtemsTaskReqRestart_Entry; static const RtemsTaskReqRestart_Entry @@ -1929,7 +1884,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_NA, RtemsTaskReqRestart_Post_Terminating_NA, RtemsTaskReqRestart_Post_Protected_NA, - RtemsTaskReqRestart_Post_RestartExtensions_NA }, + RtemsTaskReqRestart_Post_RestartExtensions_NA, + RtemsTaskReqRestart_Post_TerminateExtensions_NA }, { 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, RtemsTaskReqRestart_Post_Status_InvId, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_NA, RtemsTaskReqRestart_Post_State_NA, @@ -1937,7 +1893,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_NA, RtemsTaskReqRestart_Post_Terminating_NA, RtemsTaskReqRestart_Post_Protected_NA, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NA, RtemsTaskReqRestart_Post_FatalError_NA, RtemsTaskReqRestart_Post_Argument_NA, RtemsTaskReqRestart_Post_State_NA, @@ -1945,7 +1902,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_NA, RtemsTaskReqRestart_Post_Terminating_NA, RtemsTaskReqRestart_Post_Protected_NA, - RtemsTaskReqRestart_Post_RestartExtensions_NA }, + RtemsTaskReqRestart_Post_RestartExtensions_NA, + RtemsTaskReqRestart_Post_TerminateExtensions_NA }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NA, RtemsTaskReqRestart_Post_FatalError_NA, RtemsTaskReqRestart_Post_Argument_NA, RtemsTaskReqRestart_Post_State_NA, @@ -1953,7 +1911,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_NA, RtemsTaskReqRestart_Post_Terminating_NA, RtemsTaskReqRestart_Post_Protected_NA, - RtemsTaskReqRestart_Post_RestartExtensions_NA }, + RtemsTaskReqRestart_Post_RestartExtensions_NA, + RtemsTaskReqRestart_Post_TerminateExtensions_NA }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NA, RtemsTaskReqRestart_Post_FatalError_NA, RtemsTaskReqRestart_Post_Argument_NA, RtemsTaskReqRestart_Post_State_NA, @@ -1961,7 +1920,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_NA, RtemsTaskReqRestart_Post_Terminating_NA, RtemsTaskReqRestart_Post_Protected_NA, - RtemsTaskReqRestart_Post_RestartExtensions_NA }, + RtemsTaskReqRestart_Post_RestartExtensions_NA, + RtemsTaskReqRestart_Post_TerminateExtensions_NA }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NA, RtemsTaskReqRestart_Post_FatalError_NA, RtemsTaskReqRestart_Post_Argument_NA, RtemsTaskReqRestart_Post_State_NA, @@ -1969,7 +1929,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_NA, RtemsTaskReqRestart_Post_Terminating_NA, RtemsTaskReqRestart_Post_Protected_NA, - RtemsTaskReqRestart_Post_RestartExtensions_NA }, + RtemsTaskReqRestart_Post_RestartExtensions_NA, + RtemsTaskReqRestart_Post_TerminateExtensions_NA }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NA, RtemsTaskReqRestart_Post_FatalError_NA, RtemsTaskReqRestart_Post_Argument_NA, RtemsTaskReqRestart_Post_State_NA, @@ -1977,7 +1938,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_NA, RtemsTaskReqRestart_Post_Terminating_NA, RtemsTaskReqRestart_Post_Protected_NA, - RtemsTaskReqRestart_Post_RestartExtensions_NA }, + RtemsTaskReqRestart_Post_RestartExtensions_NA, + RtemsTaskReqRestart_Post_TerminateExtensions_NA }, { 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, RtemsTaskReqRestart_Post_Status_IncStat, RtemsTaskReqRestart_Post_FatalError_Nop, @@ -1988,7 +1950,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_No, RtemsTaskReqRestart_Post_Terminating_No, RtemsTaskReqRestart_Post_Protected_No, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, RtemsTaskReqRestart_Post_Status_IncStat, RtemsTaskReqRestart_Post_FatalError_Nop, @@ -1999,7 +1962,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_No, RtemsTaskReqRestart_Post_Terminating_No, RtemsTaskReqRestart_Post_Protected_No, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NA, RtemsTaskReqRestart_Post_FatalError_NA, RtemsTaskReqRestart_Post_Argument_NA, RtemsTaskReqRestart_Post_State_NA, @@ -2007,7 +1971,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_NA, RtemsTaskReqRestart_Post_Terminating_NA, RtemsTaskReqRestart_Post_Protected_NA, - RtemsTaskReqRestart_Post_RestartExtensions_NA }, + RtemsTaskReqRestart_Post_RestartExtensions_NA, + RtemsTaskReqRestart_Post_TerminateExtensions_NA }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NA, RtemsTaskReqRestart_Post_FatalError_NA, RtemsTaskReqRestart_Post_Argument_NA, RtemsTaskReqRestart_Post_State_NA, @@ -2015,7 +1980,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_NA, RtemsTaskReqRestart_Post_Terminating_NA, RtemsTaskReqRestart_Post_Protected_NA, - RtemsTaskReqRestart_Post_RestartExtensions_NA }, + RtemsTaskReqRestart_Post_RestartExtensions_NA, + RtemsTaskReqRestart_Post_TerminateExtensions_NA }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NA, RtemsTaskReqRestart_Post_FatalError_NA, RtemsTaskReqRestart_Post_Argument_NA, RtemsTaskReqRestart_Post_State_NA, @@ -2023,7 +1989,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_NA, RtemsTaskReqRestart_Post_Terminating_NA, RtemsTaskReqRestart_Post_Protected_NA, - RtemsTaskReqRestart_Post_RestartExtensions_NA }, + RtemsTaskReqRestart_Post_RestartExtensions_NA, + RtemsTaskReqRestart_Post_TerminateExtensions_NA }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, @@ -2032,7 +1999,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_Yes, RtemsTaskReqRestart_Post_Protected_No, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, @@ -2041,7 +2009,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_No, RtemsTaskReqRestart_Post_Protected_No, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, RtemsTaskReqRestart_Post_State_Nop, @@ -2050,7 +2019,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_No, RtemsTaskReqRestart_Post_Protected_No, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, RtemsTaskReqRestart_Post_State_Nop, @@ -2059,7 +2029,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_Yes, RtemsTaskReqRestart_Post_Protected_No, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, @@ -2068,7 +2039,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_Yes, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, @@ -2078,7 +2050,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_Yes, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, @@ -2088,7 +2061,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_Yes, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, @@ -2098,7 +2072,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_Yes, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, @@ -2108,7 +2083,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_Yes, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, @@ -2117,7 +2093,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_No, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, @@ -2127,7 +2104,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_No, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, @@ -2137,7 +2115,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_No, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, @@ -2147,7 +2126,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_No, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_Ok, RtemsTaskReqRestart_Post_FatalError_Nop, RtemsTaskReqRestart_Post_Argument_Set, @@ -2157,7 +2137,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_No, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NoReturn, RtemsTaskReqRestart_Post_FatalError_Nop, @@ -2168,7 +2149,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_Yes, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Yes }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NoReturn, RtemsTaskReqRestart_Post_FatalError_Nop, @@ -2178,7 +2160,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_No, RtemsTaskReqRestart_Post_Terminating_No, RtemsTaskReqRestart_Post_Protected_No, - RtemsTaskReqRestart_Post_RestartExtensions_Yes }, + RtemsTaskReqRestart_Post_RestartExtensions_Yes, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NoReturn, RtemsTaskReqRestart_Post_FatalError_Yes, @@ -2188,7 +2171,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_Yes, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NoReturn, RtemsTaskReqRestart_Post_FatalError_Yes, @@ -2198,7 +2182,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_Yes, RtemsTaskReqRestart_Post_Protected_No, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NoReturn, RtemsTaskReqRestart_Post_FatalError_Yes, @@ -2208,7 +2193,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_No, RtemsTaskReqRestart_Post_Protected_Yes, - RtemsTaskReqRestart_Post_RestartExtensions_Nop }, + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, RtemsTaskReqRestart_Post_Status_NoReturn, RtemsTaskReqRestart_Post_FatalError_Yes, @@ -2218,7 +2204,8 @@ RtemsTaskReqRestart_Entries[] = { RtemsTaskReqRestart_Post_Restarting_Yes, RtemsTaskReqRestart_Post_Terminating_No, RtemsTaskReqRestart_Post_Protected_No, - RtemsTaskReqRestart_Post_RestartExtensions_Nop } + RtemsTaskReqRestart_Post_RestartExtensions_Nop, + RtemsTaskReqRestart_Post_TerminateExtensions_Nop } }; static const uint8_t @@ -2735,6 +2722,10 @@ T_TEST_CASE_FIXTURE( RtemsTaskReqRestart, &RtemsTaskReqRestart_Fixture ) ctx, entry.Post_RestartExtensions ); + RtemsTaskReqRestart_Post_TerminateExtensions_Check( + ctx, + entry.Post_TerminateExtensions + ); RtemsTaskReqRestart_Cleanup( ctx ); memcpy( ctx->pcs, pcs, sizeof( ctx->pcs ) ); } |