OSDN Git Service

TTY: serial, remove tasklet for tty_wakeup
authorJiri Slaby <jslaby@suse.cz>
Thu, 14 Jul 2011 12:35:12 +0000 (14:35 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 23 Aug 2011 17:34:06 +0000 (10:34 -0700)
tty_wakeup can be called from any context. So there is no need to have
an extra tasklet for calling that. Hence save some space and remove
the tasklet completely.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/tty/serial/serial_core.c
include/linux/serial_core.h

index 2cbf1bd..4786232 100644 (file)
@@ -72,7 +72,7 @@ void uart_write_wakeup(struct uart_port *port)
         * closed.  No cookie for you.
         */
        BUG_ON(!state);
-       tasklet_schedule(&state->tlet);
+       tty_wakeup(state->port.tty);
 }
 
 static void uart_stop(struct tty_struct *tty)
@@ -107,12 +107,6 @@ static void uart_start(struct tty_struct *tty)
        spin_unlock_irqrestore(&port->lock, flags);
 }
 
-static void uart_tasklet_action(unsigned long data)
-{
-       struct uart_state *state = (struct uart_state *)data;
-       tty_wakeup(state->port.tty);
-}
-
 static inline void
 uart_update_mctrl(struct uart_port *port, unsigned int set, unsigned int clear)
 {
@@ -250,11 +244,6 @@ static void uart_shutdown(struct tty_struct *tty, struct uart_state *state)
        }
 
        /*
-        * kill off our tasklet
-        */
-       tasklet_kill(&state->tlet);
-
-       /*
         * Free the transmit buffer page.
         */
        if (state->xmit.buf) {
@@ -2277,8 +2266,6 @@ int uart_register_driver(struct uart_driver *drv)
                port->ops = &uart_port_ops;
                port->close_delay     = 500;    /* .5 seconds */
                port->closing_wait    = 30000;  /* 30 seconds */
-               tasklet_init(&state->tlet, uart_tasklet_action,
-                            (unsigned long)state);
        }
 
        retval = tty_register_driver(normal);
@@ -2439,11 +2426,6 @@ int uart_remove_one_port(struct uart_driver *drv, struct uart_port *uport)
         */
        uport->type = PORT_UNKNOWN;
 
-       /*
-        * Kill the tasklet, and free resources.
-        */
-       tasklet_kill(&state->tlet);
-
        state->uart_port = NULL;
        mutex_unlock(&port_mutex);
 
index a5c3114..76e1103 100644 (file)
@@ -384,7 +384,6 @@ struct uart_state {
        int                     pm_state;
        struct circ_buf         xmit;
 
-       struct tasklet_struct   tlet;
        struct uart_port        *uart_port;
 };