From 05b727fee550598bfae5754783f9decfdeeb3c3d Mon Sep 17 00:00:00 2001 From: Mitchell Horne Date: Wed, 12 Oct 2022 13:36:08 -0300 Subject: [PATCH] Downgrade tty_intr_event from a global It can be static within uart_tty.c. It is an open question whether there remains any real benefit to having uart instances share a swi thread. Reviewed by: imp, markj, jhb MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D36938 --- share/man/man9/swi.9 | 13 +++---------- sys/dev/uart/uart_tty.c | 3 +++ sys/kern/kern_intr.c | 1 - sys/sys/interrupt.h | 1 - 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/share/man/man9/swi.9 b/share/man/man9/swi.9 index 0dfc924325d6..cba8e7dd6742 100644 --- a/share/man/man9/swi.9 +++ b/share/man/man9/swi.9 @@ -35,7 +35,6 @@ .In sys/param.h .In sys/bus.h .In sys/interrupt.h -.Vt "extern struct intr_event *tty_intr_event" ; .Vt "extern struct intr_event *clk_intr_event" ; .Ft int .Fo swi_add @@ -148,16 +147,10 @@ On platforms allowing IPI sending from NMI context it immediately wakes via the IPI, otherwise it works just like SWI_DELAY. .El .Pp -The -.Va tty_intr_event -and .Va clk_intr_event -variables contain pointers to the software interrupt handlers for the tty and -clock software interrupts, respectively. -.Va tty_intr_event -is used to hang tty software interrupt handlers off of the same thread. -.Va clk_intr_event -is used to hang delayed handlers off of the clock interrupt, and is invoked +is a pointer to the +.Vt struct intr_event +used to hang delayed handlers off of the clock interrupt, and is invoked directly by .Xr hardclock 9 . .Sh RETURN VALUES diff --git a/sys/dev/uart/uart_tty.c b/sys/dev/uart/uart_tty.c index ad7052289f0b..482a392cdb27 100644 --- a/sys/dev/uart/uart_tty.c +++ b/sys/dev/uart/uart_tty.c @@ -77,6 +77,9 @@ CONSOLE_DRIVER( static struct uart_devinfo uart_console; +/* TTY swi(9) event. Allows all uart soft handlers to share one ithread. */ +static struct intr_event *tty_intr_event; + static void uart_cnprobe(struct consdev *cp) { diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c index 07515214c9c5..bcd5dc82864e 100644 --- a/sys/kern/kern_intr.c +++ b/sys/kern/kern_intr.c @@ -89,7 +89,6 @@ struct intr_entropy { }; struct intr_event *clk_intr_event; -struct intr_event *tty_intr_event; struct proc *intrproc; static MALLOC_DEFINE(M_ITHREAD, "ithread", "Interrupt Threads"); diff --git a/sys/sys/interrupt.h b/sys/sys/interrupt.h index edef36e68fc7..ec4f0d214ff9 100644 --- a/sys/sys/interrupt.h +++ b/sys/sys/interrupt.h @@ -153,7 +153,6 @@ struct intr_event { struct proc; extern struct intr_event *clk_intr_event; -extern struct intr_event *tty_intr_event; /* Counts and names for statistics (defined in MD code). */ extern u_long *intrcnt; /* counts for each device and stray */