Lines Matching refs:queue
46 struct wiimote_queue *queue = container_of(work, struct wiimote_queue, in wiimote_queue_worker() local
48 struct wiimote_data *wdata = container_of(queue, struct wiimote_data, in wiimote_queue_worker()
49 queue); in wiimote_queue_worker()
53 spin_lock_irqsave(&wdata->queue.lock, flags); in wiimote_queue_worker()
55 while (wdata->queue.head != wdata->queue.tail) { in wiimote_queue_worker()
56 spin_unlock_irqrestore(&wdata->queue.lock, flags); in wiimote_queue_worker()
58 wdata->queue.outq[wdata->queue.tail].data, in wiimote_queue_worker()
59 wdata->queue.outq[wdata->queue.tail].size); in wiimote_queue_worker()
65 spin_lock_irqsave(&wdata->queue.lock, flags); in wiimote_queue_worker()
67 wdata->queue.tail = (wdata->queue.tail + 1) % WIIMOTE_BUFSIZE; in wiimote_queue_worker()
70 spin_unlock_irqrestore(&wdata->queue.lock, flags); in wiimote_queue_worker()
82 spin_lock_irqsave(&wdata->queue.lock, flags); in wiimote_queue()
96 spin_lock_irqsave(&wdata->queue.lock, flags); in wiimote_queue()
98 memcpy(wdata->queue.outq[wdata->queue.head].data, buffer, count); in wiimote_queue()
99 wdata->queue.outq[wdata->queue.head].size = count; in wiimote_queue()
100 newhead = (wdata->queue.head + 1) % WIIMOTE_BUFSIZE; in wiimote_queue()
102 if (wdata->queue.head == wdata->queue.tail) { in wiimote_queue()
103 wdata->queue.head = newhead; in wiimote_queue()
104 schedule_work(&wdata->queue.worker); in wiimote_queue()
105 } else if (newhead != wdata->queue.tail) { in wiimote_queue()
106 wdata->queue.head = newhead; in wiimote_queue()
117 spin_unlock_irqrestore(&wdata->queue.lock, flags); in wiimote_queue()
1733 spin_lock_init(&wdata->queue.lock); in wiimote_create()
1734 INIT_WORK(&wdata->queue.worker, wiimote_queue_worker); in wiimote_create()
1768 cancel_work_sync(&wdata->queue.worker); in wiimote_destroy()