void gs_hangup(struct tty_struct *tty) { struct gs_port *port; func_enter (); if (!tty) return; port = tty->driver_data; tty = port->tty; if (!tty) return; gs_shutdown_port (port); port->flags &= ~(ASYNC_NORMAL_ACTIVE|GS_ACTIVE); port->tty = NULL; port->count = 0; wake_up_interruptible(&port->open_wait); func_exit (); }
void gs_hangup(struct tty_struct *tty) { struct gs_port *port; unsigned long flags; func_enter (); port = tty->driver_data; tty = port->port.tty; if (!tty) return; gs_shutdown_port (port); spin_lock_irqsave(&port->port.lock, flags); port->port.flags &= ~(ASYNC_NORMAL_ACTIVE|GS_ACTIVE); port->port.tty = NULL; port->port.count = 0; spin_unlock_irqrestore(&port->port.lock, flags); wake_up_interruptible(&port->port.open_wait); func_exit (); }