Module Name:    src
Committed By:   skrll
Date:           Thu Oct 27 07:46:19 UTC 2016

Modified Files:
        src/sys/dev/usb [nick-nhusb]: ucom.c ugen.c uhid.c umass.c umidi.c
            usbdi_util.c usbdi_util.h

Log Message:
Retire usb_detach_{wait,broadcast} and simply use condvar(9) instead


To generate a diff of this commit:
cvs rdiff -u -r1.108.2.23 -r1.108.2.24 src/sys/dev/usb/ucom.c
cvs rdiff -u -r1.126.2.15 -r1.126.2.16 src/sys/dev/usb/ugen.c
cvs rdiff -u -r1.92.4.10 -r1.92.4.11 src/sys/dev/usb/uhid.c
cvs rdiff -u -r1.149.2.14 -r1.149.2.15 src/sys/dev/usb/umass.c
cvs rdiff -u -r1.65.14.12 -r1.65.14.13 src/sys/dev/usb/umidi.c
cvs rdiff -u -r1.63.2.13 -r1.63.2.14 src/sys/dev/usb/usbdi_util.c
cvs rdiff -u -r1.45.6.9 -r1.45.6.10 src/sys/dev/usb/usbdi_util.h

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.108.2.23 src/sys/dev/usb/ucom.c:1.108.2.24
--- src/sys/dev/usb/ucom.c:1.108.2.23	Tue Oct 25 07:32:25 2016
+++ src/sys/dev/usb/ucom.c	Thu Oct 27 07:46:19 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: ucom.c,v 1.108.2.23 2016/10/25 07:32:25 skrll Exp $	*/
+/*	$NetBSD: ucom.c,v 1.108.2.24 2016/10/27 07:46:19 skrll 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.108.2.23 2016/10/25 07:32:25 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ucom.c,v 1.108.2.24 2016/10/27 07:46:19 skrll Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -440,7 +440,10 @@ ucom_detach(device_t self, int flags)
 			mutex_spin_exit(&tty_lock);
 		}
 		/* Wait for processes to go away. */
-		usb_detach_wait(sc->sc_dev, &sc->sc_detachcv, &sc->sc_lock);
+		if (cv_timedwait(&sc->sc_detachcv, &sc->sc_lock, hz * 60)) {
+			printf("%s: %s didn't detach\n", __func__,
+			    device_xname(sc->sc_dev));
+		}
 	}
 
 	softint_disestablish(sc->sc_si);
@@ -736,7 +739,7 @@ ucomclose(dev_t dev, int flag, int mode,
 		sc->sc_methods->ucom_close(sc->sc_parent, sc->sc_portno);
 
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_dev, &sc->sc_detachcv);
+		cv_broadcast(&sc->sc_detachcv);
 
 out:
 	sc->sc_closing = 0;
@@ -773,7 +776,7 @@ ucomread(dev_t dev, struct uio *uio, int
 
 	mutex_enter(&sc->sc_lock);
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_dev, &sc->sc_detachcv);
+		cv_broadcast(&sc->sc_detachcv);
 	mutex_exit(&sc->sc_lock);
 
 	return error;
@@ -803,7 +806,7 @@ ucomwrite(dev_t dev, struct uio *uio, in
 
 	mutex_enter(&sc->sc_lock);
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_dev, &sc->sc_detachcv);
+		cv_broadcast(&sc->sc_detachcv);
 	mutex_exit(&sc->sc_lock);
 
 	return error;
@@ -833,7 +836,7 @@ ucompoll(dev_t dev, int events, struct l
 
 	mutex_enter(&sc->sc_lock);
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_dev, &sc->sc_detachcv);
+		cv_broadcast(&sc->sc_detachcv);
 	mutex_exit(&sc->sc_lock);
 
 	return revents;
@@ -869,7 +872,7 @@ ucomioctl(dev_t dev, u_long cmd, void *d
 
 	mutex_enter(&sc->sc_lock);
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_dev, &sc->sc_detachcv);
+		cv_broadcast(&sc->sc_detachcv);
 	mutex_exit(&sc->sc_lock);
 
 	return error;

