* 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.
This commit is contained in:
		
							parent
							
								
									9873ac53d7
								
							
						
					
					
						commit
						0d1a50b81a
					
				| 
						 | 
				
			
			@ -1,3 +1,13 @@
 | 
			
		|||
2012-12-07  Christopher Faylor  <me.cygwin2012@cgf.cx>
 | 
			
		||||
 | 
			
		||||
	* 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  <me.cygwin2012@cgf.cx>
 | 
			
		||||
 | 
			
		||||
	* cygtls.h (_cygtls::get_signal_arrived): Add parameter to make
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 ();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue