diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 7b2156afe..7e9d9ea1e 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,13 @@ +2012-12-07 Christopher Faylor + + * sigproc.h (sigpacket): Remove parameter names from declarations. + (sigpacket::sigtls): Rename from 'tls'. + * exceptions.cc (sigpacket::process): Define local tls variable and + assign that to sigtls if appropriate. Clarify debugging output. + * sigproc.cc (sig_send): Accommodate tls -> sigtls rename. + (pending_signals::add): Ditto. + (wait_sig): Ditto. + 2012-12-07 Christopher Faylor * cygtls.h (_cygtls::get_signal_arrived): Add parameter to make diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index c04e35af7..a28b90af5 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -1123,6 +1123,7 @@ sigpacket::process () { bool continue_now; struct sigaction dummy = global_sigs[SIGSTOP]; + _cygtls *tls; if (si.si_signo != SIGCONT) continue_now = false; @@ -1168,8 +1169,11 @@ sigpacket::process () if (have_execed) handler = NULL; - if (tls) - sigproc_printf ("using tls %p", tls); + if (sigtls) + { + tls = sigtls; + sigproc_printf ("using sigtls %p", tls); + } else { tls = cygheap->find_tls (si.si_signo); diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index f682b849b..6c6bddb39 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -704,7 +704,7 @@ sig_send (_pinfo *p, siginfo_t& si, _cygtls *tls) if (!pack.si.si_uid) pack.si.si_uid = myself->uid; pack.pid = myself->pid; - pack.tls = tls; + pack.sigtls = tls; if (wait_for_completion) { pack.wakeup = CreateEvent (&sec_none_nih, FALSE, FALSE, NULL); @@ -1299,7 +1299,7 @@ pending_signals::add (sigpacket& pack) return; se = sigs + pack.si.si_signo; *se = pack; - se->mask = &pack.tls->sigmask; + se->mask = &pack.sigtls->sigmask; se->next = NULL; if (end) end->next = se; @@ -1352,7 +1352,7 @@ wait_sig (VOID *) if (pack.si.si_signo == __SIGHOLD) WaitForSingleObject (sig_hold, INFINITE); DWORD nb; - pack.tls = NULL; + pack.sigtls = NULL; if (!ReadFile (my_readsig, &pack, sizeof (pack), &nb, NULL)) break; @@ -1393,7 +1393,7 @@ wait_sig (VOID *) unsigned bit; sigq.reset (); while ((q = sigq.next ())) - if (pack.tls->sigmask & (bit = SIGTOMASK (q->si.si_signo))) + if (pack.sigtls->sigmask & (bit = SIGTOMASK (q->si.si_signo))) *pack.mask |= bit; break; case __SIGHOLD: @@ -1428,7 +1428,7 @@ wait_sig (VOID *) // FIXME: REALLY not right when taking threads into consideration. // We need a per-thread queue since each thread can have its own // list of blocked signals. CGF 2005-08-24 - if (sigq.sigs[sig].si.si_signo && sigq.sigs[sig].tls == pack.tls) + if (sigq.sigs[sig].si.si_signo && sigq.sigs[sig].sigtls == pack.sigtls) sigproc_printf ("signal %d already queued", pack.si.si_signo); else { diff --git a/winsup/cygwin/sigproc.h b/winsup/cygwin/sigproc.h index d442232e9..b989f3fa1 100644 --- a/winsup/cygwin/sigproc.h +++ b/winsup/cygwin/sigproc.h @@ -47,7 +47,7 @@ struct sigpacket { siginfo_t si; pid_t pid; - class _cygtls *tls; + class _cygtls *sigtls; sigset_t *mask; union { @@ -56,7 +56,7 @@ struct sigpacket struct sigpacket *next; }; int __stdcall process () __attribute__ ((regparm (1))); - int setup_handler (void *handler, struct sigaction& siga, _cygtls *tls) + int setup_handler (void *, struct sigaction&, _cygtls *) __attribute__ ((regparm (3))); }; @@ -80,7 +80,7 @@ void __stdcall sigproc_init (); void __stdcall sigproc_terminate (enum exit_states); #endif bool __stdcall pid_exists (pid_t) __attribute__ ((regparm(1))); -int __stdcall sig_send (_pinfo *, siginfo_t&, class _cygtls *tls = NULL) __attribute__ ((regparm (3))); +int __stdcall sig_send (_pinfo *, siginfo_t&, class _cygtls * = NULL) __attribute__ ((regparm (3))); int __stdcall sig_send (_pinfo *, int) __attribute__ ((regparm (2))); void __stdcall signal_fixup_after_exec (); void __stdcall sigalloc ();