Index: src/sys/dev/usb/ugen.c
diff -u src/sys/dev/usb/ugen.c:1.126.2.15 src/sys/dev/usb/ugen.c:1.126.2.16
--- src/sys/dev/usb/ugen.c:1.126.2.15	Sat Jul  9 20:25:16 2016
+++ src/sys/dev/usb/ugen.c	Thu Oct 27 07:46:19 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: ugen.c,v 1.126.2.15 2016/07/09 20:25:16 skrll Exp $	*/
+/*	$NetBSD: ugen.c,v 1.126.2.16 2016/10/27 07:46:19 skrll Exp $	*/
 
 /*
  * Copyright (c) 1998, 2004 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.126.2.15 2016/07/09 20:25:16 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.126.2.16 2016/10/27 07:46:19 skrll Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -812,7 +812,7 @@ ugenread(dev_t dev, struct uio *uio, int
 
 	mutex_enter(&sc->sc_lock);
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_dev, &sc->sc_detach_cv);
+		cv_broadcast(&sc->sc_detach_cv);
 	mutex_exit(&sc->sc_lock);
 
 	return error;
@@ -1006,7 +1006,7 @@ ugenwrite(dev_t dev, struct uio *uio, in
 
 	mutex_enter(&sc->sc_lock);
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_dev, &sc->sc_detach_cv);
+		cv_broadcast(&sc->sc_detach_cv);
 	mutex_exit(&sc->sc_lock);
 
 	return error;
@@ -1053,7 +1053,10 @@ ugen_detach(device_t self, int flags)
 		for (i = 0; i < USB_MAX_ENDPOINTS; i++)
 			cv_signal(&sc->sc_endpoints[i][IN].cv);
 		/* Wait for processes to go away. */
-		usb_detach_wait(sc->sc_dev, &sc->sc_detach_cv, &sc->sc_lock);
+		if (cv_timedwait(&sc->sc_detach_cv, &sc->sc_lock, hz * 60)) {
+			printf("%s: %s didn't detach\n", __func__, 
+			    device_xname(sc->sc_dev));
+		}
 	}
 	mutex_exit(&sc->sc_lock);
 
@@ -1836,7 +1839,7 @@ ugenioctl(dev_t dev, u_long cmd, void *a
 	sc->sc_refcnt++;
 	error = ugen_do_ioctl(sc, endpt, cmd, addr, flag, l);
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_dev, &sc->sc_detach_cv);
+		cv_broadcast(&sc->sc_detach_cv);
 	return error;
 }
 

Index: src/sys/dev/usb/uhid.c
diff -u src/sys/dev/usb/uhid.c:1.92.4.10 src/sys/dev/usb/uhid.c:1.92.4.11
--- src/sys/dev/usb/uhid.c:1.92.4.10	Sat Jul  9 20:25:16 2016
+++ src/sys/dev/usb/uhid.c	Thu Oct 27 07:46:19 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: uhid.c,v 1.92.4.10 2016/07/09 20:25:16 skrll Exp $	*/
+/*	$NetBSD: uhid.c,v 1.92.4.11 2016/10/27 07:46:19 skrll Exp $	*/
 
 /*
  * Copyright (c) 1998, 2004, 2008, 2012 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uhid.c,v 1.92.4.10 2016/07/09 20:25:16 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uhid.c,v 1.92.4.11 2016/10/27 07:46:19 skrll Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -229,8 +229,10 @@ uhid_detach(device_t self, int flags)
 			/* Wake everyone */
 			cv_broadcast(&sc->sc_cv);
 			/* Wait for processes to go away. */
-			usb_detach_wait(sc->sc_hdev.sc_dev,
-			    &sc->sc_detach_cv, &sc->sc_lock);
+			if (cv_timedwait(&sc->sc_detach_cv, &sc->sc_lock, hz * 60)) {
+				printf("%s: %s didn't detach\n", __func__,
+				    device_xname(sc->sc_hdev.sc_dev));
+			}
 		}
 	}
 	mutex_exit(&sc->sc_lock);
