dummy_queue (struct usb_ep *_ep, struct usb_request *_req, int mem_flags) 
dummy_queue (struct usb_ep *_ep, struct usb_request *_req, unsigned mem_flags) 
dummy_queue (struct usb_ep *_ep, struct usb_request *_req, int mem_flags){	struct dummy_ep		*ep;	struct dummy_request	*req;	struct dummy		*dum;	unsigned long		flags;	req = usb_request_to_dummy_request (_req);	if (!_req || !list_empty (&req->queue) || !_req->complete)		return -EINVAL;	ep = usb_ep_to_dummy_ep (_ep);	if (!_ep || (!ep->desc && _ep->name != ep0name))		return -EINVAL;	dum = ep_to_dummy (ep);	if (!dum->driver || !is_enabled (dum))		return -ESHUTDOWN;#if 0	dev_dbg (udc_dev(dum), "ep %p queue req %p to %s, len %d buf %p\n",			ep, _req, _ep->name, _req->length, _req->buf);#endif	_req->status = -EINPROGRESS;	_req->actual = 0;	spin_lock_irqsave (&dum->lock, flags);	/* implement an emulated single-request FIFO */	if (ep->desc && (ep->desc->bEndpointAddress & USB_DIR_IN) &&			list_empty (&dum->fifo_req.queue) &&			list_empty (&ep->queue) &&			_req->length <= FIFO_SIZE) {		req = &dum->fifo_req;		req->req = *_req;		req->req.buf = dum->fifo_buf;		memcpy (dum->fifo_buf, _req->buf, _req->length);		req->req.context = dum;		req->req.complete = fifo_complete;		spin_unlock (&dum->lock);		_req->actual = _req->length;		_req->status = 0;		_req->complete (_ep, _req);		spin_lock (&dum->lock);	}	list_add_tail (&req->queue, &ep->queue);	spin_unlock_irqrestore (&dum->lock, flags);	/* real hardware would likely enable transfers here, in case	 * it'd been left NAKing.	 */	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/5db539e49fc7471e23bf3c94ca304f008cb7b7f3/dummy_hcd.c/clean/drivers/usb/gadget/dummy_hcd.c