aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/sync.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2000-09-07 01:18:37 +0000
committerChristopher Faylor <me@cgf.cx>2000-09-07 01:18:37 +0000
commitc1644acb233ed749b28b4139604ab134cf1cd34c (patch)
tree3fd9f31c5c3d2f81996fd6ce65b627959e8fe015 /winsup/cygwin/sync.cc
parent8dec7b03798a822337c86dbbea2f764d165cd61d (diff)
downloadnewlib-c1644acb233ed749b28b4139604ab134cf1cd34c.zip
newlib-c1644acb233ed749b28b4139604ab134cf1cd34c.tar.gz
newlib-c1644acb233ed749b28b4139604ab134cf1cd34c.tar.bz2
* exceptions.cc (signal_exit): Reset all mutos owned by the main thread.
* fhandler.h: Define *_output_mutex macros for serializing tty output. (fhandler_termios): Remove restart_output_event. Define dummy output mutex methods. (fhandler_pty_master): Remove unneeded fixup_after_fork method. * fhandler_termios.cc (fhandler_termios::line_edit): Acquire output_mutex when CTRL-S is hit. Release it on CTRL-Q. * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Remove inappropriate OutputStopped test here. Just use the output mutex. (fhandler_pty_master::fhandler_pty_master): Remove obsolete reference to restart_output_event. (fhandler_tty_common::close): Ditto. (fhandler_pty_master::set_close_on_exec): Ditto. (fhandler_pty_master::fixup_after_fork): Delete. * tty.cc (tty::common_init): Ditto. * sync.cc (muto::reset): New method. * sync.h: Declare above method.
Diffstat (limited to 'winsup/cygwin/sync.cc')
-rw-r--r--winsup/cygwin/sync.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/winsup/cygwin/sync.cc b/winsup/cygwin/sync.cc
index f5c2159..9f44ff2 100644
--- a/winsup/cygwin/sync.cc
+++ b/winsup/cygwin/sync.cc
@@ -125,3 +125,16 @@ muto::release ()
return 1; /* success. */
}
+
+/* Call only when we're exiting. This is not thread safe. */
+void
+muto::reset ()
+{
+ visits = sync = tid = 0;
+ InterlockedExchange (&waiters, -1);
+ if (bruteforce)
+ {
+ CloseHandle (bruteforce);
+ bruteforce = CreateEvent (&sec_none_nih, FALSE, FALSE, name);
+ }
+}