svn commit: r184208 - head/sys/dev/uart
Ed Schouten
ed at FreeBSD.org
Thu Oct 23 19:11:44 UTC 2008
Author: ed
Date: Thu Oct 23 19:11:44 2008
New Revision: 184208
URL: http://svn.freebsd.org/changeset/base/184208
Log:
Fix detaching of uart(4) devices.
With our new TTY layer we use a two step device destruction procedure.
The TTY first gets abandoned by the device driver. When the TTY layer
notices all threads have left the TTY layer, it deallocates the TTY.
This means that the device unit number should not be reused before a
callback from the TTY layer to the device driver has been made. newbus
doesn't seem to support this concept (yet), so right now just add a
destructor with a big comment in it. It's not ideal, but at least it's
better than panicing.
Reported by: rnoland
Modified:
head/sys/dev/uart/uart_tty.c
Modified: head/sys/dev/uart/uart_tty.c
==============================================================================
--- head/sys/dev/uart/uart_tty.c Thu Oct 23 18:30:06 2008 (r184207)
+++ head/sys/dev/uart/uart_tty.c Thu Oct 23 19:11:44 2008 (r184208)
@@ -327,6 +327,18 @@ uart_tty_intr(void *arg)
tty_unlock(tp);
}
+static void
+uart_tty_free(void *arg)
+{
+
+ /*
+ * XXX: uart(4) could reuse the device unit number before it is
+ * being freed by the TTY layer. We should use this hook to free
+ * the device unit number, but unfortunately newbus does not
+ * seem to support such a construct.
+ */
+}
+
static struct ttydevsw uart_tty_class = {
.tsw_flags = TF_INITLOCK|TF_CALLOUT,
.tsw_open = uart_tty_open,
@@ -335,6 +347,7 @@ static struct ttydevsw uart_tty_class =
.tsw_ioctl = uart_tty_ioctl,
.tsw_param = uart_tty_param,
.tsw_modem = uart_tty_modem,
+ .tsw_free = uart_tty_free,
};
int
More information about the svn-src-all
mailing list