Lines Matching full:queue

2  * CAM request queue management definitions.
38 #include <sys/queue.h>
42 * This structure implements a heap based priority queue. The queue
61 struct camq queue; member
102 * Resize a cam queue
104 uint32_t camq_resize(struct camq *queue, int new_size);
114 void camq_fini(struct camq *queue);
117 * cam_queue_insert: Given a CAM queue with at least one open spot,
120 void camq_insert(struct camq *queue, cam_pinfo *new_entry);
123 * camq_remove: Remove and arbitrary entry from the queue maintaining
124 * queue order.
126 cam_pinfo *camq_remove(struct camq *queue, int index);
127 #define CAMQ_HEAD 1 /* Head of queue index */
138 * maintaining queue order.
140 void camq_change_priority(struct camq *queue, int index,
146 return (ccbq->queue.entries + ccbq->queue_extra_entries); in cam_ccbq_pending_ccb_count()
160 struct camq *queue = &ccbq->queue; in cam_ccbq_insert_ccb() local
164 ("%s: Cannot queue ccb %p func_code %#x", __func__, new_ccb, in cam_ccbq_insert_ccb()
168 * If queue is already full, try to resize. in cam_ccbq_insert_ccb()
171 if (queue->entries == queue->array_size && in cam_ccbq_insert_ccb()
172 camq_resize(&ccbq->queue, queue->array_size * 2) != CAM_REQ_CMP) { in cam_ccbq_insert_ccb()
173 old_ccb = (struct ccb_hdr *)camq_remove(queue, queue->entries); in cam_ccbq_insert_ccb()
180 camq_insert(queue, &new_ccb->ccb_h.pinfo); in cam_ccbq_insert_ccb()
187 struct camq *queue = &ccbq->queue; in cam_ccbq_remove_ccb() local
199 removed_entry = camq_remove(queue, ccb->ccb_h.pinfo.index); in cam_ccbq_remove_ccb()
201 ("%s: Removed wrong entry from queue (%p != %p)", __func__, in cam_ccbq_remove_ccb()
206 * to the emptied space in the queue. in cam_ccbq_remove_ccb()
220 camq_insert(queue, &bccb->pinfo); in cam_ccbq_remove_ccb()
226 return((union ccb *)ccbq->queue.queue_array[index]); in cam_ccbq_peek_ccb()