summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1996-02-13 22:14:48 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1996-02-13 22:14:48 +0000
commit94b3ec5970fac914b9f08044b1e31a9d773239d2 (patch)
treeb1295baf63c63d4523b38f8652c13be265a6861c /cpukit/rtems
parentadded clear of _ISR_Signals_to_thread_executing (diff)
downloadrtems-94b3ec5970fac914b9f08044b1e31a9d773239d2.tar.bz2
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.
Diffstat (limited to 'cpukit/rtems')
-rw-r--r--cpukit/rtems/src/signal.c3
-rw-r--r--cpukit/rtems/src/tasks.c10
2 files changed, 9 insertions, 4 deletions
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;
+ }
}
}