summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/threadglobalconstruction.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-01-07 09:55:45 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-01-11 08:47:01 +0100
commitccd54344d904b657123e4e4ba795a32212382be2 (patch)
treed490d77b6173f586137036ed07ec5bd27d8ca65a /cpukit/score/src/threadglobalconstruction.c
parentsmptests/README: Delete obsolete information (diff)
downloadrtems-ccd54344d904b657123e4e4ba795a32212382be2.tar.bz2
score: Introduce Thread_Entry_information
This avoids potential dead code in _Thread_Handler(). It gets rid of the dangerous function pointer casts. Update #2514.
Diffstat (limited to 'cpukit/score/src/threadglobalconstruction.c')
-rw-r--r--cpukit/score/src/threadglobalconstruction.c19
1 files changed, 5 insertions, 14 deletions
diff --git a/cpukit/score/src/threadglobalconstruction.c b/cpukit/score/src/threadglobalconstruction.c
index 56a6df11a9..1e84124c55 100644
--- a/cpukit/score/src/threadglobalconstruction.c
+++ b/cpukit/score/src/threadglobalconstruction.c
@@ -44,10 +44,11 @@
#define EXECUTE_GLOBAL_CONSTRUCTORS
#endif
-void _Thread_Global_construction( Thread_Entry entry_point )
+void _Thread_Global_construction(
+ Thread_Control *executing,
+ const Thread_Entry_information *entry
+)
{
- Thread_Control *executing;
-
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
/*
* _init could be a weak symbol and we SHOULD test it but it isn't
@@ -58,17 +59,7 @@ void _Thread_Global_construction( Thread_Entry entry_point )
#endif
_Thread_Disable_dispatch();
-
- executing = _Thread_Executing;
- executing->Start.entry_point = entry_point;
-
- _Thread_Restart(
- executing,
- executing,
- executing->Start.pointer_argument,
- executing->Start.numeric_argument
- );
-
+ _Thread_Restart( executing, executing, entry );
_Thread_Enable_dispatch();
_Assert_Not_reached();