* 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