All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@suse.de>
To: linux-kernel@vger.kernel.org
Cc: Alan Cox <alan@linux.intel.com>, Greg Kroah-Hartman <gregkh@suse.de>
Subject: [PATCH 49/79] serial: move count into the tty_port version
Date: Sat, 19 Sep 2009 14:36:54 -0700	[thread overview]
Message-ID: <1253396244-7885-49-git-send-email-gregkh@suse.de> (raw)
In-Reply-To: <20090919213345.GB7668@kroah.com>

From: Alan Cox <alan@linux.intel.com>

Remove more stuff from the serial special case code

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/serial/serial_core.c |   38 ++++++++++++++++++++------------------
 include/linux/serial_core.h  |    1 -
 2 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index 0ffefb3..4af3364 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -52,7 +52,7 @@ static struct lock_class_key port_lock_key;
 
 #define HIGH_BITS_OFFSET	((sizeof(long)-sizeof(int))*8)
 
-#define uart_users(state)	((state)->count + (state)->port.blocked_open)
+#define uart_users(state)	((state)->port.count + (state)->port.blocked_open)
 
 #ifdef CONFIG_SERIAL_CORE_CONSOLE
 #define uart_console(port)	((port)->cons && (port)->cons->index == (port)->line)
@@ -694,7 +694,7 @@ static int uart_set_info(struct uart_state *state,
 			USF_CLOSING_WAIT_NONE : new_serial.closing_wait * 10;
 
 	/*
-	 * This semaphore protects state->count.  It is also
+	 * This semaphore protects port->count.  It is also
 	 * very useful to prevent opens.  Also, take the
 	 * port configuration semaphore to make sure that a
 	 * module insertion/removal doesn't change anything
@@ -1272,24 +1272,24 @@ static void uart_close(struct tty_struct *tty, struct file *filp)
 	if (tty_hung_up_p(filp))
 		goto done;
 
-	if ((tty->count == 1) && (state->count != 1)) {
+	if ((tty->count == 1) && (port->count != 1)) {
 		/*
 		 * Uh, oh.  tty->count is 1, which means that the tty
-		 * structure will be freed.  state->count should always
+		 * structure will be freed.  port->count should always
 		 * be one in these conditions.  If it's greater than
 		 * one, we've got real problems, since it means the
 		 * serial port won't be shutdown.
 		 */
 		printk(KERN_ERR "uart_close: bad serial port count; tty->count is 1, "
-		       "state->count is %d\n", state->count);
-		state->count = 1;
+		       "port->count is %d\n", port->count);
+		port->count = 1;
 	}
-	if (--state->count < 0) {
+	if (--port->count < 0) {
 		printk(KERN_ERR "uart_close: bad serial port count for %s: %d\n",
-		       tty->name, state->count);
-		state->count = 0;
+		       tty->name, port->count);
+		port->count = 0;
 	}
