Module Name: src Committed By: skrll Date: Thu Feb 7 13:20:41 UTC 2019
Modified Files: src/sys/dev/usb: ugen.c uhid.c umass.c umass_scsipi.c umidi.c usbdi_util.c usbdi_util.h Log Message: Remove (mostly useless) usb_detach_{broadcast,wait} and replace with cv_{broadcast,timedwait} Really should loop on conditon. To generate a diff of this commit: cvs rdiff -u -r1.143 -r1.144 src/sys/dev/usb/ugen.c cvs rdiff -u -r1.104 -r1.105 src/sys/dev/usb/uhid.c cvs rdiff -u -r1.168 -r1.169 src/sys/dev/usb/umass.c cvs rdiff -u -r1.57 -r1.58 src/sys/dev/usb/umass_scsipi.c cvs rdiff -u -r1.75 -r1.76 src/sys/dev/usb/umidi.c cvs rdiff -u -r1.72 -r1.73 src/sys/dev/usb/usbdi_util.c cvs rdiff -u -r1.48 -r1.49 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/ugen.c diff -u src/sys/dev/usb/ugen.c:1.143 src/sys/dev/usb/ugen.c:1.144 --- src/sys/dev/usb/ugen.c:1.143 Tue Jan 29 09:28:50 2019 +++ src/sys/dev/usb/ugen.c Thu Feb 7 13:20:41 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ugen.c,v 1.143 2019/01/29 09:28:50 pgoyette Exp $ */ +/* $NetBSD: ugen.c,v 1.144 2019/02/07 13:20:41 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.143 2019/01/29 09:28:50 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.144 2019/02/07 13:20:41 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -843,7 +843,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; @@ -1033,7 +1033,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; @@ -1080,7 +1080,8 @@ 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)) + aprint_error_dev(self, ": didn't detach\n"); } mutex_exit(&sc->sc_lock); @@ -1867,7 +1868,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.104 src/sys/dev/usb/uhid.c:1.105 --- src/sys/dev/usb/uhid.c:1.104 Tue Jan 29 09:28:50 2019 +++ src/sys/dev/usb/uhid.c Thu Feb 7 13:20:41 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: uhid.c,v 1.104 2019/01/29 09:28:50 pgoyette Exp $ */ +/* $NetBSD: uhid.c,v 1.105 2019/02/07 13:20:41 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.104 2019/01/29 09:28:50 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uhid.c,v 1.105 2019/02/07 13:20:41 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -230,8 +230,8 @@ 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)) + aprint_error_dev(self, ": didn't detach\n"); } } mutex_exit(&sc->sc_lock); @@ -458,7 +458,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; } @@ -508,7 +508,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; } @@ -702,7 +702,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.168 src/sys/dev/usb/umass.c:1.169 --- src/sys/dev/usb/umass.c:1.168 Sun Feb 3 03:19:28 2019 +++ src/sys/dev/usb/umass.c Thu Feb 7 13:20:41 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: umass.c,v 1.168 2019/02/03 03:19:28 mrg Exp $ */ +/* $NetBSD: umass.c,v 1.169 2019/02/07 13:20:41 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.168 2019/02/03 03:19:28 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: umass.c,v 1.169 2019/02/07 13:20:41 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -820,7 +820,8 @@ 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)) + aprint_error_dev(self, ": didn't detach\n"); } mutex_exit(&sc->sc_lock); Index: src/sys/dev/usb/umass_scsipi.c diff -u src/sys/dev/usb/umass_scsipi.c:1.57 src/sys/dev/usb/umass_scsipi.c:1.58 --- src/sys/dev/usb/umass_scsipi.c:1.57 Tue Jan 22 06:46:21 2019 +++ src/sys/dev/usb/umass_scsipi.c Thu Feb 7 13:20:41 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: umass_scsipi.c,v 1.57 2019/01/22 06:46:21 skrll Exp $ */ +/* $NetBSD: umass_scsipi.c,v 1.58 2019/02/07 13:20:41 skrll Exp $ */ /* * Copyright (c) 2001, 2003, 2012 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: umass_scsipi.c,v 1.57 2019/01/22 06:46:21 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: umass_scsipi.c,v 1.58 2019/02/07 13:20:41 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -144,7 +144,7 @@ umass_scsi_attach(struct umass_softc *sc scsiprint); 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); @@ -177,7 +177,7 @@ umass_atapi_attach(struct umass_softc *s atapiprint); 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 0; Index: src/sys/dev/usb/umidi.c diff -u src/sys/dev/usb/umidi.c:1.75 src/sys/dev/usb/umidi.c:1.76 --- src/sys/dev/usb/umidi.c:1.75 Mon Sep 3 16:29:34 2018 +++ src/sys/dev/usb/umidi.c Thu Feb 7 13:20:41 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: umidi.c,v 1.75 2018/09/03 16:29:34 riastradh Exp $ */ +/* $NetBSD: umidi.c,v 1.76 2019/02/07 13:20:41 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.75 2018/09/03 16:29:34 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: umidi.c,v 1.76 2019/02/07 13:20:41 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -462,7 +462,8 @@ 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)) + aprint_error_dev(self, ": didn't detach\n"); mutex_exit(&sc->sc_lock); detach_all_mididevs(sc, flags); @@ -549,7 +550,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; @@ -1786,7 +1787,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.72 src/sys/dev/usb/usbdi_util.c:1.73 --- src/sys/dev/usb/usbdi_util.c:1.72 Thu Nov 8 02:11:54 2018 +++ src/sys/dev/usb/usbdi_util.c Thu Feb 7 13:20:41 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: usbdi_util.c,v 1.72 2018/11/08 02:11:54 manu Exp $ */ +/* $NetBSD: usbdi_util.c,v 1.73 2019/02/07 13:20:41 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.72 2018/11/08 02:11:54 manu Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usbdi_util.c,v 1.73 2019/02/07 13:20:41 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -569,26 +569,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 %#jx", (uintptr_t)dv, 0, 0, 0); - if (cv_timedwait(cv, lock, hz * 60)) // dv, PZERO, "usbdet", hz * 60 - aprint_error_dev(dv, "usb_detach_wait: didn't detach\n"); - 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 %#jx", (uintptr_t)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.48 src/sys/dev/usb/usbdi_util.h:1.49 --- src/sys/dev/usb/usbdi_util.h:1.48 Thu Nov 8 02:11:54 2018 +++ src/sys/dev/usb/usbdi_util.h Thu Feb 7 13:20:41 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: usbdi_util.h,v 1.48 2018/11/08 02:11:54 manu Exp $ */ +/* $NetBSD: usbdi_util.h,v 1.49 2019/02/07 13:20:41 skrll Exp $ */ /* * Copyright (c) 1998, 2004 The NetBSD Foundation, Inc. @@ -90,13 +90,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;