void _usb_device_free_XD ( _usb_device_handle handle, /* [IN] the dTD to enqueue */ pointer xd_ptr ) { /* Body */ USB_DEV_STATE_STRUCT_PTR usb_dev_ptr = (USB_DEV_STATE_STRUCT_PTR) handle; /* ** This function can be called from any context, and it needs mutual ** exclusion with itself. */ USB_lock(); /* ** Add the XD to the free XD queue (linked via PRIVATE) and ** increment the tail to the next descriptor */ USB_XD_QADD(usb_dev_ptr->XD_HEAD, usb_dev_ptr->XD_TAIL, (struct xd_struct *)xd_ptr); usb_dev_ptr->XD_ENTRIES++; USB_unlock(); } /* Endbody */
void _usb_device_free_XD ( /* [IN] the dTD to enqueue */ pointer xd_ptr ) { /* Body */ USB_DEV_STATE_STRUCT_PTR usb_dev_ptr = (USB_DEV_STATE_STRUCT_PTR) (((XD_STRUCT_PTR)xd_ptr)->SCRATCH_PTR->PRIVATE); /* ** This function can be called from any context, and it needs mutual ** exclusion with itself. */ #ifdef _DEVICE_DEBUG_ DEBUG_LOG_TRACE("_usb_device_free_XD"); #endif USB_lock(); /* ** Add the XD to the free XD queue (linked via PRIVATE) and ** increment the tail to the next descriptor */ USB_XD_QADD(usb_dev_ptr->XD_HEAD, usb_dev_ptr->XD_TAIL, (XD_STRUCT_PTR)xd_ptr); usb_dev_ptr->XD_ENTRIES++; USB_unlock(); #ifdef _DEVICE_DEBUG_ DEBUG_LOG_TRACE("_usb_device_free_XD, SUCCESSFUL"); #endif } /* Endbody */
void _usb_device_free_XD ( /* [IN] the dTD to enqueue */ pointer xd_ptr ) { /* Body */ int lockKey; USB_DEV_STATE_STRUCT_PTR usb_dev_ptr; usb_dev_ptr = (USB_DEV_STATE_STRUCT_PTR)(((XD_STRUCT_PTR)xd_ptr)->SCRATCH_PTR->PRIVATE); ARC_DEBUG_TRACE(ARC_DEBUG_FLAG_TRACE, "free_XD: xd_ptr=0x%x\n", (unsigned)xd_ptr); ARC_DEBUG_CODE(ARC_DEBUG_FLAG_STATS, (usb_dev_ptr->STATS.free_XD_count++)); /* ** This function can be called from any context, and it needs mutual ** exclusion with itself. */ lockKey = USB_lock(); /* ** Add the XD to the free XD queue (linked via PRIVATE) and ** increment the tail to the next descriptor */ USB_XD_QADD(usb_dev_ptr->XD_HEAD, usb_dev_ptr->XD_TAIL, (XD_STRUCT_PTR)xd_ptr); usb_dev_ptr->XD_ENTRIES++; USB_unlock(lockKey); } /* Endbody */