From 6c0e43d31ae1eb1b0ef057880d7cefa425b2fc30 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 29 Jul 2013 12:46:40 +0200 Subject: score: Add and use _Thread_Signal_notification() --- cpukit/posix/src/psignalunblockthread.c | 3 +-- cpukit/posix/src/pthreadkill.c | 4 +--- cpukit/rtems/src/signalsend.c | 4 +--- cpukit/score/include/rtems/score/threadimpl.h | 7 +++++++ 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/cpukit/posix/src/psignalunblockthread.c b/cpukit/posix/src/psignalunblockthread.c index fdf6137d6f..52bd140f2d 100644 --- a/cpukit/posix/src/psignalunblockthread.c +++ b/cpukit/posix/src/psignalunblockthread.c @@ -111,8 +111,7 @@ bool _POSIX_signals_Unblock_thread( } } else if ( the_thread->current_state == STATES_READY ) { - if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) - _Thread_Dispatch_necessary = true; + _Thread_Signal_notification( the_thread ); } } return false; diff --git a/cpukit/posix/src/pthreadkill.c b/cpukit/posix/src/pthreadkill.c index 11287facba..9c839d7767 100644 --- a/cpukit/posix/src/pthreadkill.c +++ b/cpukit/posix/src/pthreadkill.c @@ -69,9 +69,7 @@ int pthread_kill( api->signals_pending |= signo_to_mask( sig ); (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL ); - - if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) - _Thread_Dispatch_necessary = true; + _Thread_Signal_notification( the_thread ); } _Objects_Put( &the_thread->Object ); return 0; diff --git a/cpukit/rtems/src/signalsend.c b/cpukit/rtems/src/signalsend.c index 440405a40c..f1c7b2c254 100644 --- a/cpukit/rtems/src/signalsend.c +++ b/cpukit/rtems/src/signalsend.c @@ -47,9 +47,7 @@ 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 ); - - if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) - _Thread_Dispatch_necessary = true; + _Thread_Signal_notification( the_thread ); } else { _ASR_Post_signals( signal_set, &asr->signals_pending ); } diff --git a/cpukit/score/include/rtems/score/threadimpl.h b/cpukit/score/include/rtems/score/threadimpl.h index 0496a7a802..d50980d4db 100644 --- a/cpukit/score/include/rtems/score/threadimpl.h +++ b/cpukit/score/include/rtems/score/threadimpl.h @@ -20,6 +20,7 @@ #define _RTEMS_SCORE_THREADIMPL_H #include +#include #include #include @@ -657,6 +658,12 @@ RTEMS_INLINE_ROUTINE void _Thread_Dispatch_if_necessary( } } +RTEMS_INLINE_ROUTINE void _Thread_Signal_notification( Thread_Control *thread ) +{ + if ( _ISR_Is_in_progress() && _Thread_Is_executing( thread ) ) + _Thread_Dispatch_necessary = true; +} + #if !defined(__DYNAMIC_REENT__) /** * This routine returns the C library re-enterant pointer. -- cgit v1.2.3