diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-12-10 14:10:48 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-12-11 08:20:48 +0100 |
commit | df55d07f2e5c4b1c3d73c4f26a2cbb82f2af261c (patch) | |
tree | 7e1ef06ab4df2f97afdc676b7912886aba91d703 /cpukit/score/src/threadrestart.c | |
parent | Use linker set for system initialization (diff) | |
download | rtems-df55d07f2e5c4b1c3d73c4f26a2cbb82f2af261c.tar.bz2 |
score: Untangle thread actions
Remove the thread action handler parameter from
_Thread_Action_initialize() and instead set it later in
_Thread_Add_post_switch_action(). This avoids a dependency on the
thread action handler via the thread initialization.
Diffstat (limited to 'cpukit/score/src/threadrestart.c')
-rw-r--r-- | cpukit/score/src/threadrestart.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/cpukit/score/src/threadrestart.c b/cpukit/score/src/threadrestart.c index 6d90587353..2b1fef94fc 100644 --- a/cpukit/score/src/threadrestart.c +++ b/cpukit/score/src/threadrestart.c @@ -176,6 +176,17 @@ void _Thread_Kill_zombies( void ) _ISR_lock_Release_and_ISR_enable( &zombies->Lock, &lock_context ); } +static void _Thread_Add_life_change_action( + Thread_Control *the_thread +) +{ + _Thread_Add_post_switch_action( + the_thread, + &the_thread->Life.Action, + _Thread_Life_action_handler + ); +} + static void _Thread_Start_life_change_for_executing( Thread_Control *executing ) @@ -186,7 +197,7 @@ static void _Thread_Start_life_change_for_executing( || executing->current_state == STATES_SUSPENDED ); - _Thread_Add_post_switch_action( executing, &executing->Life.Action ); + _Thread_Add_life_change_action( executing ); } void _Thread_Life_action_handler( @@ -271,7 +282,7 @@ static void _Thread_Start_life_change( _Thread_Raise_real_priority_filter, false ); - _Thread_Add_post_switch_action( the_thread, &the_thread->Life.Action ); + _Thread_Add_life_change_action( the_thread ); _Thread_Ready( the_thread ); } |