* cygtls.h (_cygtls::get_signal_arrived): Add parameter to make lock/unlock
conditional. * exceptions.cc (_cygtls::interrupt_setup): Don't get a lock when setting signal_arrived since we already have one. * gendef: Add some comments to make it easier to find functions.
This commit is contained in:
		
							parent
							
								
									a4f34961d8
								
							
						
					
					
						commit
						9873ac53d7
					
				|  | @ -1,3 +1,11 @@ | ||||||
|  | 2012-12-07  Christopher Faylor  <me.cygwin2012@cgf.cx> | ||||||
|  | 
 | ||||||
|  | 	* cygtls.h (_cygtls::get_signal_arrived): Add parameter to make | ||||||
|  | 	lock/unlock conditional. | ||||||
|  | 	* exceptions.cc (_cygtls::interrupt_setup): Don't get a lock when | ||||||
|  | 	setting signal_arrived since we already have one. | ||||||
|  | 	* gendef: Add some comments to make it easier to find functions. | ||||||
|  | 
 | ||||||
| 2012-12-06  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net> | 2012-12-06  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net> | ||||||
| 
 | 
 | ||||||
| 	* include/cygwin/wait.h (WAIT_ANY): Define. | 	* include/cygwin/wait.h (WAIT_ANY): Define. | ||||||
|  |  | ||||||
|  | @ -233,14 +233,16 @@ public: | ||||||
|   void lock () __attribute__ ((regparm (1))); |   void lock () __attribute__ ((regparm (1))); | ||||||
|   void unlock () __attribute__ ((regparm (1))); |   void unlock () __attribute__ ((regparm (1))); | ||||||
|   bool locked () __attribute__ ((regparm (1))); |   bool locked () __attribute__ ((regparm (1))); | ||||||
|   HANDLE get_signal_arrived () |   HANDLE get_signal_arrived (bool wait_for_lock = true) | ||||||
|   { |   { | ||||||
|     if (!signal_arrived) |     if (!signal_arrived) | ||||||
|       { |       { | ||||||
| 	lock (); | 	if (wait_for_lock) | ||||||
|  | 	  lock (); | ||||||
| 	if (!signal_arrived) | 	if (!signal_arrived) | ||||||
| 	  signal_arrived = CreateEvent (&sec_none_nih, false, false, NULL); | 	  signal_arrived = CreateEvent (&sec_none_nih, false, false, NULL); | ||||||
| 	unlock (); | 	if (wait_for_lock) | ||||||
|  | 	  unlock (); | ||||||
|       } |       } | ||||||
|     return signal_arrived; |     return signal_arrived; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | @ -799,7 +799,7 @@ _cygtls::interrupt_setup (siginfo_t& si, void *handler, struct sigaction& siga) | ||||||
|   this->sig = si.si_signo;		// Should always be last thing set to avoid a race
 |   this->sig = si.si_signo;		// Should always be last thing set to avoid a race
 | ||||||
| 
 | 
 | ||||||
|   if (incyg) |   if (incyg) | ||||||
|     SetEvent (get_signal_arrived ()); |     SetEvent (get_signal_arrived (false)); | ||||||
| 
 | 
 | ||||||
|   proc_subproc (PROC_CLEARWAIT, 1); |   proc_subproc (PROC_CLEARWAIT, 1); | ||||||
|   sigproc_printf ("armed signal_arrived %p, signal %d", signal_arrived, si.si_signo); |   sigproc_printf ("armed signal_arrived %p, signal %d", signal_arrived, si.si_signo); | ||||||
|  |  | ||||||
|  | @ -218,6 +218,7 @@ __ZN7_cygtls3popEv: | ||||||
| 	popl	%ebx | 	popl	%ebx | ||||||
| 	ret | 	ret | ||||||
| 
 | 
 | ||||||
|  | # _cygtls::lock | ||||||
| 	.global	__ZN7_cygtls4lockEv | 	.global	__ZN7_cygtls4lockEv | ||||||
| __ZN7_cygtls4lockEv: | __ZN7_cygtls4lockEv: | ||||||
| 	pushl	%ebx | 	pushl	%ebx | ||||||
|  | @ -231,6 +232,7 @@ __ZN7_cygtls4lockEv: | ||||||
| 2:	popl	%ebx | 2:	popl	%ebx | ||||||
| 	ret | 	ret | ||||||
| 
 | 
 | ||||||
|  | # _cygtls::unlock | ||||||
| 	.global	__ZN7_cygtls6unlockEv | 	.global	__ZN7_cygtls6unlockEv | ||||||
| __ZN7_cygtls6unlockEv: | __ZN7_cygtls6unlockEv: | ||||||
| 	decl	$tls::pstacklock(%eax) | 	decl	$tls::pstacklock(%eax) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue