mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 16:54:20 +08:00
TTY: clean up port drain-delay handling
Move port drain-delay handling to a separate function. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
957dacaee5
commit
b74414f5f3
@ -441,6 +441,20 @@ int tty_port_block_til_ready(struct tty_port *port,
|
||||
}
|
||||
EXPORT_SYMBOL(tty_port_block_til_ready);
|
||||
|
||||
static void tty_port_drain_delay(struct tty_port *port, struct tty_struct *tty)
|
||||
{
|
||||
unsigned int bps = tty_get_baud_rate(tty);
|
||||
long timeout;
|
||||
|
||||
if (bps > 1200) {
|
||||
timeout = (HZ * 10 * port->drain_delay) / bps;
|
||||
timeout = max_t(long, timeout, HZ / 10);
|
||||
} else {
|
||||
timeout = 2 * HZ;
|
||||
}
|
||||
schedule_timeout_interruptible(timeout);
|
||||
}
|
||||
|
||||
int tty_port_close_start(struct tty_port *port,
|
||||
struct tty_struct *tty, struct file *filp)
|
||||
{
|
||||
@ -479,17 +493,8 @@ int tty_port_close_start(struct tty_port *port,
|
||||
if (test_bit(ASYNCB_INITIALIZED, &port->flags) &&
|
||||
port->closing_wait != ASYNC_CLOSING_WAIT_NONE)
|
||||
tty_wait_until_sent_from_close(tty, port->closing_wait);
|
||||
if (port->drain_delay) {
|
||||
unsigned int bps = tty_get_baud_rate(tty);
|
||||
long timeout;
|
||||
|
||||
if (bps > 1200)
|
||||
timeout = max_t(long,
|
||||
(HZ * 10 * port->drain_delay) / bps, HZ / 10);
|
||||
else
|
||||
timeout = 2 * HZ;
|
||||
schedule_timeout_interruptible(timeout);
|
||||
}
|
||||
if (port->drain_delay)
|
||||
tty_port_drain_delay(port, tty);
|
||||
/* Flush the ldisc buffering */
|
||||
tty_ldisc_flush(tty);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user