* 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:
Christopher Faylor
2000-09-07 01:18:37 +00:00
parent 8dec7b0379
commit c1644acb23
8 changed files with 55 additions and 32 deletions

View File

@ -505,6 +505,12 @@ public:
int ready_for_read (int fd, DWORD howlong, int ignra);
};
#define acquire_output_mutex(ms) \
__acquire_output_mutex (__PRETTY_FUNCTION__, __LINE__, ms);
#define release_output_mutex() \
__release_output_mutex (__PRETTY_FUNCTION__, __LINE__);
class fhandler_termios: public fhandler_base
{
protected:
@ -518,7 +524,6 @@ public:
{
// nothing to do
}
HANDLE restart_output_event;
HANDLE get_output_handle () const { return output_handle; }
int line_edit (const char *rptr, int nread, int always_accept = 0);
void set_output_handle (HANDLE h) { output_handle = h; }
@ -528,6 +533,8 @@ public:
int tcsetpgrp (int pid);
void set_ctty (int ttynum, int flags);
int bg_check (int sig);
virtual DWORD __acquire_output_mutex (const char *fn, int ln, DWORD ms) {return 1;}
virtual void __release_output_mutex (const char *fn, int ln) {}
};
/* This is a input and output console handle */
@ -692,7 +699,6 @@ public:
char *ptsname ();
void set_close_on_exec (int val);
void fixup_after_fork (HANDLE parent);
BOOL hit_eof ();
};