static HIF_SCATTER_REQ *DevAllocScatterReq(HIF_DEVICE *Context) { DL_LIST *pItem; AR6K_DEVICE *pDev = (AR6K_DEVICE *)Context; LOCK_AR6K(pDev); pItem = DL_ListRemoveItemFromHead(&pDev->ScatterReqHead); UNLOCK_AR6K(pDev); if (pItem != NULL) { return A_CONTAINING_STRUCT(pItem, HIF_SCATTER_REQ, ListLink); } return NULL; }
static struct hif_scatter_req *DevAllocScatterReq(struct hif_device *Context) { struct dl_list *pItem; struct ar6k_device *pDev = (struct ar6k_device *)Context; LOCK_AR6K(pDev); pItem = DL_ListRemoveItemFromHead(&pDev->ScatterReqHead); UNLOCK_AR6K(pDev); if (pItem != NULL) { return A_CONTAINING_STRUCT(pItem, struct hif_scatter_req, ListLink); } return NULL; }
static HIF_URB_CONTEXT *usb_hif_dequeue_pending_transfer(HIF_USB_PIPE *pipe) { HIF_URB_CONTEXT *urb_context = NULL; DL_LIST *item; unsigned long flags; spin_lock_irqsave(&pipe->device->cs_lock, flags); item = DL_ListRemoveItemFromHead(&pipe->urb_pending_list); if (item != NULL) urb_context = A_CONTAINING_STRUCT(item, HIF_URB_CONTEXT, link); spin_unlock_irqrestore(&pipe->device->cs_lock, flags); return urb_context; }
static void CleanListItems(DL_LIST *pListHead) { DL_LIST *pListItem; BT_CONTROL_ACTION_ITEM *pControlItem; while (1) { pListItem = DL_ListRemoveItemFromHead(pListHead); if (NULL == pListItem) { break; } pControlItem = A_CONTAINING_STRUCT(pListItem, BT_CONTROL_ACTION_ITEM, ListEntry); /* free it */ A_FREE(pControlItem); } }
static HIF_SCATTER_REQ *AllocScatterReq(HIF_DEVICE *device) { DL_LIST *pItem; CriticalSectionAcquire(&lock); pItem = DL_ListRemoveItemFromHead(&device->ScatterReqHead); CriticalSectionRelease(&lock); if (pItem != NULL) { return A_CONTAINING_STRUCT(pItem, HIF_SCATTER_REQ, ListLink); } return NULL; }
HIF_URB_CONTEXT *usb_hif_alloc_urb_from_pipe(HIF_USB_PIPE *pipe) { HIF_URB_CONTEXT *urb_context = NULL; DL_LIST *item; unsigned long flags; spin_lock_irqsave(&pipe->device->cs_lock, flags); item = DL_ListRemoveItemFromHead(&pipe->urb_list_head); if (item != NULL) { urb_context = A_CONTAINING_STRUCT(item, HIF_URB_CONTEXT, link); pipe->urb_cnt--; } spin_unlock_irqrestore(&pipe->device->cs_lock, flags); return urb_context; }
static HIF_SCATTER_REQ *AllocScatterReq(HIF_DEVICE *device) { DL_LIST *pItem; unsigned long flag; spin_lock_irqsave(&device->lock, flag); pItem = DL_ListRemoveItemFromHead(&device->ScatterReqHead); spin_unlock_irqrestore(&device->lock, flag); if (pItem != NULL) { return A_CONTAINING_STRUCT(pItem, HIF_SCATTER_REQ, ListLink); } return NULL; }
static struct hif_scatter_req *AllocScatterReq(struct hif_device *device) { struct dl_list *pItem; unsigned long flag; spin_lock_irqsave(&device->lock, flag); pItem = DL_ListRemoveItemFromHead(&device->ScatterReqHead); spin_unlock_irqrestore(&device->lock, flag); if (pItem != NULL) { return A_CONTAINING_STRUCT(pItem, struct hif_scatter_req, ListLink); } return NULL; }