Lines Matching refs:queue
25 static void *hw_qpageit_get_inc(struct hw_queue *queue)
27 void *retvalue = hw_qeit_get(queue);
29 queue->current_q_offset += queue->pagesize;
30 if (queue->current_q_offset > queue->queue_length) {
31 queue->current_q_offset -= queue->pagesize;
40 static int hw_queue_ctor(struct hw_queue *queue, const u32 nr_of_pages,
52 queue->queue_length = nr_of_pages * pagesize;
53 queue->queue_pages = kmalloc_array(nr_of_pages, sizeof(void *),
55 if (!queue->queue_pages)
59 * allocate pages for queue:
61 * inner loop divides a kernel page into smaller hea queue pages
69 (queue->queue_pages)[i] = (struct ehea_page *)kpage;
75 queue->current_q_offset = 0;
76 queue->qe_size = qe_size;
77 queue->pagesize = pagesize;
78 queue->toggle_state = 1;
83 if (!(queue->queue_pages)[i])
85 free_page((unsigned long)(queue->queue_pages)[i]);
90 static void hw_queue_dtor(struct hw_queue *queue)
95 if (!queue || !queue->queue_pages)
98 pages_per_kpage = PAGE_SIZE / queue->pagesize;
100 nr_pages = queue->queue_length / queue->pagesize;
103 free_page((unsigned long)(queue->queue_pages)[i]);
105 kfree(queue->queue_pages);
356 /* allocates memory for a queue and registers pages in phyp */