summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-08-05 08:15:27 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-08-06 14:06:50 +0200
commit52a905bdb25db63d64201ea7a4df4f95a2da9be4 (patch)
treec79aab280ef1145cb1f78ce5464396ee23fdf1d0
parent3d4c5e257c886b4b045b0a13fe9eb820450b787f (diff)
testsuites/validation/tc-task-restart.c
-rw-r--r--testsuites/validation/tc-task-restart.c253
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 ) );
}