summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems/src/tasks.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-03 07:38:19 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-04 07:24:30 +0200
commit1d40d81b4b8dd50e4162b0b79b60d3312d2744e5 (patch)
tree9c7dc074ea705a924742d965dcd22afef579cb5b /cpukit/rtems/src/tasks.c
parentbsp/mvme5500: Use thread local variable (diff)
downloadrtems-1d40d81b4b8dd50e4162b0b79b60d3312d2744e5.tar.bz2
rtems: Remove task variables
Update #2494. Update #2555.
Diffstat (limited to '')
-rw-r--r--cpukit/rtems/src/tasks.c92
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
}
};