[rtems commit] posix: _POSIX_signals_Clear_process_signals()

Sebastian Huber sebh at rtems.org
Tue Aug 27 08:44:49 UTC 2013


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Mon Aug 26 16:22:30 2013 +0200

posix: _POSIX_signals_Clear_process_signals()

Do not disable interrupts since the caller did this already.

---

 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 07e4a21..aa2cd49 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;
+  }
 }




More information about the vc mailing list