From 1d40d81b4b8dd50e4162b0b79b60d3312d2744e5 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 3 May 2016 07:38:19 +0200 Subject: rtems: Remove task variables Update #2494. Update #2555. --- cpukit/rtems/src/tasks.c | 92 +++--------------------------------------------- 1 file changed, 5 insertions(+), 87 deletions(-) (limited to 'cpukit/rtems/src/tasks.c') 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 #include #include #include #include -#include -#include -#include -#include #include -#include #include #include -#include 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 } }; -- cgit v1.2.3