forked from Imagelibrary/rtems
posix: _POSIX_signals_Clear_process_signals()
Do not disable interrupts since the caller did this already.
This commit is contained in:
@@ -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;
|
||||
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
|
||||
if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )
|
||||
clear_signal = false;
|
||||
}
|
||||
|
||||
_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 ( clear_signal ) {
|
||||
_POSIX_signals_Pending &= ~mask;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user