* cygthread.cc (cygthread::terminate_thread): Wait briefly for notification

event in the event that the thread was actually in the process of exiting.
* pipe.cc (fhandler_pipe::dup): read_state is not supposed to be inheritable.
Fix that.
* path.cc (path_conv::check): Set symlen = 0 to avoid a compiler warning.
* devices.h (devices::parsedisk): Declare new function.
* devices.in (devices::parsedisk): Define new function.
* dtable.cc (dtable::init_std_file_from_handle): Use device numbers rather than
name.
* fhandler_proc.cc (format_proc_partitions): Use parsedisk to generate disk
names from numeric codes.  (This was broken on two of my systems previously and
is still broken now)
This commit is contained in:
Christopher Faylor
2005-02-01 16:49:13 +00:00
parent 01a94cf866
commit 74d8e12e16
9 changed files with 83 additions and 38 deletions

View File

@@ -73,7 +73,7 @@ cygthread::stub (VOID *arg)
info->func (info->arg == cygself ? info : info->arg);
/* ...so the above should always return */
/* If stack_ptr is NULL, the above function has set that to indicate
/* If func is NULL, the above function has set that to indicate
that it doesn't want to alert anyone with a SetEvent and should
just be marked as no longer inuse. Hopefully the function knows
that it is doing. */
@@ -175,10 +175,6 @@ cygthread::cygthread (LPTHREAD_START_ROUTINE start, LPVOID param,
else
{
stack_ptr = NULL;
#ifdef DEBUGGING
if (__oldname)
system_printf ("__oldname %s, terminated %d", __oldname, terminated);
#endif
h = CreateThread (&sec_none_nih, 0, is_freerange ? simplestub : stub,
this, 0, &id);
if (!h)
@@ -272,6 +268,8 @@ cygthread::terminate_thread ()
(void) TerminateThread (h, 0);
(void) WaitForSingleObject (h, INFINITE);
if (ev)
WaitForSingleObject (ev, 0);
if (!inuse || exiting)
return;