diff options
Diffstat (limited to '')
-rw-r--r-- | cpukit/rtems/src/tasks.c | 92 |
1 files changed, 5 insertions, 87 deletions
diff --git a/cpukit/rtems/src/tasks.c b/cpukit/rtems/src/tasks.c index f18e0ab3db..56b2455ad7 100644 --- a/cpukit/rtems/src/tasks.c +++ b/cpukit/rtems/src/tasks.c @@ -18,20 +18,13 @@ #include "config.h" #endif -#include <rtems/system.h> #include <rtems/config.h> #include <rtems/sysinit.h> #include <rtems/rtems/asrimpl.h> #include <rtems/rtems/eventimpl.h> -#include <rtems/rtems/signalimpl.h> -#include <rtems/rtems/status.h> -#include <rtems/rtems/support.h> -#include <rtems/rtems/modes.h> #include <rtems/rtems/tasksimpl.h> -#include <rtems/score/stack.h> #include <rtems/score/threadimpl.h> #include <rtems/score/userextimpl.h> -#include <rtems/score/wkspace.h> Thread_Information _RTEMS_tasks_Information; @@ -91,87 +84,12 @@ static void _RTEMS_tasks_Delete_extension( _ASR_Destroy( &api->Signal ); } -static void _RTEMS_tasks_Terminate_extension( - Thread_Control *executing -) -{ - /* - * Free per task variable memory - * - * Per Task Variables are only enabled in uniprocessor configurations. - */ - #if !defined(RTEMS_SMP) - /* - * We know this is deprecated and don't want a warning on every BSP built. - */ - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wdeprecated-declarations" - do { - rtems_task_variable_t *tvp, *next; - - tvp = executing->task_variables; - executing->task_variables = NULL; - while (tvp) { - next = (rtems_task_variable_t *)tvp->next; - _RTEMS_Tasks_Invoke_task_variable_dtor( executing, tvp ); - tvp = next; - } - } while (0); - #pragma GCC diagnostic pop - #endif -} - -#if !defined(RTEMS_SMP) -/* - * _RTEMS_tasks_Switch_extension - * - * This extension routine is invoked at each context switch. - * - * @note Since this only needs to address per-task variables, it is - * disabled entirely for SMP configurations. - */ -static void _RTEMS_tasks_Switch_extension( - Thread_Control *executing, - Thread_Control *heir -) -{ - rtems_task_variable_t *tvp; - - /* - * Per Task Variables are only enabled in uniprocessor configurations - */ - - tvp = executing->task_variables; - while (tvp) { - tvp->tval = *tvp->ptr; - *tvp->ptr = tvp->gval; - tvp = (rtems_task_variable_t *)tvp->next; - } - - tvp = heir->task_variables; - while (tvp) { - tvp->gval = *tvp->ptr; - *tvp->ptr = tvp->tval; - tvp = (rtems_task_variable_t *)tvp->next; - } -} -#define RTEMS_TASKS_SWITCH_EXTENSION _RTEMS_tasks_Switch_extension -#else -#define RTEMS_TASKS_SWITCH_EXTENSION NULL -#endif - User_extensions_Control _RTEMS_tasks_User_extensions = { - { NULL, NULL }, - { { NULL, NULL }, RTEMS_TASKS_SWITCH_EXTENSION }, - { _RTEMS_tasks_Create_extension, /* create */ - _RTEMS_tasks_Start_extension, /* start */ - _RTEMS_tasks_Start_extension, /* restart */ - _RTEMS_tasks_Delete_extension, /* delete */ - RTEMS_TASKS_SWITCH_EXTENSION, /* switch */ - NULL, /* begin */ - NULL, /* exitted */ - NULL, /* fatal */ - _RTEMS_tasks_Terminate_extension /* terminate */ + .Callouts = { + .thread_create = _RTEMS_tasks_Create_extension, + .thread_start = _RTEMS_tasks_Start_extension, + .thread_restart = _RTEMS_tasks_Start_extension, + .thread_delete = _RTEMS_tasks_Delete_extension } }; |