diff options
-rw-r--r-- | cpukit/ChangeLog | 4 | ||||
-rw-r--r-- | cpukit/posix/src/psignal.c | 45 |
2 files changed, 27 insertions, 22 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index 7d265ec545..dbc5ab193e 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,7 @@ +2007-12-19 Jennifer Averett <jennifer.averett@OARcorp.com> + + * posix/src/psignal.c: Move source around to enable path testing + 2007-12-19 Joel Sherrill <joel.sherrill@OARcorp.com> * libcsupport/Makefile.am, libcsupport/include/rtems/malloc.h, diff --git a/cpukit/posix/src/psignal.c b/cpukit/posix/src/psignal.c index f86c8eb2e2..62500ba4a5 100644 --- a/cpukit/posix/src/psignal.c +++ b/cpukit/posix/src/psignal.c @@ -117,38 +117,39 @@ void _POSIX_signals_Post_switch_extension( * The first thing done is to check there are any signals to be * processed at all. No point in doing this loop otherwise. */ + while (1) { + restart: + _ISR_Disable( level ); + if ( !(~api->signals_blocked & + (api->signals_pending | _POSIX_signals_Pending)) ) { + _ISR_Enable( level ); + break; + } + _ISR_Enable( level ); -restart: - _ISR_Disable( level ); - if ( !(~api->signals_blocked & - (api->signals_pending | _POSIX_signals_Pending)) ) { - _ISR_Enable( level ); - return; - } - _ISR_Enable( level ); + for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { - for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { + if ( _POSIX_signals_Check_signal( api, signo, FALSE ) ) + goto restart; - if ( _POSIX_signals_Check_signal( api, signo, FALSE ) ) - goto restart; + if ( _POSIX_signals_Check_signal( api, signo, TRUE ) ) + goto restart; - if ( _POSIX_signals_Check_signal( api, signo, TRUE ) ) - goto restart; + } - } - -/* XXX - add __SIGFIRSTNOTRT or something like that to newlib signal .h */ + /* XXX - add __SIGFIRSTNOTRT or something like that to newlib signal .h */ - for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { + for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { - if ( _POSIX_signals_Check_signal( api, signo, FALSE ) ) - goto restart; + if ( _POSIX_signals_Check_signal( api, signo, FALSE ) ) + goto restart; - if ( _POSIX_signals_Check_signal( api, signo, TRUE ) ) - goto restart; + if ( _POSIX_signals_Check_signal( api, signo, TRUE ) ) + goto restart; + } } - + return; } /*PAGE |