aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog8
-rw-r--r--winsup/cygwin/cygthread.cc11
2 files changed, 11 insertions, 8 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index df46f73..407a09b 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,11 @@
+2006-03-01 Christopher Faylor <cgf@timesys.com>
+
+ * cygthread.cc (cygthread::callfunc): Create ev as an auto-reset event
+ so that it will be reset by WaitFor*Object as appropriate.
+ (cygthread::stub): Ditto.
+ (cygthread::terminate_thread): Remove forced setting of thread
+ termination.
+
2006-03-01 Corinna Vinschen <corinna@vinschen.de>
* include/sys/dirent.h (struct __DIR): Rename __d_unused to
diff --git a/winsup/cygwin/cygthread.cc b/winsup/cygwin/cygthread.cc
index ee94e98..a365dcc 100644
--- a/winsup/cygwin/cygthread.cc
+++ b/winsup/cygwin/cygthread.cc
@@ -36,7 +36,7 @@ cygthread::callfunc (bool issimplestub)
else
{
if (issimplestub)
- ev = CreateEvent (&sec_none_nih, TRUE, FALSE, NULL);
+ ev = CreateEvent (&sec_none_nih, FALSE, FALSE, NULL);
pass_arg = alloca (arglen);
memcpy (pass_arg, arg, arglen);
SetEvent (ev);
@@ -78,7 +78,7 @@ cygthread::stub (VOID *arg)
debug_printf ("thread '%s', id %p, stack_ptr %p", info->name (), info->id, info->stack_ptr);
if (!info->ev)
{
- info->ev = CreateEvent (&sec_none_nih, TRUE, FALSE, NULL);
+ info->ev = CreateEvent (&sec_none_nih, FALSE, FALSE, NULL);
info->thread_sync = CreateEvent (&sec_none_nih, FALSE, FALSE, NULL);
}
}
@@ -319,12 +319,7 @@ cygthread::terminate_thread ()
if (is_freerange)
free (this);
else
- {
-#ifdef DEBUGGING
- terminated = true;
-#endif
- release (true);
- }
+ release (true);
goto out;