* 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.
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user