[rtems commit] score: Add and use _Thread_Signal_notification()

Sebastian Huber sebh at rtems.org
Tue Jul 30 07:48:50 UTC 2013


Module:    rtems
Branch:    master
Commit:    6c0e43d31ae1eb1b0ef057880d7cefa425b2fc30
Changeset: http://git.rtems.org/rtems/commit/?id=6c0e43d31ae1eb1b0ef057880d7cefa425b2fc30

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Mon Jul 29 12:46:40 2013 +0200

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 fdf6137..52bd140 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 11287fa..9c839d7 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 440405a..f1c7b2c 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 0496a7a..d50980d 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 <rtems/score/thread.h>
+#include <rtems/score/isr.h>
 #include <rtems/score/objectimpl.h>
 #include <rtems/score/statesimpl.h>
 
@@ -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.




More information about the vc mailing list