-	if (state->count)
+	if (port->count)
 		goto done;
 
 	/*
@@ -1421,7 +1421,7 @@ static void uart_hangup(struct tty_struct *tty)
 	if (state->flags & UIF_NORMAL_ACTIVE) {
 		uart_flush_buffer(tty);
 		uart_shutdown(state);
-		state->count = 0;
+		port->count = 0;
 		state->flags &= ~UIF_NORMAL_ACTIVE;
 		port->tty = NULL;
 		wake_up_interruptible(&port->open_wait);
@@ -1478,7 +1478,7 @@ uart_block_til_ready(struct file *filp, struct uart_state *state)
 	unsigned int mctrl;
 
 	port->blocked_open++;
-	state->count--;
+	port->count--;
 
 	add_wait_queue(&port->open_wait, &wait);
 	while (1) {
@@ -1539,7 +1539,7 @@ uart_block_til_ready(struct file *filp, struct uart_state *state)
 	set_current_state(TASK_RUNNING);
 	remove_wait_queue(&port->open_wait, &wait);
 
-	state->count++;
+	port->count++;
 	port->blocked_open--;
 
 	if (signal_pending(current))
@@ -1562,7 +1562,7 @@ static struct uart_state *uart_get(struct uart_driver *drv, int line)
 		goto err;
 	}
 
-	state->count++;
+	state->port.count++;
 	if (!state->uart_port || state->uart_port->flags & UPF_DEAD) {
 		ret = -ENXIO;
 		goto err_unlock;
@@ -1570,7 +1570,7 @@ static struct uart_state *uart_get(struct uart_driver *drv, int line)
 	return state;
 
  err_unlock:
-	state->count--;
+	state->port.count--;
 	mutex_unlock(&state->mutex);
  err:
 	return ERR_PTR(ret);
@@ -1590,6 +1590,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
 {
 	struct uart_driver *drv = (struct uart_driver *)tty->driver->driver_state;
 	struct uart_state *state;
+	struct tty_port *port;
 	int retval, line = tty->index;
 
 	BUG_ON(!kernel_locked());
@@ -1617,6 +1618,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
 		retval = PTR_ERR(state);
 		goto fail;
 	}
+	port = &state->port;
 
 	/*
 	 * Once we set tty->driver_data here, we are guaranteed that
@@ -1627,14 +1629,14 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
 	state->uart_port->state = state;
 	tty->low_latency = (state->uart_port->flags & UPF_LOW_LATENCY) ? 1 : 0;
 	tty->alt_speed = 0;
-	state->port.tty = tty;
+	port->tty = tty;
 
 	/*
 	 * If the port is in the middle of closing, bail out now.
 	 */
 	if (tty_hung_up_p(filp)) {
 		retval = -EAGAIN;
-		state->count--;
+		port->count--;
 		mutex_unlock(&state->mutex);
 		goto fail;
 	}
@@ -1642,7 +1644,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
 	/*
 	 * Make sure the device is in D0 state.
 	 */
