* cygthread.cc (cygthread::stub2): Remove myself from the list of threads

monitored by signals since this thread will never call raise or sigwait.
(cygthread::simplestub2): Ditto.  Set ev here.
(cygthread::cygthread): Don't set ev here for freerange thread.
This commit is contained in:
Christopher Faylor 2003-12-05 05:29:17 +00:00
parent 78f3155ced
commit aeab6ea658
2 changed files with 11 additions and 5 deletions

View File

@ -1,3 +1,11 @@
2003-12-05 Christopher Faylor <cgf@redhat.com>
* cygthread.cc (cygthread::stub2): Remove myself from the list of
threads monitored by signals since this thread will never call raise or
sigwait.
(cygthread::simplestub2): Ditto. Set ev here.
(cygthread::cygthread): Don't set ev here for freerange thread.
2003-12-04 Christopher Faylor <cgf@redhat.com> 2003-12-04 Christopher Faylor <cgf@redhat.com>
* path.cc (slash_unc_prefix_p): Allow '.' as a valid character after * path.cc (slash_unc_prefix_p): Allow '.' as a valid character after

View File

@ -40,11 +40,10 @@ void
cygthread::stub2 (void *arg, void *) cygthread::stub2 (void *arg, void *)
{ {
exception_list except_entry; exception_list except_entry;
/* Initialize this thread's ability to respond to things like /* Initialize this thread's ability to respond to things like
SIGSEGV or SIGFPE. */ SIGSEGV or SIGFPE. */
init_exceptions (&except_entry); init_exceptions (&except_entry);
_my_tls.remove (); // Remove me from signal chain -- not signalable.
cygthread *info = (cygthread *) arg; cygthread *info = (cygthread *) arg;
if (info->arg == cygself) if (info->arg == cygself)
@ -108,13 +107,14 @@ void
cygthread::simplestub2 (void *arg, void *) cygthread::simplestub2 (void *arg, void *)
{ {
exception_list except_entry; exception_list except_entry;
/* Initialize this thread's ability to respond to things like /* Initialize this thread's ability to respond to things like
SIGSEGV or SIGFPE. */ SIGSEGV or SIGFPE. */
init_exceptions (&except_entry); init_exceptions (&except_entry);
_my_tls.remove (); // Remove me from signal chain -- not signalable.
cygthread *info = (cygthread *) arg; cygthread *info = (cygthread *) arg;
info->stack_ptr = &arg; info->stack_ptr = &arg;
info->ev = info->h;
info->func (info->arg == cygself ? info : info->arg); info->func (info->arg == cygself ? info : info->arg);
ExitThread (0); ExitThread (0);
} }
@ -197,8 +197,6 @@ cygthread::cygthread (LPTHREAD_START_ROUTINE start, LPVOID param,
this, 0, &id); this, 0, &id);
if (!h) if (!h)
api_fatal ("thread handle not set - %p<%p>, %E", h, id); api_fatal ("thread handle not set - %p<%p>, %E", h, id);
if (is_freerange)
ev = h;
thread_printf ("created thread %p", h); thread_printf ("created thread %p", h);
} }
} }