@@ -457,7 +459,7 @@ uhidread(dev_t dev, struct uio *uio, int
 
 	mutex_enter(&sc->sc_lock);
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_hdev.sc_dev, &sc->sc_detach_cv);
+		cv_broadcast(&sc->sc_detach_cv);
 	mutex_exit(&sc->sc_lock);
 	return error;
 }
@@ -507,7 +509,7 @@ uhidwrite(dev_t dev, struct uio *uio, in
 
 	mutex_enter(&sc->sc_lock);
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_hdev.sc_dev, &sc->sc_detach_cv);
+		cv_broadcast(&sc->sc_detach_cv);
 	mutex_exit(&sc->sc_lock);
 	return error;
 }
@@ -699,7 +701,7 @@ uhidioctl(dev_t dev, u_long cmd, void *a
 
 	mutex_enter(&sc->sc_lock);
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_hdev.sc_dev, &sc->sc_detach_cv);
+		cv_broadcast(&sc->sc_detach_cv);
 	mutex_exit(&sc->sc_lock);
 	return error;
 }

Index: src/sys/dev/usb/umass.c
diff -u src/sys/dev/usb/umass.c:1.149.2.14 src/sys/dev/usb/umass.c:1.149.2.15
--- src/sys/dev/usb/umass.c:1.149.2.14	Sat Jul  9 20:25:16 2016
+++ src/sys/dev/usb/umass.c	Thu Oct 27 07:46:19 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: umass.c,v 1.149.2.14 2016/07/09 20:25:16 skrll Exp $	*/
+/*	$NetBSD: umass.c,v 1.149.2.15 2016/10/27 07:46:19 skrll Exp $	*/
 
 /*
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -124,7 +124,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: umass.c,v 1.149.2.14 2016/07/09 20:25:16 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: umass.c,v 1.149.2.15 2016/10/27 07:46:19 skrll Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -812,7 +812,10 @@ umass_detach(device_t self, int flags)
 		aprint_normal_dev(self, "waiting for refcnt\n");
 #endif
 		/* Wait for processes to go away. */
-		usb_detach_wait(sc->sc_dev, &sc->sc_detach_cv, &sc->sc_lock);
+		if (cv_timedwait(&sc->sc_detach_cv, &sc->sc_lock, hz * 60)) {
+			printf("%s: %s didn't detach\n", __func__,
+			    device_xname(sc->sc_dev));
+		}
 	}
 	mutex_exit(&sc->sc_lock);
 

