Module Name: src
Committed By: riastradh
Date: Wed Oct 26 23:48:43 UTC 2022
Modified Files:
src/sys/dev/usb: ucom.c
Log Message:
ucom(4): Convert to ttylock/ttyunlock.
To generate a diff of this commit:
cvs rdiff -u -r1.133 -r1.134 src/sys/dev/usb/ucom.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/usb/ucom.c
diff -u src/sys/dev/usb/ucom.c:1.133 src/sys/dev/usb/ucom.c:1.134
--- src/sys/dev/usb/ucom.c:1.133 Sun Apr 17 09:25:24 2022
+++ src/sys/dev/usb/ucom.c Wed Oct 26 23:48:43 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: ucom.c,v 1.133 2022/04/17 09:25:24 riastradh Exp $ */
+/* $NetBSD: ucom.c,v 1.134 2022/10/26 23:48:43 riastradh Exp $ */
/*
* Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ucom.c,v 1.133 2022/04/17 09:25:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ucom.c,v 1.134 2022/10/26 23:48:43 riastradh Exp $");
#ifdef _KERNEL_OPT
#include "opt_usb.h"
@@ -415,10 +415,10 @@ ucom_detach(device_t self, int flags)
/* tty is now off. */
if (tp != NULL) {
- mutex_spin_enter(&tty_lock);
+ ttylock(tp);
CLR(tp->t_state, TS_CARR_ON);
CLR(tp->t_cflag, CLOCAL | MDMBUF);
- mutex_spin_exit(&tty_lock);
+ ttyunlock(tp);
}
/* locate the major number */
@@ -783,10 +783,10 @@ ucomclose(dev_t dev, int flag, int mode,
* ttyclose should have cleared TS_ISOPEN and interrupted all
* pending opens, which should have completed by now.
*/
- mutex_spin_enter(&tty_lock);
+ ttylock(tp);
KASSERT(!ISSET(tp->t_state, TS_ISOPEN));
KASSERT(tp->t_wopen == 0);
- mutex_spin_exit(&tty_lock);
+ ttyunlock(tp);
/*
* Close any device-specific state.
@@ -1180,7 +1180,7 @@ ucomhwiflow(struct tty *tp, int block)
UCOMHIST_FUNC(); UCOMHIST_CALLED();
KASSERT(&sc->sc_lock);
- KASSERT(mutex_owned(&tty_lock));
+ KASSERT(ttylocked(tp));
old = sc->sc_rx_stopped;
sc->sc_rx_stopped = (u_char)block;
@@ -1263,14 +1263,14 @@ ucomstop(struct tty *tp, int flag)
struct ucom_softc * const sc = device_lookup_private(&ucom_cd, unit);
mutex_enter(&sc->sc_lock);
- mutex_spin_enter(&tty_lock);
+ ttylock(tp);
if (ISSET(tp->t_state, TS_BUSY)) {
/* obuff_full -> obuff_free? */
/* sc->sc_tx_stopped = 1; */
if (!ISSET(tp->t_state, TS_TTSTOP))
SET(tp->t_state, TS_FLUSH);
}
- mutex_spin_exit(&tty_lock);
+ ttyunlock(tp);
mutex_exit(&sc->sc_lock);
#endif
}
@@ -1303,22 +1303,22 @@ ucom_write_status(struct ucom_softc *sc,
SIMPLEQ_INSERT_TAIL(&sc->sc_obuff_free, ub, ub_link);
cc -= sc->sc_opkthdrlen;
- mutex_spin_enter(&tty_lock);
+ ttylock(tp);
CLR(tp->t_state, TS_BUSY);
if (ISSET(tp->t_state, TS_FLUSH))
CLR(tp->t_state, TS_FLUSH);
else
ndflush(&tp->t_outq, cc);
- mutex_spin_exit(&tty_lock);
+ ttyunlock(tp);
if (err != USBD_CANCELLED && err != USBD_IOERROR &&
!sc->sc_closing) {
if ((ub = SIMPLEQ_FIRST(&sc->sc_obuff_full)) != NULL)
ucom_submit_write(sc, ub);
- mutex_spin_enter(&tty_lock);
+ ttylock(tp);
(*tp->t_linesw->l_start)(tp);
- mutex_spin_exit(&tty_lock);
+ ttyunlock(tp);
}
break;
}
@@ -1356,13 +1356,13 @@ ucom_softintr(void *arg)
struct tty *tp = sc->sc_tty;
mutex_enter(&sc->sc_lock);
- mutex_enter(&tty_lock);
+ ttylock(tp);
if (!ISSET(tp->t_state, TS_ISOPEN)) {
- mutex_exit(&tty_lock);
+ ttyunlock(tp);
mutex_exit(&sc->sc_lock);
return;
}
- mutex_exit(&tty_lock);
+ ttyunlock(tp);
struct ucom_buffer *ub = SIMPLEQ_FIRST(&sc->sc_obuff_full);
@@ -1390,7 +1390,7 @@ ucom_read_complete(struct ucom_softc *sc
while (ub != NULL && !sc->sc_rx_stopped) {
- /* XXX ttyinput takes tty_lock */
+ /* XXX ttyinput takes ttylock */
while (ub->ub_index < ub->ub_len && !sc->sc_rx_stopped) {
/* Give characters to tty layer. */
if ((*rint)(ub->ub_data[ub->ub_index], tp) == -1) {
@@ -1453,9 +1453,9 @@ ucomreadcb(struct usbd_xfer *xfer, void
if (status == USBD_IOERROR || sc->sc_closing) {
/* Send something to wake upper layer */
(tp->t_linesw->l_rint)('\n', tp);
- mutex_spin_enter(&tty_lock); /* XXX */
+ ttylock(tp); /* XXX */
ttwakeup(tp);
- mutex_spin_exit(&tty_lock); /* XXX */
+ ttyunlock(tp); /* XXX */
}
mutex_exit(&sc->sc_lock);