示例#1
0
void push_req_queue(requests_t *r, item_t *i) {
  if (empty_req_queue(r)) {
    r->head = r->tail = i;
  } else {
    r->tail->next = i;
    r->tail = i;
  }
}
示例#2
0
item_t *pop_req_queue(requests_t *r) {
  item_t *ret;

  if (empty_req_queue(r)) {
    return NULL;
  } else if (r->head == r->tail) {
    ret = r->head;
    r->head = r->tail = NULL;
  } else {
    ret = r->head;
    r->head = ret->next;
  }

  return ret;
}
示例#3
0
/* Disables endpoint, is called by gadget driver */
static int udc_ep_disable(struct usb_ep *usbep)
{
	struct udc_ep	*ep = NULL;
	unsigned long	iflags;

	if (!usbep)
		return -EINVAL;

	ep = container_of(usbep, struct udc_ep, ep);
	if (usbep->name == ep0_string || !ep->ep.desc)
		return -EINVAL;

	DBG(ep->dev, "Disable ep-%d\n", ep->num);

	spin_lock_irqsave(&ep->dev->lock, iflags);
	udc_free_request(&ep->ep, &ep->bna_dummy_req->req);
	empty_req_queue(ep);
	ep_init(ep->dev->regs, ep);
	spin_unlock_irqrestore(&ep->dev->lock, iflags);

	return 0;
}
示例#4
0
int emptyRQ(requests_t *r) {
  return empty_req_queue(r);
}