diff options
Diffstat (limited to 'term')
-rw-r--r-- | term/devio.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/term/devio.c b/term/devio.c index 9bef722d..870f969c 100644 --- a/term/devio.c +++ b/term/devio.c @@ -71,6 +71,8 @@ static struct port_info *phys_reply_pi; static device_t device_master; +static int output_stopped; + /* Forward */ static void devio_desert_dtr (); @@ -208,6 +210,12 @@ devio_start_output () if (!size || output_pending || (termflags & USER_OUTPUT_SUSP)) return; + if (output_stopped) + { + device_set_status (phys_device, TTY_START, 0, 0); + output_stopped = 0; + } + /* Copy characters onto PENDING_OUTPUT, not bothering those already there. */ @@ -343,6 +351,14 @@ devio_abandon_physical_output () output_pending = 0; } +static void +devio_suspend_physical_output () +{ + device_set_status (phys_device, TTY_STOP, 0, 0); + output_stopped = 1; +} + + static int devio_pending_output_size () { @@ -617,6 +633,7 @@ struct bottomhalf devio_bottom = devio_set_break, devio_clear_break, devio_abandon_physical_output, + devio_suspend_physical_output, devio_pending_output_size, devio_assert_dtr, devio_desert_dtr, |