diff options
author | Christopher Faylor <me@cgf.cx> | 2002-10-09 05:55:40 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-10-09 05:55:40 +0000 |
commit | c4ec64d76b9650b92d4c9f566fbac788c2d3fd46 (patch) | |
tree | 2b29dcff1825894fc9ac805e83546c6f3e0772f2 /winsup/cygwin/sigproc.cc | |
parent | 7da53596cf1385616721180b48b2159802045d1c (diff) | |
download | cygnal-c4ec64d76b9650b92d4c9f566fbac788c2d3fd46.tar.gz cygnal-c4ec64d76b9650b92d4c9f566fbac788c2d3fd46.tar.bz2 cygnal-c4ec64d76b9650b92d4c9f566fbac788c2d3fd46.zip |
* cygthread.cc (cygthread::stub): Don't create an event for "cygself" threads.
Assume that they exit via an ExitThread call.
* cygthread.h (cygthread::SetThreadPriority): New function.
(cygthread::zap_h): New function.
* dcrt0.cc (do_exit): Move cygthread::terminate earlier and establish
exit_state guard.
* fhandler.h (fhandler_tty_master::output_thread): Delete.
* fhandler_tty.cc (fhandler_tty_master::init): Set priority for threads via
method. Zap handles when done. Don't treat process_output specially.
(process_output): Call ExitThread directly.
(fhandler_tty_master::fixup_after_fork): Don't worry about output_thread.
(fhandler_tty_master::fixup_after_exec): Ditto.
* sigproc.cc (proc_terminate): Don't detach from hwait_subproc. Just let it
exit.
(sigproc_init): Close thread handle after initialization.
(wait_sig): Use GetCurrentThread() as SetThreadPriority call rather than
*event* handle. Call ExitThread directly on termination.
(wait_subproc): Call ExitThread directly on termination.
* tty.cc (tty_list::terminate): Don't attempt t detach from output_thread.
Diffstat (limited to 'winsup/cygwin/sigproc.cc')
-rw-r--r-- | winsup/cygwin/sigproc.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index 091065241..8cc459c1c 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -458,7 +458,6 @@ proc_terminate (void) { proc_loop_wait = 0; // Tell wait_subproc thread to exit wake_wait_subproc (); // Wake wait_subproc loop - hwait_subproc->detach (); hwait_subproc = NULL; sync_proc_subproc->acquire (WPSP); @@ -568,6 +567,7 @@ sigproc_init () ProtectHandle (signal_arrived); hwait_sig = new cygthread (wait_sig, cygself, "sig"); + hwait_sig->zap_h (); /* sync_proc_subproc is used by proc_subproc. It serialises * access to the children and zombie arrays. @@ -1030,7 +1030,7 @@ static DWORD WINAPI wait_sig (VOID *self) { /* Initialization */ - (void) SetThreadPriority (*((cygthread *) self), WAIT_SIG_PRIORITY); + (void) SetThreadPriority (GetCurrentThread (), WAIT_SIG_PRIORITY); /* sigcatch_nosync - semaphore incremented by sig_dispatch_pending and * by foreign processes to force an examination of @@ -1193,7 +1193,7 @@ wait_sig (VOID *self) } sigproc_printf ("done"); - return 0; + ExitThread (0); } /* Wait for subprocesses to terminate. Executes in a separate thread. */ @@ -1267,7 +1267,7 @@ wait_subproc (VOID *) ForceCloseHandle (events[0]); events[0] = NULL; sigproc_printf ("done"); - return 0; + ExitThread (0); } extern "C" { |