* cygheap.cc (init_cygheap::init_tls_list): Accommodate threadlist
having a new type threadlist_t *. Convert commented out code into an #if 0. Create thread mutex. Explain why. (init_cygheap::remove_tls): Drop timeout value. Always wait infinitely for tls_sentry. Return mutex HANDLE of just deleted threadlist entry. (init_cygheap::find_tls): New implementation taking tls pointer as search parameter. Return threadlist_t *. (init_cygheap::find_tls): Return threadlist_t *. Define ix as auto variable. Drop exception handling since crash must be made impossible due to correct synchronization. Return with locked mutex. * cygheap.h (struct threadlist_t): Define. (struct init_cygheap): Convert threadlist to threadlist_t type. (init_cygheap::remove_tls): Align declaration to above change. (init_cygheap::find_tls): Ditto. (init_cygheap::unlock_tls): Define. * cygtls.cc (_cygtls::remove): Unlock and close mutex when finishing. * exceptions.cc (sigpacket::process): Lock _cygtls area of thread before accessing it. * fhandler_termios.cc (fhandler_termios::bg_check): Ditto. * sigproc.cc (sig_send): Ditto. * thread.cc (pthread::exit): Ditto. Add comment. (pthread::cancel): Ditto.
This commit is contained in:
@ -193,9 +193,12 @@ fhandler_termios::bg_check (int sig)
|
||||
return bg_eof;
|
||||
}
|
||||
|
||||
threadlist_t *tl_entry;
|
||||
tl_entry = cygheap->find_tls (_main_tls);
|
||||
int sigs_ignored =
|
||||
((void *) global_sigs[sig].sa_handler == (void *) SIG_IGN) ||
|
||||
(_main_tls->sigmask & SIGTOMASK (sig));
|
||||
cygheap->unlock_tls (tl_entry);
|
||||
|
||||
/* If the process is ignoring SIGTT*, then background IO is OK. If
|
||||
the process is not ignoring SIGTT*, then the sig is to be sent to
|
||||
|
Reference in New Issue
Block a user