-	if (state->count == 1)
+	if (port->count == 1)
 		uart_change_pm(state, 0);
 
 	/*
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index fd11d4d..63ad909 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -354,7 +354,6 @@ struct uart_state {
 #define USF_CLOSING_WAIT_INF	(0)
 #define USF_CLOSING_WAIT_NONE	(~0U)
 
-	int			count;
 	int			pm_state;
 	struct circ_buf		xmit;
 	uif_t			flags;
-- 
1.6.4.2


  parent reply	other threads:[~2009-09-19 21:42 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-19 21:33 [GIT PATCH] TTY patches for 2.6.31-git Greg KH
2009-09-19 21:36 ` [PATCH 01/79] tty: gigaset: really fix chars_in_buffer Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 02/79] serial: bfin_5xx: fix building as module when early printk is enabled Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 03/79] tty: serial/pcmcia: add ID for Advantech card Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 04/79] tty-ldisc: make /proc/tty/ldiscs use ldisc_ops instead of ldiscs Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 05/79] tty-ldisc: get rid of tty_ldisc_try_get() helper function Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 06/79] tty: includecheck fix: drivers/char, vt.c Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 07/79] tty: icom: bit and/or confusion? Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 08/79] cyclades: add tty refcounting Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 09/79] cyclades: remove block_til_ready Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 10/79] cyclades: avoid addresses recomputation Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 11/79] cyclades: switch to tty_port_hangup Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 12/79] cyclades: close cleanup Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 13/79] cyclades: overall cleanup Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 14/79] cyclades: sleep instead busy-wait Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 15/79] cyclades: use dtr_rts helpers Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 16/79] cyclades: merge cy_startup tails Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 17/79] cyclades: ioctls cleanup Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 18/79] cyclades: tiocm cleanup Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 19/79] cyclades: introduce cyy_readb/writeb Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 20/79] cyclades: remove more duplicated code Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 21/79] slip: Clean up create and destroy Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 22/79] kfifo: Use "const" definitions Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 23/79] MOS7720 has no tiocmget method Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 24/79] tty: usb_serial_mos7720: Fix get_lsr_info Greg Kroah-Hartman
2010-01-26 11:08   ` Kees Schoenmakers
2010-01-26 11:09   ` Kees Schoenmakers
2009-09-19 21:36 ` [PATCH 25/79] tty: Fix a typo noted in passing Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 26/79] mos7840: remove old dead modem logic Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 27/79] serial: 8250: add IRQ trigger support Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 28/79] 8250: Now honours baud rate lower bounds Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 29/79] tty: Add a full port_close function Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 30/79] riscom8: split open and close methods up Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 31/79] mxser: Split close ready for a standard tty_port_close method Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 32/79] isicom: Split the close hardware bits out Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 33/79] tty: riscom8 kref and tty_port_close Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 34/79] cyclades: use the full port_close function Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 35/79] tty: make the kref destructor occur asynchronously Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 36/79] cdc_acm: Fix to use modern speed interfaces Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 37/79] tty: USB hangup is racy Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 38/79] tty: remove dtr/rts use from the driver open methods Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 39/79] tty: USB can now use the shutdown method for kref based freeing of ports Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 40/79] vt: add an event interface Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 41/79] vt: remove power stuff from kernel/power Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 42/79] vt: move kernel stuff out of vt.h Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 43/79] vt: add an activate and lock Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 44/79] tty: USB does not need the filp argument in the drivers Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 45/79] isicom: split the open method for the isicom device Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 46/79] serial: kill off uart_info Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 47/79] serial: Fold closing_* fields into the tty_port ones Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 48/79] serial: use tty_port pointers in the core code Greg Kroah-Hartman
2009-09-19 21:36 ` Greg Kroah-Hartman [this message]
2009-09-19 21:36 ` [PATCH 50/79] serial: move the flags into the tty_port field Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 51/79] serial: kill off uif_t Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 52/79] serial: replace the state mutex with the tty port mutex Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 53/79] serial: move delta_msr_wait into the tty_port Greg Kroah-Hartman
2009-09-19 21:36 ` [PATCH 54/79] serial: move port users helper Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 55/79] serial: kill USF_CLOSING_* definitions Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 56/79] serial: introduce tty krefs Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 57/79] Set proper console speed on resume if console suspend is disabled Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 58/79] tty: USB serial termios bits Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 59/79] n_tty: honor opost flag for echoes Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 60/79] n_tty: move echoctl check and clean up logic Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 61/79] tty: handle VT specific compat ioctls in vt driver Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 62/79] tty: vt: use printk_once Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 63/79] tty: Power: fix suspend vt regression Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 64/79] TTY: fix typos Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 65/79] tty: riscom8, fix shutdown declaration Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 66/79] tty: riscom8, fix tty refcnt Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 67/79] tty: USB: serial/mct_u232, " Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 68/79] uartlite: support shared interrupt lines Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 69/79] tty: Char: mxser, add support for CP112UL Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 70/79] tty: Char: mxser, use THRE for ASPP_OQUEUE ioctl Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 71/79] usb-serial: change referencing of port and serial structures Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 72/79] usb-serial: put subroutines in logical order Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 73/79] usb-serial: change logic of serial lookups Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 74/79] usb-serial: acquire references when a new tty is installed Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 75/79] usb-serial: fix termios initialization logic Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 76/79] usb-serial: rename subroutines Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 77/79] usb-serial: add missing tests and debug lines Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 78/79] usb-serial: straighten out serial_open Greg Kroah-Hartman
2009-09-19 21:37 ` [PATCH 79/79] USB serial: update the console driver Greg Kroah-Hartman
2009-09-30 10:09 ` [origin tree boot crash] Re: [GIT PATCH] TTY patches for 2.6.31-git Ingo Molnar
2009-09-30 10:17   ` Alan Cox
2009-10-01  8:21     ` Ingo Molnar
2009-10-01 10:36       ` Alan Cox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1253396244-7885-49-git-send-email-gregkh@suse.de \
    --to=gregkh@suse.de \
    --cc=alan@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.