Date: Thu, 12 Oct 2006 16:24:01 GMT From: Hans Petter Selasky <hselasky@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 107766 for review Message-ID: <200610121624.k9CGO12O027294@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=107766 Change 107766 by hselasky@hselasky_mini_itx on 2006/10/12 16:23:04 Remove USBD_SELF_DESTRUCT. The flag is broken, and currently not used. Calling "usbd_transfer_unsetup()" from the callback of a USB transfer is depreciated. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/README#12 edit .. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#25 edit .. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#19 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/README#12 (text+ko) ==== @@ -148,6 +148,8 @@ should be unsetup NOTE: This function can sleep, waiting for active mutexes to become unlocked! +NOTE: It is not allowed to call "usbd_transfer_unsetup" from the callback + of a USB transfer. /*------------------------------------------------------------------------* * void @@ -229,10 +231,6 @@ without exiting any mutexes, until the transfer is finished or has timed out. - USBD_SELF_DESTRUCT - This flag allows one to free a transfer from its - callback function. - USBD_USE_DMA This flag will cause the USB host controller driver to not allocate a second data buffer, "xfer->buffer". Instead of ==== //depot/projects/usb/src/sys/dev/usb/usb_subr.h#25 (text+ko) ==== @@ -312,7 +312,7 @@ #define USBD_USE_POLLING 0x0200 /* used to make synchronous transfers * use polling instead of sleep/wakeup */ -#define USBD_SELF_DESTRUCT 0x0400 /* set if callback is allowed to unsetup itself */ +#define USBD_UNUSED_3 0x0400 #define USBD_USE_DMA 0x0800 #define USBD_UNUSED_4 0x1000 #define USBD_UNUSED_5 0x2000 ==== //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#19 (text+ko) ==== @@ -286,7 +286,6 @@ USBD_SHORT_XFER_OK| USBD_CUSTOM_CLEARSTALL| USBD_USE_POLLING| - USBD_SELF_DESTRUCT| USBD_USE_DMA))) { error = USBD_BAD_FLAG; @@ -740,17 +739,6 @@ */ if(!(xfer->flags & (USBD_DEV_TRANSFERRING))) { - if(xfer->flags & USBD_SELF_DESTRUCT) - { - /* increment refcount - * in case the callback - * frees itself: - */ - mtx_lock(xfer->usb_mtx); - xfer->usb_root->memory_refcount++; - mtx_unlock(xfer->usb_mtx); - } - /* call callback */ __usbd_callback(xfer); @@ -800,10 +788,6 @@ } } } - if(xfer->flags & USBD_SELF_DESTRUCT) - { - usbd_drop_refcount(xfer->usb_root); - } } return; } @@ -839,17 +823,6 @@ /* always set error */ xfer->error = USBD_CANCELLED; - if(xfer->flags & USBD_SELF_DESTRUCT) - { - /* increment refcount - * in case the callback - * frees itself: - */ - mtx_lock(xfer->usb_mtx); - xfer->usb_root->memory_refcount++; - mtx_unlock(xfer->usb_mtx); - } - if(xfer->flags & USBD_DEV_TRANSFERRING) { /* increment refcount so that scheduled @@ -864,11 +837,6 @@ __usbd_callback(xfer); } mtx_unlock(xfer->usb_mtx); - - if(xfer->flags & USBD_SELF_DESTRUCT) - { - usbd_drop_refcount(xfer->usb_root); - } } return; }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200610121624.k9CGO12O027294>