OSDN Git Service

TTY: clean up port drain-delay handling
authorJohan Hovold <jhovold@gmail.com>
Thu, 7 Mar 2013 14:55:52 +0000 (15:55 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 18 Mar 2013 23:27:54 +0000 (16:27 -0700)
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>
drivers/tty/tty_port.c

index 0af8d9a..20426cc 100644 (file)
@@ -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);