Index: src/sys/dev/usb/umidi.c
diff -u src/sys/dev/usb/umidi.c:1.65.14.12 src/sys/dev/usb/umidi.c:1.65.14.13
--- src/sys/dev/usb/umidi.c:1.65.14.12	Sat Jul  9 20:25:16 2016
+++ src/sys/dev/usb/umidi.c	Thu Oct 27 07:46:19 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: umidi.c,v 1.65.14.12 2016/07/09 20:25:16 skrll Exp $	*/
+/*	$NetBSD: umidi.c,v 1.65.14.13 2016/10/27 07:46:19 skrll Exp $	*/
 
 /*
  * Copyright (c) 2001, 2012, 2014 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: umidi.c,v 1.65.14.12 2016/07/09 20:25:16 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: umidi.c,v 1.65.14.13 2016/10/27 07:46:19 skrll Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -458,7 +458,10 @@ umidi_detach(device_t self, int flags)
 	mutex_enter(&sc->sc_lock);
 	sc->sc_dying = 1;
 	if (--sc->sc_refcnt >= 0)
-		usb_detach_wait(sc->sc_dev, &sc->sc_detach_cv, &sc->sc_lock);
+		if (cv_timedwait(&sc->sc_detach_cv, &sc->sc_lock, hz * 60)) {
+			printf("%s: %s didn't detach\n", __func__,
+			    device_xname(sc->sc_dev));
+		}
 	mutex_exit(&sc->sc_lock);
 
 	detach_all_mididevs(sc, flags);
@@ -545,7 +548,7 @@ umidi_close(void *addr)
 		close_in_jack(mididev->in_jack);
 
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_dev, &sc->sc_detach_cv);
+		cv_broadcast(&sc->sc_detach_cv);
 
 	mididev->opened = 0;
 	mididev->closing = 0;
@@ -1793,7 +1796,7 @@ out_jack_output(struct umidi_jack *out_j
 	}
 
 	if (--sc->sc_refcnt < 0)
-		usb_detach_broadcast(sc->sc_dev, &sc->sc_detach_cv);
+		cv_broadcast(&sc->sc_detach_cv);
 
 	return 0;
 }

Index: src/sys/dev/usb/usbdi_util.c
diff -u src/sys/dev/usb/usbdi_util.c:1.63.2.13 src/sys/dev/usb/usbdi_util.c:1.63.2.14
--- src/sys/dev/usb/usbdi_util.c:1.63.2.13	Sat Feb  6 08:01:57 2016
+++ src/sys/dev/usb/usbdi_util.c	Thu Oct 27 07:46:19 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: usbdi_util.c,v 1.63.2.13 2016/02/06 08:01:57 skrll Exp $	*/
+/*	$NetBSD: usbdi_util.c,v 1.63.2.14 2016/10/27 07:46:19 skrll Exp $	*/
 
 /*
  * Copyright (c) 1998, 2012 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: usbdi_util.c,v 1.63.2.13 2016/02/06 08:01:57 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: usbdi_util.c,v 1.63.2.14 2016/10/27 07:46:19 skrll Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -547,27 +547,6 @@ usbd_intr_transfer(struct usbd_xfer *xfe
 }
 
 void
-usb_detach_wait(device_t dv, kcondvar_t *cv, kmutex_t *lock)
-{
-	USBHIST_FUNC(); USBHIST_CALLED(usbdebug);
-
-	DPRINTFN(1, "waiting for dv %p", dv, 0, 0, 0);
-	if (cv_timedwait(cv, lock, hz * 60))	// dv, PZERO, "usbdet", hz * 60
-		printf("usb_detach_wait: %s didn't detach\n",
-			device_xname(dv));
-	DPRINTFN(1, "done", 0, 0, 0, 0);
-}
-
-void
-usb_detach_broadcast(device_t dv, kcondvar_t *cv)
-{
-	USBHIST_FUNC(); USBHIST_CALLED(usbdebug);
-
-	DPRINTFN(1, "for dv %p", dv, 0, 0, 0);
-	cv_broadcast(cv);
-}
-
-void
 usb_detach_waitold(device_t dv)
 {
 	USBHIST_FUNC(); USBHIST_CALLED(usbdebug);

Index: src/sys/dev/usb/usbdi_util.h
diff -u src/sys/dev/usb/usbdi_util.h:1.45.6.9 src/sys/dev/usb/usbdi_util.h:1.45.6.10
--- src/sys/dev/usb/usbdi_util.h:1.45.6.9	Sat Jun 27 07:27:29 2015
+++ src/sys/dev/usb/usbdi_util.h	Thu Oct 27 07:46:19 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: usbdi_util.h,v 1.45.6.9 2015/06/27 07:27:29 skrll Exp $	*/
+/*	$NetBSD: usbdi_util.h,v 1.45.6.10 2016/10/27 07:46:19 skrll Exp $	*/
 
 /*
  * Copyright (c) 1998, 2004 The NetBSD Foundation, Inc.
@@ -88,13 +88,6 @@ usbd_status	usbd_intr_transfer(struct us
 void usb_detach_waitold(device_t);
 void usb_detach_wakeupold(device_t);
 
-/*
- * MPSAFE versions - mutex must be at IPL_USB.
- */
-void usb_detach_wait(device_t dv, kcondvar_t *, kmutex_t *);
-void usb_detach_broadcast(device_t, kcondvar_t *);
-
-
 typedef struct {
 	uByte		bLength;
 	uByte		bDescriptorType;

Reply via email to