Mercurial > nand-ecoscentric
changeset 439:3e3067d83e1f
* src/signal.cxx: Changed the three routines added in the last
change so that they can be called safely from non-POSIX threads.
| author | nickg |
|---|---|
| date | Tue, 26 Nov 2002 18:16:45 +0000 |
| parents | 4ad7466aa844 |
| children | d2722bc50510 |
| files | packages/compat/posix/current/ChangeLog packages/compat/posix/current/src/signal.cxx |
| diffstat | 2 files changed, 26 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/compat/posix/current/ChangeLog +++ b/packages/compat/posix/current/ChangeLog @@ -1,3 +1,8 @@ +2002-11-26 Nick Garnett <nickg@ecoscentric.com> + + * src/signal.cxx: Changed the three routines added in the last + change so that they can be called safely from non-POSIX threads. + 2002-11-10 Nick Garnett <nickg@ecoscentric.com> * src/signal.cxx: Added three exportable routines that may be used
--- a/packages/compat/posix/current/src/signal.cxx +++ b/packages/compat/posix/current/src/signal.cxx @@ -725,11 +725,14 @@ externC void cyg_pthread_sigmask_set (co { pthread_info *self = pthread_self_info(); - if( oset != NULL ) - *oset = self->sigmask; + if( self != NULL ) + { + if( oset != NULL ) + *oset = self->sigmask; - if( set != NULL ) - self->sigmask = *set; + if( set != NULL ) + self->sigmask = *set; + } } // ------------------------------------------------------------------------- @@ -744,6 +747,9 @@ externC cyg_bool cyg_posix_sigpending(vo { pthread_info *self = pthread_self_info(); + if( self == NULL ) + return false; + return ( ((sig_pending | self->sigpending) & ~self->sigmask) != 0 ); } @@ -760,16 +766,19 @@ externC void cyg_posix_deliver_signals( sigset_t oldmask; pthread_info *self = pthread_self_info(); - if( mask != NULL ) + if( self != NULL ) { - oldmask = self->sigmask; - self->sigmask = *mask; + if( mask != NULL ) + { + oldmask = self->sigmask; + self->sigmask = *mask; + } + + cyg_deliver_signals(); + + if( mask != NULL ) + self->sigmask = oldmask; } - - cyg_deliver_signals(); - - if( mask != NULL ) - self->sigmask = oldmask; } // -------------------------------------------------------------------------
