diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-08-26 16:22:30 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-08-27 10:48:17 +0200 |
commit | ca68215e19a76ee091ac3755abb2989edcaa2824 (patch) | |
tree | 4baa5d065432eccefd22122d0d0740ced5229707 /cpukit | |
parent | rtems: Add SMP support for signals (diff) | |
download | rtems-ca68215e19a76ee091ac3755abb2989edcaa2824.tar.bz2 |
posix: _POSIX_signals_Clear_process_signals()
Do not disable interrupts since the caller did this already.
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/posix/src/psignalclearprocesssignals.c | 39 |
1 files changed, 11 insertions, 28 deletions
diff --git a/cpukit/posix/src/psignalclearprocesssignals.c b/cpukit/posix/src/psignalclearprocesssignals.c index 07e4a216bc..aa2cd49e6d 100644 --- a/cpukit/posix/src/psignalclearprocesssignals.c +++ b/cpukit/posix/src/psignalclearprocesssignals.c @@ -18,24 +18,8 @@ #include "config.h" #endif -#include <errno.h> -#include <pthread.h> -#include <signal.h> - -#include <rtems/system.h> -#include <rtems/score/isr.h> -#include <rtems/score/thread.h> -#include <rtems/score/wkspace.h> -#include <rtems/seterr.h> -#include <rtems/posix/threadsup.h> #include <rtems/posix/psignalimpl.h> -#include <rtems/posix/pthreadimpl.h> -#include <rtems/posix/time.h> -#include <stdio.h> - -/* - * _POSIX_signals_Clear_process_signals - */ +#include <rtems/score/assert.h> void _POSIX_signals_Clear_process_signals( int signo @@ -44,18 +28,17 @@ void _POSIX_signals_Clear_process_signals( sigset_t mask; bool clear_signal; + _Assert( _ISR_Get_level() != 0 ); + clear_signal = true; mask = signo_to_mask( signo ); - ISR_Level level; - - _ISR_Disable( level ); - if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { - if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) ) - clear_signal = false; - } - if ( clear_signal ) { - _POSIX_signals_Pending &= ~mask; - } - _ISR_Enable( level ); + if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { + if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) ) + clear_signal = false; + } + + if ( clear_signal ) { + _POSIX_signals_Pending &= ~mask; + } } |