PERFORCE change 107420 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Sat Oct 7 08:29:38 PDT 2006
http://perforce.freebsd.org/chv.cgi?CH=107420
Change 107420 by hselasky at hselasky_mini_itx on 2006/10/07 15:29:13
USB API change: Move "usbd_transfer_drain" into
"usbd_transfer_unsetup". This saves some code, and
makes the USB API simpler. Remove usbd_transfer_drain
and all associated structures. Add some WITNESS_WARN()
statements.
Affected files ...
.. //depot/projects/usb/src/sys/dev/ata/ata-usb.c#10 edit
.. //depot/projects/usb/src/sys/dev/sound/usb/uaudio.c#6 edit
.. //depot/projects/usb/src/sys/dev/usb/README#8 edit
.. //depot/projects/usb/src/sys/dev/usb/if_aue.c#13 edit
.. //depot/projects/usb/src/sys/dev/usb/if_auereg.h#9 edit
.. //depot/projects/usb/src/sys/dev/usb/if_axe.c#12 edit
.. //depot/projects/usb/src/sys/dev/usb/if_axereg.h#9 edit
.. //depot/projects/usb/src/sys/dev/usb/if_cdce.c#8 edit
.. //depot/projects/usb/src/sys/dev/usb/if_cdcereg.h#8 edit
.. //depot/projects/usb/src/sys/dev/usb/if_cue.c#10 edit
.. //depot/projects/usb/src/sys/dev/usb/if_cuereg.h#6 edit
.. //depot/projects/usb/src/sys/dev/usb/if_kue.c#12 edit
.. //depot/projects/usb/src/sys/dev/usb/if_kuereg.h#6 edit
.. //depot/projects/usb/src/sys/dev/usb/if_rue.c#11 edit
.. //depot/projects/usb/src/sys/dev/usb/if_ruereg.h#7 edit
.. //depot/projects/usb/src/sys/dev/usb/if_udav.c#11 edit
.. //depot/projects/usb/src/sys/dev/usb/if_udavreg.h#7 edit
.. //depot/projects/usb/src/sys/dev/usb/if_ural.c#14 edit
.. //depot/projects/usb/src/sys/dev/usb/if_uralvar.h#10 edit
.. //depot/projects/usb/src/sys/dev/usb/ubsa.c#11 edit
.. //depot/projects/usb/src/sys/dev/usb/ucycom.c#7 edit
.. //depot/projects/usb/src/sys/dev/usb/udbp.c#7 edit
.. //depot/projects/usb/src/sys/dev/usb/ufm.c#9 edit
.. //depot/projects/usb/src/sys/dev/usb/ufoma.c#9 edit
.. //depot/projects/usb/src/sys/dev/usb/uftdi.c#10 edit
.. //depot/projects/usb/src/sys/dev/usb/ugen.c#9 edit
.. //depot/projects/usb/src/sys/dev/usb/uhid.c#12 edit
.. //depot/projects/usb/src/sys/dev/usb/uhub.c#7 edit
.. //depot/projects/usb/src/sys/dev/usb/ukbd.c#13 edit
.. //depot/projects/usb/src/sys/dev/usb/ulpt.c#16 edit
.. //depot/projects/usb/src/sys/dev/usb/umass.c#6 edit
.. //depot/projects/usb/src/sys/dev/usb/umct.c#7 edit
.. //depot/projects/usb/src/sys/dev/usb/umodem.c#11 edit
.. //depot/projects/usb/src/sys/dev/usb/ums.c#15 edit
.. //depot/projects/usb/src/sys/dev/usb/uplcom.c#10 edit
.. //depot/projects/usb/src/sys/dev/usb/urio.c#6 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#23 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#16 edit
.. //depot/projects/usb/src/sys/dev/usb/uscanner.c#6 edit
.. //depot/projects/usb/src/sys/dev/usb/uvisor.c#9 edit
.. //depot/projects/usb/src/sys/dev/usb/uvscom.c#12 edit
.. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#7 edit
.. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt_var.h#7 edit
.. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#3 edit
Differences ...
==== //depot/projects/usb/src/sys/dev/ata/ata-usb.c#10 (text) ====
@@ -86,7 +86,6 @@
struct bbb_cbw cbw;
struct bbb_csw csw;
struct mtx locked_mtx;
- struct usbd_memory_wait mem_wait;
struct __callout watchdog;
struct ata_channel *locked_ch;
@@ -413,7 +412,7 @@
err = usbd_transfer_setup(uaa->device, uaa->iface_index, sc->xfer,
atausb_config,
ATAUSB_T_BBB_MAX, sc,
- &(sc->locked_mtx), &(sc->mem_wait));
+ &(sc->locked_mtx));
/* skip reset first time */
sc->last_xfer_no = ATAUSB_T_BBB_COMMAND;
@@ -501,8 +500,6 @@
usbd_transfer_unsetup(sc->xfer, ATAUSB_T_MAX);
- usbd_transfer_drain(&(sc->mem_wait), &(sc->locked_mtx));
-
__callout_drain(&(sc->watchdog));
mtx_destroy(&sc->locked_mtx);
==== //depot/projects/usb/src/sys/dev/sound/usb/uaudio.c#6 (text+ko) ====
@@ -132,7 +132,6 @@
struct uaudio_chan {
struct pcmchan_caps pcm_cap; /* capabilities */
- struct usbd_memory_wait mem_wait;
struct snd_dbuf *pcm_buf;
const struct usbd_config *usb_cfg;
@@ -190,7 +189,6 @@
struct umidi_chan {
struct umidi_sub_chan sub[UMIDI_CABLES_MAX];
- struct usbd_memory_wait mem_wait;
struct mtx mtx;
struct usbd_xfer *xfer[UMIDI_N_TRANSFER];
@@ -216,7 +214,6 @@
struct uaudio_chan sc_rec_chan;
struct uaudio_chan sc_play_chan;
struct umidi_chan sc_midi_chan;
- struct usbd_memory_wait sc_mixer_mem;
struct usbd_device * sc_udev;
struct usbd_xfer * sc_mixer_xfer[1];
@@ -1434,7 +1431,7 @@
if (usbd_transfer_setup(sc->sc_udev, iface_index, ch->xfer,
ch->usb_cfg, UAUDIO_NCHANBUFS, ch,
- ch->pcm_mtx, &(ch->mem_wait))) {
+ ch->pcm_mtx)) {
DPRINTF(0, "could not allocate USB transfers!\n");
goto error;
}
@@ -1456,10 +1453,6 @@
usbd_transfer_unsetup(ch->xfer, UAUDIO_NCHANBUFS);
- if (ch->pcm_mtx) {
- usbd_transfer_drain(&(ch->mem_wait), ch->pcm_mtx);
- }
-
ch->valid = 0;
return 0;
@@ -3192,7 +3185,7 @@
if (usbd_transfer_setup(sc->sc_udev, sc->sc_mixer_iface_index,
sc->sc_mixer_xfer, uaudio_mixer_config, 1, sc,
- sc->sc_mixer_lock, &(sc->sc_mixer_mem))) {
+ sc->sc_mixer_lock)) {
DPRINTF(0, "could not allocate USB transfer for audio mixer!\n");
return ENOMEM;
}
@@ -3209,9 +3202,6 @@
usbd_transfer_unsetup(sc->sc_mixer_xfer, 1);
- if (sc->sc_mixer_lock) {
- usbd_transfer_drain(&(sc->sc_mixer_mem), sc->sc_mixer_lock);
- }
return 0;
}
@@ -3764,7 +3754,7 @@
error = usbd_transfer_setup(uaa->device, chan->iface_index,
chan->xfer, umidi_config, UMIDI_N_TRANSFER,
- chan, &(chan->mtx), &(chan->mem_wait));
+ chan, &(chan->mtx));
if (error) {
DPRINTF(0, "error=%s\n", usbd_errstr(error)) ;
goto detach;
@@ -3846,8 +3836,6 @@
usbd_transfer_unsetup(chan->xfer, UMIDI_N_TRANSFER);
- usbd_transfer_drain(&(chan->mem_wait), &(chan->mtx));
-
mtx_destroy(&(chan->mtx));
return 0;
==== //depot/projects/usb/src/sys/dev/usb/README#8 (text+ko) ====
@@ -117,7 +117,7 @@
/*------------------------------------------------------------------------*
* usbd_status
* usbd_transfer_setup(udev, iface_index, pxfer, setup_start,
- * n_setup, priv_sc, priv_mtx, priv_wait)
+ * n_setup, priv_sc, priv_mtx)
*------------------------------------------------------------------------*/
- "udev" is a pointer to "struct usbd_device"
@@ -139,10 +139,6 @@
- "priv_mtx" is the private mutex protecting the transfer structure and
the softc. This pointer is used to initialize "xfer->priv_mtx".
-- "priv_wait" is a pointer to a structure of type "struct usbd_memory_wait",
- that is passed to "usbd_transfer_drain()" after "usbd_transfer_unsetup()"
- to wait for the USB system to finish using the "priv_mtx" mutex.
-
/*------------------------------------------------------------------------*
* void
* usbd_transfer_unsetup(pxfer, n_setup)
==== //depot/projects/usb/src/sys/dev/usb/if_aue.c#13 (text+ko) ====
@@ -840,7 +840,7 @@
error = usbd_transfer_setup(uaa->device, AUE_IFACE_IDX,
sc->sc_xfer, aue_config, AUE_ENDPT_MAX,
- sc, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sc, &(sc->sc_mtx));
if (error) {
device_printf(dev, "allocating USB "
"transfers failed!\n");
@@ -994,8 +994,6 @@
usbd_transfer_unsetup(sc->sc_xfer, AUE_ENDPT_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
usbd_config_td_unsetup(&(sc->sc_config_td));
__callout_drain(&(sc->sc_watchdog));
==== //depot/projects/usb/src/sys/dev/usb/if_auereg.h#9 (text+ko) ====
@@ -199,7 +199,6 @@
struct aue_softc {
struct usbd_config_td sc_config_td;
- struct usbd_memory_wait sc_mem_wait;
struct __callout sc_watchdog;
struct mtx sc_mtx;
struct aue_rxpkt sc_rxpkt;
==== //depot/projects/usb/src/sys/dev/usb/if_axe.c#12 (text+ko) ====
@@ -643,7 +643,7 @@
error = usbd_transfer_setup(uaa->device, AXE_IFACE_IDX,
sc->sc_xfer, axe_config, AXE_ENDPT_MAX,
- sc, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sc, &(sc->sc_mtx));
if (error) {
device_printf(dev, "allocating USB "
"transfers failed!\n");
@@ -795,8 +795,6 @@
usbd_transfer_unsetup(sc->sc_xfer, AXE_ENDPT_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
usbd_config_td_unsetup(&(sc->sc_config_td));
__callout_drain(&(sc->sc_watchdog));
==== //depot/projects/usb/src/sys/dev/usb/if_axereg.h#9 (text+ko) ====
@@ -114,7 +114,6 @@
struct axe_softc {
struct usbd_config_td sc_config_td;
- struct usbd_memory_wait sc_mem_wait;
struct __callout sc_watchdog;
struct mtx sc_mtx;
==== //depot/projects/usb/src/sys/dev/usb/if_cdce.c#8 (text+ko) ====
@@ -323,7 +323,7 @@
error = usbd_transfer_setup
(uaa->device, sc->sc_data_iface_index,
sc->sc_xfer, cdce_config, CDCE_ENDPT_MAX,
- sc, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sc, &(sc->sc_mtx));
if (error == 0) {
break;
@@ -430,8 +430,6 @@
usbd_transfer_unsetup(sc->sc_xfer, CDCE_ENDPT_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
mtx_destroy(&(sc->sc_mtx));
return (0);
==== //depot/projects/usb/src/sys/dev/usb/if_cdcereg.h#8 (text+ko) ====
@@ -43,7 +43,6 @@
};
struct cdce_softc {
- struct usbd_memory_wait sc_mem_wait;
struct ifmedia sc_ifmedia;
struct mtx sc_mtx;
==== //depot/projects/usb/src/sys/dev/usb/if_cue.c#10 (text+ko) ====
@@ -517,7 +517,7 @@
error = usbd_transfer_setup(uaa->device, CUE_IFACE_IDX,
sc->sc_xfer, cue_config, CUE_ENDPT_MAX,
- sc, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sc, &(sc->sc_mtx));
if (error) {
device_printf(dev, "allocating USB "
"transfers failed!\n");
@@ -628,8 +628,6 @@
usbd_transfer_unsetup(sc->sc_xfer, CUE_ENDPT_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
usbd_config_td_unsetup(&(sc->sc_config_td));
__callout_drain(&(sc->sc_watchdog));
==== //depot/projects/usb/src/sys/dev/usb/if_cuereg.h#6 (text+ko) ====
@@ -122,7 +122,6 @@
struct cue_softc {
struct usbd_config_td sc_config_td;
- struct usbd_memory_wait sc_mem_wait;
struct __callout sc_watchdog;
struct mtx sc_mtx;
==== //depot/projects/usb/src/sys/dev/usb/if_kue.c#12 (text+ko) ====
@@ -544,7 +544,7 @@
error = usbd_transfer_setup(uaa->device, KUE_IFACE_IDX,
sc->sc_xfer, kue_config, KUE_ENDPT_MAX,
- sc, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sc, &(sc->sc_mtx));
if (error) {
device_printf(dev, "allocating USB "
"transfers failed!\n");
@@ -663,8 +663,6 @@
usbd_transfer_unsetup(sc->sc_xfer, KUE_ENDPT_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
usbd_config_td_unsetup(&(sc->sc_config_td));
__callout_drain(&(sc->sc_watchdog));
==== //depot/projects/usb/src/sys/dev/usb/if_kuereg.h#6 (text+ko) ====
@@ -128,7 +128,6 @@
struct kue_softc {
struct usbd_config_td sc_config_td;
- struct usbd_memory_wait sc_mem_wait;
struct __callout sc_watchdog;
struct mtx sc_mtx;
struct kue_ether_desc sc_desc;
==== //depot/projects/usb/src/sys/dev/usb/if_rue.c#11 (text+ko) ====
@@ -755,7 +755,7 @@
error = usbd_transfer_setup(uaa->device, RUE_IFACE_IDX,
sc->sc_xfer, rue_config, RUE_ENDPT_MAX,
- sc, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sc, &(sc->sc_mtx));
if (error) {
device_printf(dev, "allocating USB "
"transfers failed!\n");
@@ -895,8 +895,6 @@
usbd_transfer_unsetup(sc->sc_xfer, RUE_ENDPT_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
usbd_config_td_unsetup(&(sc->sc_config_td));
__callout_drain(&(sc->sc_watchdog));
==== //depot/projects/usb/src/sys/dev/usb/if_ruereg.h#7 (text+ko) ====
@@ -168,7 +168,6 @@
struct rue_softc {
struct usbd_config_td sc_config_td;
- struct usbd_memory_wait sc_mem_wait;
struct __callout sc_watchdog;
struct mtx sc_mtx;
==== //depot/projects/usb/src/sys/dev/usb/if_udav.c#11 (text+ko) ====
@@ -362,7 +362,7 @@
error = usbd_transfer_setup(uaa->device, UDAV_IFACE_INDEX,
sc->sc_xfer, udav_config, UDAV_ENDPT_MAX,
- sc, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sc, &(sc->sc_mtx));
if (error) {
device_printf(dev, "allocating USB "
"transfers failed!\n");
@@ -502,8 +502,6 @@
usbd_transfer_unsetup(sc->sc_xfer, UDAV_ENDPT_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
usbd_config_td_unsetup(&(sc->sc_config_td));
__callout_drain(&(sc->sc_watchdog));
==== //depot/projects/usb/src/sys/dev/usb/if_udavreg.h#7 (text+ko) ====
@@ -138,7 +138,6 @@
struct udav_softc {
struct usbd_config_td sc_config_td;
- struct usbd_memory_wait sc_mem_wait;
struct __callout sc_watchdog;
struct mtx sc_mtx;
==== //depot/projects/usb/src/sys/dev/usb/if_ural.c#14 (text+ko) ====
@@ -554,7 +554,7 @@
error = usbd_transfer_setup(uaa->device, RAL_IFACE_INDEX,
sc->sc_xfer, ural_config, URAL_N_TRANSFER,
- sc, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sc, &(sc->sc_mtx));
if (error) {
device_printf(dev, "could not allocate USB transfers, "
"err=%s\n", usbd_errstr(error)) ;
@@ -616,8 +616,6 @@
usbd_transfer_unsetup(sc->sc_xfer, URAL_N_TRANSFER);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
usbd_config_td_unsetup(&(sc->sc_config_td));
__callout_drain(&(sc->sc_watchdog));
==== //depot/projects/usb/src/sys/dev/usb/if_uralvar.h#10 (text+ko) ====
@@ -116,7 +116,6 @@
struct ural_amrr sc_amrr;
struct ieee80211_beacon_offsets sc_bo;
struct mtx sc_mtx;
- struct usbd_memory_wait sc_mem_wait;
struct __callout sc_watchdog;
struct ural_bbp_prom sc_bbp_prom[16];
struct usbd_xfer *sc_xfer[URAL_N_TRANSFER];
==== //depot/projects/usb/src/sys/dev/usb/ubsa.c#11 (text+ko) ====
@@ -152,7 +152,6 @@
struct ubsa_softc {
struct ucom_softc sc_ucom;
- struct usbd_memory_wait sc_mem_wait;
struct usbd_xfer * sc_xfer[UBSA_N_TRANSFER];
@@ -518,7 +517,7 @@
error = usbd_transfer_setup(uaa->device, sc->sc_iface_index,
sc->sc_xfer, ubsa_config, UBSA_N_TRANSFER,
- sc, &Giant, &(sc->sc_mem_wait));
+ sc, &Giant);
if (error) {
DPRINTF(0, "could not allocate all pipes\n");
goto detach;
@@ -556,8 +555,6 @@
usbd_transfer_unsetup(sc->sc_xfer, UBSA_N_TRANSFER);
- usbd_transfer_drain(&(sc->sc_mem_wait), &Giant);
-
return 0;
}
==== //depot/projects/usb/src/sys/dev/usb/ucycom.c#7 (text+ko) ====
@@ -62,7 +62,6 @@
struct ucycom_softc {
struct ucom_softc sc_ucom;
- struct usbd_memory_wait sc_mem_wait;
struct usbd_device * sc_udev;
struct usbd_xfer * sc_xfer[UCYCOM_ENDPT_MAX];
@@ -333,7 +332,7 @@
error = usbd_transfer_setup(uaa->device, UCYCOM_IFACE_INDEX,
sc->sc_xfer, ucycom_config, UCYCOM_ENDPT_MAX,
- sc, &Giant, &(sc->sc_mem_wait));
+ sc, &Giant);
if (error) {
device_printf(dev, "allocating USB "
"transfers failed!\n");
@@ -373,8 +372,6 @@
usbd_transfer_unsetup(sc->sc_xfer, UCYCOM_ENDPT_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &Giant);
-
return 0;
}
==== //depot/projects/usb/src/sys/dev/usb/udbp.c#7 (text+ko) ====
@@ -101,7 +101,6 @@
struct udbp_softc {
struct mtx sc_mtx;
- struct usbd_memory_wait sc_mem_wait;
struct ng_bt_mbufq sc_xmitq_hipri; /* hi-priority transmit queue */
struct ng_bt_mbufq sc_xmitq; /* low-priority transmit queue */
@@ -336,7 +335,7 @@
error = usbd_transfer_setup(uaa->device, uaa->iface_index,
sc->sc_xfer, udbp_config, UDBP_T_MAX,
- sc, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sc, &(sc->sc_mtx));
if (error) {
DPRINTF(sc, 0, "error=%s\n", usbd_errstr(error)) ;
goto detach;
@@ -393,8 +392,6 @@
usbd_transfer_unsetup(sc->sc_xfer, UDBP_T_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
mtx_destroy(&(sc->sc_mtx));
/* destroy queues */
==== //depot/projects/usb/src/sys/dev/usb/ufm.c#9 (text+ko) ====
@@ -72,7 +72,6 @@
struct ufm_softc {
struct usb_cdev sc_cdev;
struct mtx sc_mtx;
- struct usbd_memory_wait sc_mem_wait;
struct usbd_device *sc_udev;
struct usbd_xfer *sc_xfer[UFM_N_TRANSFER];
@@ -193,7 +192,7 @@
error = usbd_transfer_setup(uaa->device, uaa->iface_index,
sc->sc_xfer, ufm_config, UFM_N_TRANSFER,
- sc, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sc, &(sc->sc_mtx));
if (error) {
DPRINTF(sc, 0, "error=%s\n", usbd_errstr(error)) ;
goto detach;
@@ -228,8 +227,6 @@
usbd_transfer_unsetup(sc->sc_xfer, UFM_N_TRANSFER);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
mtx_destroy(&(sc->sc_mtx));
return 0;
==== //depot/projects/usb/src/sys/dev/usb/ufoma.c#9 (text+ko) ====
@@ -152,7 +152,6 @@
struct ucom_softc sc_ucom;
struct usbd_config_td sc_config_td;
- struct usbd_memory_wait sc_mem_wait;
usb_cdc_line_state_t sc_line_state; /* current line state */
struct usbd_xfer * sc_ctrl_xfer[UFOMA_CTRL_ENDPT_MAX];
@@ -478,7 +477,7 @@
error = usbd_transfer_setup
(uaa->device, sc->sc_ctrl_iface_index,
sc->sc_ctrl_xfer, ufoma_ctrl_config, UFOMA_CTRL_ENDPT_MAX,
- sc, &Giant, &(sc->sc_mem_wait));
+ sc, &Giant);
if (error) {
device_printf(dev, "allocating control USB "
@@ -569,8 +568,6 @@
usbd_transfer_unsetup(sc->sc_bulk_xfer, UFOMA_BULK_ENDPT_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &Giant);
-
usbd_config_td_unsetup(&(sc->sc_config_td));
if (sc->sc_modetable) {
@@ -1322,7 +1319,7 @@
error = usbd_transfer_setup
(uaa->device, sc->sc_data_iface_index,
sc->sc_bulk_xfer, ufoma_bulk_config, UFOMA_BULK_ENDPT_MAX,
- sc, &Giant, &(sc->sc_mem_wait));
+ sc, &Giant);
if (error) {
device_printf(dev, "allocating BULK USB "
==== //depot/projects/usb/src/sys/dev/usb/uftdi.c#10 (text+ko) ====
@@ -97,7 +97,6 @@
struct uftdi_softc {
struct ucom_softc sc_ucom;
struct usbd_config_td sc_config_td;
- struct usbd_memory_wait sc_mem_wait;
struct usbd_device * sc_udev;
struct usbd_xfer * sc_xfer[UFTDI_ENDPT_MAX];
@@ -447,7 +446,7 @@
error = usbd_transfer_setup(uaa->device, sc->sc_iface_index,
sc->sc_xfer, uftdi_config, UFTDI_ENDPT_MAX,
- sc, &Giant, &(sc->sc_mem_wait));
+ sc, &Giant);
if (error) {
device_printf(dev, "allocating USB "
"transfers failed!\n");
@@ -505,8 +504,6 @@
usbd_transfer_unsetup(sc->sc_xfer, UFTDI_ENDPT_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &Giant);
-
usbd_config_td_unsetup(&(sc->sc_config_td));
return 0;
==== //depot/projects/usb/src/sys/dev/usb/ugen.c#9 (text+ko) ====
@@ -126,7 +126,6 @@
struct ugen_endpoint sc_endpoints[USB_MAX_ENDPOINTS];
struct ugen_endpoint sc_endpoints_end[0];
struct mtx sc_mtx;
- struct usbd_memory_wait sc_mem_wait;
};
extern cdevsw_t ugen_cdevsw;
@@ -239,9 +238,6 @@
/* destroy all devices */
ugen_destroy_devnodes(sc, 0);
- /* wait for memory to get freed */
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
mtx_destroy(&sc->sc_mtx);
return 0;
@@ -413,21 +409,25 @@
*/
error = usbd_transfer_setup(udev, iface_index, &temp[0],
setup, n_setup,
- sce, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sce, &(sc->sc_mtx));
mtx_lock(&sc->sc_mtx);
- sce->state &= ~context_bit;
-
if(sce->state & UGEN_CLOSING)
{
- wakeup(sce);
- error = USBD_CANCELLED;
+ mtx_unlock(&(sc->sc_mtx));
/* "usbd_transfer_unsetup()" will clear "temp[]" */
usbd_transfer_unsetup(&temp[0], n_setup);
+
+ mtx_lock(&(sc->sc_mtx));
+
+ wakeup(sce);
+ error = USBD_CANCELLED;
}
+ sce->state &= ~context_bit;
+
while(n_setup--)
{
pxfer[n_setup] = temp[n_setup];
@@ -512,6 +512,7 @@
{
struct ugen_softc *sc = DEV2SC(dev);
struct ugen_endpoint *sce = DEV2SCE(dev);
+ struct usbd_xfer *temp_xfer[4];
PRINTFN(5, ("flag=%d, mode=%d\n", flag, mode));
@@ -571,10 +572,22 @@
sce->state &= ~(UGEN_OPEN_DEV|UGEN_OPEN_IN|UGEN_OPEN_OUT|UGEN_CLOSING);
- usbd_transfer_unsetup(&sce->xfer_in[0], 2);
- usbd_transfer_unsetup(&sce->xfer_out[0], 2);
+ temp_xfer[0] = sce->xfer_in[0];
+ temp_xfer[1] = sce->xfer_in[1];
+ temp_xfer[2] = sce->xfer_out[0];
+ temp_xfer[3] = sce->xfer_out[1];
+
+ sce->xfer_in[0] = NULL;
+ sce->xfer_in[1] = NULL;
+ sce->xfer_out[0] = NULL;
+ sce->xfer_out[1] = NULL;
+
+ mtx_unlock(&sc->sc_mtx);
+
+ usbd_transfer_unsetup(temp_xfer, 4);
+ } else {
+ mtx_unlock(&sc->sc_mtx);
}
- mtx_unlock(&sc->sc_mtx);
return (0);
}
==== //depot/projects/usb/src/sys/dev/usb/uhid.c#12 (text+ko) ====
@@ -98,7 +98,6 @@
struct uhid_softc {
struct usb_cdev sc_cdev;
struct mtx sc_mtx;
- struct usbd_memory_wait sc_mem_wait;
struct usbd_xfer * sc_xfer[UHID_N_TRANSFER];
void * sc_repdesc_ptr;
@@ -652,7 +651,7 @@
error = usbd_transfer_setup(uaa->device, uaa->iface_index,
sc->sc_xfer, uhid_config, UHID_N_TRANSFER,
- sc, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sc, &(sc->sc_mtx));
if (error) {
DPRINTF(0, "error=%s\n", usbd_errstr(error)) ;
goto detach;
@@ -796,8 +795,6 @@
}
}
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
mtx_destroy(&(sc->sc_mtx));
return 0;
==== //depot/projects/usb/src/sys/dev/usb/uhub.c#7 (text+ko) ====
@@ -478,7 +478,7 @@
/* set up interrupt pipe */
err = usbd_transfer_setup(udev, 0, &sc->sc_xfer[0],
- &usbd_config[0], 2, sc, NULL, NULL);
+ &usbd_config[0], 2, sc, NULL);
if(err)
{
device_printf(dev, "cannot open interrupt pipe\n");
==== //depot/projects/usb/src/sys/dev/usb/ukbd.c#13 (text+ko) ====
@@ -118,7 +118,6 @@
struct __callout sc_callout;
struct ukbd_data sc_ndata;
struct ukbd_data sc_odata;
- struct usbd_memory_wait sc_mem_wait;
struct usbd_device * sc_udev;
struct usbd_interface * sc_iface;
@@ -640,7 +639,7 @@
err = usbd_transfer_setup(uaa->device, uaa->iface_index, sc->sc_xfer,
ukbd_config, UKBD_N_TRANSFER, sc,
- &Giant, &(sc->sc_mem_wait));
+ &Giant);
if (err) {
DPRINTF(0, "error=%s\n", usbd_errstr(err)) ;
goto detach;
@@ -765,8 +764,6 @@
usbd_transfer_unsetup(sc->sc_xfer, UKBD_N_TRANSFER);
- usbd_transfer_drain(&(sc->sc_mem_wait), &Giant);
-
__callout_drain(&(sc->sc_callout));
DPRINTF(0, "%s: disconnected\n",
==== //depot/projects/usb/src/sys/dev/usb/ulpt.c#16 (text+ko) ====
@@ -88,7 +88,6 @@
struct usb_cdev sc_cdev;
struct __callout sc_watchdog;
struct mtx sc_mtx;
- struct usbd_memory_wait sc_mem_wait;
device_t sc_dev;
struct usbd_xfer * sc_xfer[ULPT_N_TRANSFER];
@@ -594,7 +593,7 @@
error = usbd_transfer_setup(uaa->device, iface_index,
sc->sc_xfer, ulpt_config, ULPT_N_TRANSFER,
- sc, &(sc->sc_mtx), &(sc->sc_mem_wait));
+ sc, &(sc->sc_mtx));
if (error) {
DPRINTF(0, "error=%s\n", usbd_errstr(error)) ;
goto detach;
@@ -698,8 +697,6 @@
usbd_transfer_unsetup(sc->sc_xfer, ULPT_N_TRANSFER);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
__callout_drain(&(sc->sc_watchdog));
mtx_destroy(&(sc->sc_mtx));
==== //depot/projects/usb/src/sys/dev/usb/umass.c#6 (text+ko) ====
@@ -533,7 +533,6 @@
struct umass_softc {
- struct usbd_memory_wait sc_mem_wait;
struct scsi_sense cam_scsi_sense;
struct scsi_test_unit_ready cam_scsi_test_unit_ready;
struct mtx sc_mtx;
@@ -1212,7 +1211,7 @@
err = usbd_transfer_setup
(uaa->device, uaa->iface_index, sc->sc_xfer,
umass_bbb_config, UMASS_T_BBB_MAX, sc,
- &(sc->sc_mtx), &(sc->sc_mem_wait));
+ &(sc->sc_mtx));
/* skip reset first time */
sc->sc_last_xfer_index = UMASS_T_BBB_COMMAND;
@@ -1224,7 +1223,7 @@
umass_bbb_config,
(sc->sc_proto & UMASS_PROTO_CBI_I) ?
UMASS_T_CBI_MAX : (UMASS_T_CBI_MAX-2), sc,
- &(sc->sc_mtx), &(sc->sc_mem_wait));
+ &(sc->sc_mtx));
/* skip reset first time */
sc->sc_last_xfer_index = UMASS_T_CBI_COMMAND;
@@ -1307,8 +1306,6 @@
usbd_transfer_unsetup(sc->sc_xfer, UMASS_T_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
mtx_destroy(&(sc->sc_mtx));
return 0; /* success */
==== //depot/projects/usb/src/sys/dev/usb/umct.c#7 (text+ko) ====
@@ -84,7 +84,6 @@
struct umct_softc {
struct ucom_softc sc_ucom;
struct usbd_config_td sc_config_td;
- struct usbd_memory_wait sc_mem_wait;
struct usbd_device * sc_udev;
struct usbd_xfer * sc_xfer[UMCT_ENDPT_MAX];
@@ -368,7 +367,7 @@
error = usbd_transfer_setup(uaa->device, UMCT_IFACE_INDEX,
sc->sc_xfer, umct_config, UMCT_ENDPT_MAX,
- sc, &Giant, &(sc->sc_mem_wait));
+ sc, &Giant);
if (error) {
device_printf(dev, "allocating USB "
"transfers failed!\n");
@@ -441,8 +440,6 @@
usbd_transfer_unsetup(sc->sc_xfer, UMCT_ENDPT_MAX);
- usbd_transfer_drain(&(sc->sc_mem_wait), &Giant);
-
usbd_config_td_unsetup(&(sc->sc_config_td));
return 0;
==== //depot/projects/usb/src/sys/dev/usb/umodem.c#11 (text+ko) ====
@@ -134,7 +134,6 @@
struct umodem_softc {
struct ucom_softc sc_ucom;
usb_cdc_line_state_t sc_line_state; /* current line state */
- struct usbd_memory_wait sc_mem_wait;
struct usbd_xfer * sc_xfer_data[UMODEM_N_DATA_TRANSFER];
struct usbd_xfer * sc_xfer_intr[UMODEM_N_INTR_TRANSFER];
@@ -494,7 +493,7 @@
error = usbd_transfer_setup(uaa->device, sc->sc_data_iface_index,
sc->sc_xfer_data, umodem_config_data,
UMODEM_N_DATA_TRANSFER,
- sc, &Giant, &(sc->sc_mem_wait));
+ sc, &Giant);
if (error) {
goto detach;
}
@@ -502,7 +501,7 @@
error = usbd_transfer_setup(uaa->device, sc->sc_ctrl_iface_index,
sc->sc_xfer_intr, umodem_config_intr,
UMODEM_N_INTR_TRANSFER,
- sc, &Giant, &(sc->sc_mem_wait));
+ sc, &Giant);
if (error) {
/* ignore */
DPRINTF(0, "no interrupt pipe!\n");
@@ -1096,7 +1095,5 @@
usbd_transfer_unsetup(sc->sc_xfer_data, UMODEM_N_DATA_TRANSFER);
- usbd_transfer_drain(&(sc->sc_mem_wait), &Giant);
-
return 0;
}
==== //depot/projects/usb/src/sys/dev/usb/ums.c#15 (text+ko) ====
@@ -87,7 +87,6 @@
struct usb_cdev sc_cdev;
struct mtx sc_mtx;
struct __callout sc_callout;
- struct usbd_memory_wait sc_mem_wait;
struct hid_location sc_loc_x;
struct hid_location sc_loc_y;
struct hid_location sc_loc_z;
@@ -392,7 +391,7 @@
err = usbd_transfer_setup(uaa->device, uaa->iface_index, sc->sc_xfer,
ums_config, UMS_N_TRANSFER, sc,
- &(sc->sc_mtx), &(sc->sc_mem_wait));
+ &(sc->sc_mtx));
if (err) {
DPRINTF(0, "error=%s\n", usbd_errstr(err)) ;
goto detach;
@@ -562,8 +561,6 @@
usbd_transfer_unsetup(sc->sc_xfer, UMS_N_TRANSFER);
- usbd_transfer_drain(&(sc->sc_mem_wait), &(sc->sc_mtx));
-
__callout_drain(&(sc->sc_callout));
mtx_destroy(&(sc->sc_mtx));
==== //depot/projects/usb/src/sys/dev/usb/uplcom.c#10 (text+ko) ====
@@ -148,7 +148,6 @@
struct uplcom_softc {
struct ucom_softc sc_ucom;
usb_cdc_line_state_t sc_line_state; /* current line state */
- struct usbd_memory_wait sc_mem_wait;
struct usbd_xfer * sc_xfer_intr[UPLCOM_N_INTR_TRANSFER];
struct usbd_xfer * sc_xfer_data[UPLCOM_N_DATA_TRANSFER];
@@ -527,7 +526,7 @@
error = usbd_transfer_setup(uaa->device, sc->sc_data_iface_index,
sc->sc_xfer_data, uplcom_config_data,
UPLCOM_N_DATA_TRANSFER,
- sc, &Giant, &(sc->sc_mem_wait));
+ sc, &Giant);
if (error) {
DPRINTF(0, "one or more missing data "
"pipes, error=%s\n", usbd_errstr(error));
@@ -537,7 +536,7 @@
error = usbd_transfer_setup(uaa->device, sc->sc_ctrl_iface_index,
sc->sc_xfer_intr, uplcom_config_intr,
UPLCOM_N_INTR_TRANSFER,
- sc, &Giant, &(sc->sc_mem_wait));
+ sc, &Giant);
if (error) {
DPRINTF(0, "no interrupt pipe, error=%s\n",
usbd_errstr(error));
@@ -596,8 +595,6 @@
usbd_transfer_unsetup(sc->sc_xfer_data, UPLCOM_N_DATA_TRANSFER);
- usbd_transfer_drain(&(sc->sc_mem_wait), &Giant);
-
return 0;
}
==== //depot/projects/usb/src/sys/dev/usb/urio.c#6 (text+ko) ====
@@ -87,7 +87,6 @@
struct urio_softc {
struct usb_cdev sc_cdev;
struct mtx sc_mtx;
- struct usbd_memory_wait sc_mem_wait;
device_t sc_dev;
struct usbd_device * sc_udev;
@@ -244,7 +243,7 @@
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list