• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/xnu-2422.115.4/osfmk/kern/

Lines Matching refs:head

120 /* Enqueue element to head of queue */
130 /* Dequeue element from head of queue */
344 #define queue_enter(head, elt, type, field) \
348 __prev = (head)->prev; \
349 if ((head) == __prev) { \
350 (head)->next = (queue_entry_t) (elt); \
357 (elt)->field.next = head; \
358 (head)->prev = (queue_entry_t) elt; \
364 * Insert a new element at the head of the queue.
372 #define queue_enter_first(head, elt, type, field) \
376 __next = (head)->next; \
377 if ((head) == __next) { \
378 (head)->prev = (queue_entry_t) (elt); \
385 (elt)->field.prev = head; \
386 (head)->next = (queue_entry_t) elt; \
401 #define queue_insert_before(head, elt, cur, type, field) \
405 if ((head) == (queue_entry_t)(cur)) { \
406 (elt)->field.next = (head); \
407 if ((head)->next == (head)) { /* only element */ \
408 (elt)->field.prev = (head); \
409 (head)->next = (queue_entry_t)(elt); \
411 __prev = (elt)->field.prev = (head)->prev; \
415 (head)->prev = (queue_entry_t)(elt); \
418 if ((head)->next == (queue_entry_t)(cur)) { \
420 (elt)->field.prev = (head); \
421 (head)->next = (queue_entry_t)(elt); \
443 #define queue_insert_after(head, elt, cur, type, field) \
447 if ((head) == (queue_entry_t)(cur)) { \
448 (elt)->field.prev = (head); \
449 if ((head)->next == (head)) { /* only element */ \
450 (elt)->field.next = (head); \
451 (head)->prev = (queue_entry_t)(elt); \
453 __next = (elt)->field.next = (head)->next; \
457 (head)->next = (queue_entry_t)(elt); \
460 if ((head)->prev == (queue_entry_t)(cur)) { \
462 (elt)->field.next = (head); \
463 (head)->prev = (queue_entry_t)(elt); \
477 * given element (thing) in the given queue (head)
479 #define queue_field(head, thing, type, field) \
480 (((head) == (thing)) ? (head) : &((type)(void *)(thing))->field)
490 #define queue_remove(head, elt, type, field) \
497 if ((head) == __next) \
498 (head)->prev = __prev; \
502 if ((head) == __prev) \
503 (head)->next = __next; \
514 * Remove and return the entry at the head of
517 * queue_remove_first(head, entry, type, field)
520 #define queue_remove_first(head, entry, type, field) \
524 (entry) = (type)(void *) ((head)->next); \
527 if ((head) == __next) \
528 (head)->prev = (head); \
530 ((type)(void *)(__next))->field.prev = (head); \
531 (head)->next = __next; \
543 * queue_remove_last(head, entry, type, field)
546 #define queue_remove_last(head, entry, type, field) \
550 (entry) = (type)(void *) ((head)->prev); \
553 if ((head) == __prev) \
554 (head)->next = (head); \
556 ((type)(void *)(__prev))->field.next = (head); \
557 (head)->prev = __prev; \
576 * rebase old queue to new queue head
610 #define queue_iterate(head, elt, type, field) \
611 for ((elt) = (type)(void *) queue_first(head); \
612 !queue_end((head), (queue_entry_t)(elt)); \
624 struct queue_entry head; /* header for queue */
644 queue_init(&(q)->head); \
657 queue_init(&(q)->head); \
668 enqueue_tail(&(q)->head, elt); \
675 if (queue_empty(&(q)->head)) \
678 *(elt) = dequeue_head(&(q)->head); \