* 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:
@ -149,12 +149,6 @@ fhandler_tty_common::__release_output_mutex (const char *fn, int ln)
|
||||
}
|
||||
}
|
||||
|
||||
#define acquire_output_mutex(ms) \
|
||||
__acquire_output_mutex (__PRETTY_FUNCTION__, __LINE__, ms);
|
||||
|
||||
#define release_output_mutex() \
|
||||
__release_output_mutex (__PRETTY_FUNCTION__, __LINE__);
|
||||
|
||||
/* Process tty input. */
|
||||
|
||||
void
|
||||
@ -300,13 +294,6 @@ fhandler_pty_master::process_slave_output (char *buf, size_t len, int pktmode_on
|
||||
continue;
|
||||
}
|
||||
|
||||
if (get_ttyp ()->OutputStopped)
|
||||
{
|
||||
termios_printf ("waiting for restart_output_event");
|
||||
WaitForSingleObject (restart_output_event, INFINITE);
|
||||
termios_printf ("done waiting for restart_output_event");
|
||||
}
|
||||
|
||||
char *optr;
|
||||
optr = buf;
|
||||
if (pktmode_on)
|
||||
@ -866,7 +853,6 @@ fhandler_pty_master::fhandler_pty_master (const char *name, DWORD devtype, int u
|
||||
set_cb (sizeof *this);
|
||||
ioctl_request_event = NULL;
|
||||
ioctl_done_event = NULL;
|
||||
restart_output_event = NULL;
|
||||
pktmode = need_nl = 0;
|
||||
inuse = NULL;
|
||||
}
|
||||
@ -895,8 +881,6 @@ fhandler_tty_common::close ()
|
||||
termios_printf ("CloseHandle (ioctl_done_event), %E");
|
||||
if (ioctl_request_event && !CloseHandle (ioctl_request_event))
|
||||
termios_printf ("CloseHandle (ioctl_request_event), %E");
|
||||
if (restart_output_event && !CloseHandle (restart_output_event))
|
||||
termios_printf ("CloseHandle (restart_output_event), %E");
|
||||
if (inuse && !CloseHandle (inuse))
|
||||
termios_printf ("CloseHandle (inuse), %E");
|
||||
if (!ForceCloseHandle (output_mutex))
|
||||
@ -1051,7 +1035,6 @@ void
|
||||
fhandler_pty_master::set_close_on_exec (int val)
|
||||
{
|
||||
this->fhandler_tty_common::set_close_on_exec (val);
|
||||
set_inheritance (restart_output_event, val);
|
||||
|
||||
/* FIXME: There is a console handle leak here. */
|
||||
if (get_ttyp ()->master_pid == GetCurrentProcessId ())
|
||||
@ -1061,14 +1044,6 @@ fhandler_pty_master::set_close_on_exec (int val)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_pty_master::fixup_after_fork (HANDLE child)
|
||||
{
|
||||
this->fhandler_tty_common::fixup_after_fork (child);
|
||||
if (restart_output_event)
|
||||
fork_fixup (child, restart_output_event, "restart_output_event");
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_tty_master::fixup_after_fork (HANDLE child)
|
||||
{
|
||||
|
Reference in New Issue
Block a user