[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