From 94b3ec5970fac914b9f08044b1e31a9d773239d2 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 13 Feb 1996 22:14:48 +0000 Subject: changed post task extension from user set to api set and added flag in each thread which must be set when the post switch extension is to be run. --- cpukit/rtems/src/signal.c | 3 +++ cpukit/rtems/src/tasks.c | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'cpukit/rtems') diff --git a/cpukit/rtems/src/signal.c b/cpukit/rtems/src/signal.c index 6b0dfdc3e5..10aefa391c 100644 --- a/cpukit/rtems/src/signal.c +++ b/cpukit/rtems/src/signal.c @@ -130,6 +130,9 @@ rtems_status_code rtems_signal_send( if ( ! _ASR_Is_null_handler( asr->handler ) ) { if ( asr->is_enabled ) { _ASR_Post_signals( signal_set, &asr->signals_posted ); + + the_thread->do_post_task_switch_extension = TRUE; + if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) _ISR_Signals_to_thread_executing = TRUE; } else { diff --git a/cpukit/rtems/src/tasks.c b/cpukit/rtems/src/tasks.c index 99ec426dd6..0b30fcce69 100644 --- a/cpukit/rtems/src/tasks.c +++ b/cpukit/rtems/src/tasks.c @@ -100,7 +100,7 @@ User_extensions_routine _RTEMS_tasks_Delete_extension( * XXX */ -User_extensions_routine _RTEMS_tasks_Switch_extension( +void _RTEMS_tasks_Switch_extension( Thread_Control *executing ) { @@ -135,7 +135,8 @@ User_extensions_routine _RTEMS_tasks_Switch_extension( API_extensions_Control _RTEMS_tasks_API_extensions = { { NULL, NULL }, NULL, /* predriver */ - _RTEMS_tasks_Initialize_user_tasks /* postdriver */ + _RTEMS_tasks_Initialize_user_tasks, /* postdriver */ + _RTEMS_tasks_Switch_extension /* post switch */ }; User_extensions_Control _RTEMS_tasks_User_extensions = { @@ -145,7 +146,6 @@ User_extensions_Control _RTEMS_tasks_User_extensions = { _RTEMS_tasks_Start_extension, /* restart */ _RTEMS_tasks_Delete_extension, /* delete */ NULL, /* switch */ - _RTEMS_tasks_Switch_extension, /* post switch */ NULL, /* begin */ NULL, /* exitted */ NULL /* fatal */ @@ -806,8 +806,10 @@ rtems_status_code rtems_task_mode( if ( is_asr_enabled != asr->is_enabled ) { asr->is_enabled = is_asr_enabled; _ASR_Swap_signals( asr ); - if ( _ASR_Are_signals_pending( asr ) ) + if ( _ASR_Are_signals_pending( asr ) ) { needs_asr_dispatching = TRUE; + executing->do_post_task_switch_extension = TRUE; + } } } -- cgit v1.2.3