* cygthread.cc (cygthread::stub): Very minor cleanup.
(cygthread::stub): Report overflows in cygwin thread pool when DEBUGGING is on and special environment variable is not set. (cygthread::terminate): Set event only when event actually exists. * exceptions.cc (signal_exit): Set priority of main thread to low before setting current thread to high.
This commit is contained in:
		
							parent
							
								
									f8f63f9bc1
								
							
						
					
					
						commit
						09663d31bb
					
				| 
						 | 
				
			
			@ -1,3 +1,12 @@
 | 
			
		|||
2002-10-05  Christopher Faylor  <cgf@redhat.com>
 | 
			
		||||
 | 
			
		||||
	* cygthread.cc (cygthread::stub): Very minor cleanup.
 | 
			
		||||
	(cygthread::stub): Report overflows in cygwin thread pool when
 | 
			
		||||
	DEBUGGING is on and special environment variable is not set.
 | 
			
		||||
	(cygthread::terminate): Set event only when event actually exists.
 | 
			
		||||
	* exceptions.cc (signal_exit): Set priority of main thread to low
 | 
			
		||||
	before setting current thread to high.
 | 
			
		||||
 | 
			
		||||
2002-10-01  Robert Collins <rbtcollins@hotmail.com>
 | 
			
		||||
 | 
			
		||||
	* thread.cc (pthread_key::keys): Copy on fork. Add a comment explaining
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,10 +68,10 @@ cygthread::stub (VOID *arg)
 | 
			
		|||
#endif
 | 
			
		||||
      SetEvent (info->ev);
 | 
			
		||||
      info->__name = NULL;
 | 
			
		||||
      if (initialized < 0)
 | 
			
		||||
	ExitThread (0);
 | 
			
		||||
      else
 | 
			
		||||
      if (initialized >= 0)
 | 
			
		||||
	SuspendThread (info->h);
 | 
			
		||||
      else
 | 
			
		||||
	ExitThread (0);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -160,7 +160,7 @@ new (size_t)
 | 
			
		|||
	{
 | 
			
		||||
#ifdef DEBUGGING
 | 
			
		||||
	  char buf[1024];
 | 
			
		||||
	  if (GetEnvironmentVariable ("CYGWIN_NOFREERANGE", buf, sizeof (buf)))
 | 
			
		||||
	  if (!GetEnvironmentVariable ("CYGWIN_NOFREERANGE_NOCHECK", buf, sizeof (buf)))
 | 
			
		||||
	    api_fatal ("Overflowed cygwin thread pool");
 | 
			
		||||
#endif
 | 
			
		||||
	  return freerange ();
 | 
			
		||||
| 
						 | 
				
			
			@ -278,7 +278,8 @@ void
 | 
			
		|||
cygthread::terminate ()
 | 
			
		||||
{
 | 
			
		||||
  initialized = -1;
 | 
			
		||||
  /* Signal the event for all running threads */
 | 
			
		||||
  for (cygthread *info = threads + NTHREADS - 1; info >= threads; info--)
 | 
			
		||||
    if (!(DWORD) InterlockedExchange ((LPLONG) &info->avail, 0) && info->id)
 | 
			
		||||
    if (!InterlockedExchange ((LPLONG) &info->avail, 0) && info->ev)
 | 
			
		||||
      SetEvent (info->ev);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1084,8 +1084,8 @@ signal_exit (int rc)
 | 
			
		|||
  /* We'd like to stop the main thread from executing but when we do that it
 | 
			
		||||
     causes random, inexplicable hangs.  So, instead, we set up the priority
 | 
			
		||||
     of this thread really high so that it should do its thing and then exit. */
 | 
			
		||||
  (void) SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_TIME_CRITICAL);
 | 
			
		||||
  (void) SetThreadPriority (hMainThread, THREAD_PRIORITY_IDLE);
 | 
			
		||||
  (void) SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_TIME_CRITICAL);
 | 
			
		||||
 | 
			
		||||
  /* Unlock any main thread mutos since we're executing with prejudice. */
 | 
			
		||||
  muto *m;
 | 
			
		||||
| 
						 | 
				
			
			@ -1166,7 +1166,6 @@ int
 | 
			
		|||
sigframe::call_signal_handler ()
 | 
			
		||||
{
 | 
			
		||||
  return unregister () ? call_signal_handler_now () : 0;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define pid_offset (unsigned)(((_pinfo *)NULL)->pid)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue