* dcrt0.cc (sigthread::init): Correct overzealous ifdef.
* exceptions.cc (call_handler): Avoid calling sigthread acquire lock. * sigproc.h (sigthread): Comment out lock for now. * sync.cc (muto::acquire): Add a minor optimization.
This commit is contained in:
parent
2556e737ec
commit
167095f6c0
|
@ -1,3 +1,10 @@
|
|||
Thu Oct 19 13:55:31 2000 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* dcrt0.cc (sigthread::init): Correct overzealous ifdef.
|
||||
* exceptions.cc (call_handler): Avoid calling sigthread acquire lock.
|
||||
* sigproc.h (sigthread): Comment out lock for now.
|
||||
* sync.cc (muto::acquire): Add a minor optimization.
|
||||
|
||||
2000-10-18 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* Makefile.in: add miscfuncs.cc
|
||||
|
|
|
@ -616,8 +616,8 @@ sigthread::init (const char *s)
|
|||
{
|
||||
#if 0 /* FIXME: Someday we'll need this for inter-thread signalling */
|
||||
lock = new_muto (FALSE, s);
|
||||
id = GetCurrentThreadId ();
|
||||
#endif
|
||||
id = GetCurrentThreadId ();
|
||||
}
|
||||
|
||||
/* Take over from libc's crt0.o and start the application. Note the
|
||||
|
|
|
@ -709,7 +709,9 @@ call_handler (int sig, struct sigaction& siga, void *handler)
|
|||
int res;
|
||||
int using_mainthread_frame;
|
||||
|
||||
#if 0
|
||||
mainthread.lock->acquire ();
|
||||
#endif
|
||||
|
||||
if (sigsave.sig)
|
||||
goto set_pending;
|
||||
|
@ -723,7 +725,9 @@ call_handler (int sig, struct sigaction& siga, void *handler)
|
|||
{
|
||||
int i;
|
||||
using_mainthread_frame = 0;
|
||||
#if 0
|
||||
mainthread.lock->release ();
|
||||
#endif
|
||||
|
||||
hth = myself->getthread2signal ();
|
||||
/* Suspend the thread which will receive the signal. But first ensure that
|
||||
|
@ -747,14 +751,18 @@ call_handler (int sig, struct sigaction& siga, void *handler)
|
|||
if (m->unstable () || m->owner () == mainthread.id)
|
||||
goto owns_muto;
|
||||
|
||||
#if 0
|
||||
mainthread.lock->acquire ();
|
||||
#endif
|
||||
if (mainthread.frame)
|
||||
{
|
||||
ebp = mainthread.frame; /* try to avoid a race */
|
||||
using_mainthread_frame = 1;
|
||||
goto next;
|
||||
}
|
||||
#if 0
|
||||
mainthread.lock->release ();
|
||||
#endif
|
||||
|
||||
cx.ContextFlags = CONTEXT_CONTROL | CONTEXT_INTEGER;
|
||||
if (!GetThreadContext (hth, &cx))
|
||||
|
@ -816,7 +824,9 @@ out:
|
|||
sigproc_printf ("ResumeThread returned %d", res);
|
||||
}
|
||||
|
||||
#if 0
|
||||
mainthread.lock->release ();
|
||||
#endif
|
||||
|
||||
sigproc_printf ("returning %d", interrupted);
|
||||
return interrupted;
|
||||
|
|
|
@ -38,7 +38,9 @@ struct sigthread
|
|||
{
|
||||
DWORD id;
|
||||
DWORD frame;
|
||||
#if 0
|
||||
muto *lock; // FIXME: Use for multi-thread signalling someday
|
||||
#endif
|
||||
void init (const char *s);
|
||||
};
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@ muto::acquire (DWORD ms)
|
|||
switch (WaitForSingleObject (bruteforce, ms))
|
||||
{
|
||||
case WAIT_OBJECT_0:
|
||||
was_waiting = 0;
|
||||
goto gotit;
|
||||
break;
|
||||
default:
|
||||
InterlockedDecrement (&waiters);
|
||||
|
@ -96,6 +96,7 @@ muto::acquire (DWORD ms)
|
|||
}
|
||||
}
|
||||
|
||||
gotit:
|
||||
tid = this_tid; /* register this thread. */
|
||||
return ++visits; /* Increment visit count. */
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue