Lines Matching defs:head

69  * added to the list after an existing element or at the head of the list.
70 * Elements being removed from the head of the list should use the explicit
77 * head of the list and the other to the tail of the list. The elements are
80 * to the list after an existing element, at the head of the list, or at the
81 * end of the list. Elements being removed from the head of the tail queue
91 * or after an existing element or at the head of the list. A list
94 * A tail queue is headed by a pair of pointers, one to the head of the
98 * after an existing element, at the head of the list, or at the end of
101 * A circle queue is headed by a pair of pointers, one to the head of the
105 * an existing element, at the head of the list, or at the end of the list.
144 /* Store the last 2 places the queue element or head was altered */
155 #define QMD_TRACE_HEAD(head) do { \
156 (head)->trace.prevline = (head)->trace.lastline; \
157 (head)->trace.prevfile = (head)->trace.lastfile; \
158 (head)->trace.lastline = __LINE__; \
159 (head)->trace.lastfile = __FILE__; \
171 #define QMD_TRACE_HEAD(head)
184 #define SLIST_HEAD_INITIALIZER(head) \
195 #define SLIST_EMPTY(head) ((head)->slh_first == NULL)
197 #define SLIST_FIRST(head) ((head)->slh_first)
199 #define SLIST_FOREACH(var, head, field) \
200 for ((var) = SLIST_FIRST((head)); \
204 #define SLIST_FOREACH_SAFE(var, head, field, tvar) \
205 for ((var) = SLIST_FIRST((head)); \
209 #define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
210 for ((varp) = &SLIST_FIRST((head)); \
214 #define SLIST_INIT(head) do { \
215 SLIST_FIRST((head)) = NULL; \
223 #define SLIST_INSERT_HEAD(head, elm, field) do { \
224 SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
225 SLIST_FIRST((head)) = (elm); \
230 #define SLIST_REMOVE(head, elm, type, field) do { \
231 if (SLIST_FIRST((head)) == (elm)) { \
232 SLIST_REMOVE_HEAD((head), field); \
235 struct type *curelm = SLIST_FIRST((head)); \
248 #define SLIST_REMOVE_HEAD(head, field) do { \
249 SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
261 #define STAILQ_HEAD_INITIALIZER(head) \
262 { NULL, &(head).stqh_first }
280 #define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
282 #define STAILQ_FIRST(head) ((head)->stqh_first)
284 #define STAILQ_FOREACH(var, head, field) \
285 for((var) = STAILQ_FIRST((head)); \
290 #define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
291 for ((var) = STAILQ_FIRST((head)); \
295 #define STAILQ_INIT(head) do { \
296 STAILQ_FIRST((head)) = NULL; \
297 (head)->stqh_last = &STAILQ_FIRST((head)); \
300 #define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
302 (head)->stqh_last = &STAILQ_NEXT((elm), field); \
306 #define STAILQ_INSERT_HEAD(head, elm, field) do { \
307 if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
308 (head)->stqh_last = &STAILQ_NEXT((elm), field); \
309 STAILQ_FIRST((head)) = (elm); \
312 #define STAILQ_INSERT_TAIL(head, elm, field) do { \
314 *(head)->stqh_last = (elm); \
315 (head)->stqh_last = &STAILQ_NEXT((elm), field); \
318 #define STAILQ_LAST(head, type, field) \
319 (STAILQ_EMPTY((head)) ? \
322 ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
326 #define STAILQ_REMOVE(head, elm, type, field) do { \
327 if (STAILQ_FIRST((head)) == (elm)) { \
328 STAILQ_REMOVE_HEAD((head), field); \
331 struct type *curelm = STAILQ_FIRST((head)); \
334 STAILQ_REMOVE_AFTER(head, curelm, field); \
339 #define STAILQ_REMOVE_HEAD(head, field) do { \
340 if ((STAILQ_FIRST((head)) = \
341 STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
342 (head)->stqh_last = &STAILQ_FIRST((head)); \
345 #define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \
346 if ((STAILQ_FIRST((head)) = STAILQ_NEXT((elm), field)) == NULL) \
347 (head)->stqh_last = &STAILQ_FIRST((head)); \
350 #define STAILQ_REMOVE_AFTER(head, elm, field) do { \
353 (head)->stqh_last = &STAILQ_NEXT((elm), field); \
378 #define LIST_HEAD_INITIALIZER(head) \
392 #define QMD_LIST_CHECK_HEAD(head, field) do { \
393 if (LIST_FIRST((head)) != NULL && \
394 LIST_FIRST((head))->field.le_prev != \
395 &LIST_FIRST((head))) \
396 panic("Bad list head %p first->prev != head", (head)); \
411 #define QMD_LIST_CHECK_HEAD(head, field)
416 #define LIST_EMPTY(head) ((head)->lh_first == NULL)
418 #define LIST_FIRST(head) ((head)->lh_first)
420 #define LIST_FOREACH(var, head, field) \
421 for ((var) = LIST_FIRST((head)); \
425 #define LIST_FOREACH_SAFE(var, head, field, tvar) \
426 for ((var) = LIST_FIRST((head)); \
430 #define LIST_INIT(head) do { \
431 LIST_FIRST((head)) = NULL; \
451 #define LIST_INSERT_HEAD(head, elm, field) do { \
452 QMD_LIST_CHECK_HEAD((head), field); \
453 if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \
454 LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
455 LIST_FIRST((head)) = (elm); \
456 (elm)->field.le_prev = &LIST_FIRST((head)); \
492 #define TAILQ_HEAD_INITIALIZER(head) \
493 { NULL, &(head).tqh_first }
516 #define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
518 #define TAILQ_FIRST(head) ((head)->tqh_first)
520 #define TAILQ_FOREACH(var, head, field) \
521 for ((var) = TAILQ_FIRST((head)); \
525 #define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
526 for ((var) = TAILQ_FIRST((head)); \
530 #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
531 for ((var) = TAILQ_LAST((head), headname); \
535 #define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
536 for ((var) = TAILQ_LAST((head), headname); \
540 #define TAILQ_INIT(head) do { \
541 TAILQ_FIRST((head)) = NULL; \
542 (head)->tqh_last = &TAILQ_FIRST((head)); \
543 QMD_TRACE_HEAD(head); \
546 #define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
551 (head)->tqh_last = &TAILQ_NEXT((elm), field); \
552 QMD_TRACE_HEAD(head); \
569 #define TAILQ_INSERT_HEAD(head, elm, field) do { \
570 if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \
571 TAILQ_FIRST((head))->field.tqe_prev = \
574 (head)->tqh_last = &TAILQ_NEXT((elm), field); \
575 TAILQ_FIRST((head)) = (elm); \
576 (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \
577 QMD_TRACE_HEAD(head); \
581 #define TAILQ_INSERT_TAIL(head, elm, field) do { \
583 (elm)->field.tqe_prev = (head)->tqh_last; \
584 *(head)->tqh_last = (elm); \
585 (head)->tqh_last = &TAILQ_NEXT((elm), field); \
586 QMD_TRACE_HEAD(head); \
590 #define TAILQ_LAST(head, headname) \
591 (*(((struct headname *)((head)->tqh_last))->tqh_last))
598 #define TAILQ_REMOVE(head, elm, field) do { \
603 (head)->tqh_last = (elm)->field.tqe_prev; \
604 QMD_TRACE_HEAD(head); \
647 #define CIRCLEQ_EMPTY(head) ((head)->cqh_first == (void *)(head))
649 #define CIRCLEQ_FIRST(head) ((head)->cqh_first)
651 #define CIRCLEQ_FOREACH(var, head, field) \
652 for((var) = (head)->cqh_first; \
653 (var) != (void *)(head); \
656 #define CIRCLEQ_INIT(head) do { \
657 (head)->cqh_first = (void *)(head); \
658 (head)->cqh_last = (void *)(head); \
661 #define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
664 if ((listelm)->field.cqe_next == (void *)(head)) \
665 (head)->cqh_last = (elm); \
671 #define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \
674 if ((listelm)->field.cqe_prev == (void *)(head)) \
675 (head)->cqh_first = (elm); \
681 #define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \
682 (elm)->field.cqe_next = (head)->cqh_first; \
683 (elm)->field.cqe_prev = (void *)(head); \
684 if ((head)->cqh_last == (void *)(head)) \
685 (head)->cqh_last = (elm); \
687 (head)->cqh_first->field.cqe_prev = (elm); \
688 (head)->cqh_first = (elm); \
691 #define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \
692 (elm)->field.cqe_next = (void *)(head); \
693 (elm)->field.cqe_prev = (head)->cqh_last; \
694 if ((head)->cqh_first == (void *)(head)) \
695 (head)->cqh_first = (elm); \
697 (head)->cqh_last->field.cqe_next = (elm); \
698 (head)->cqh_last = (elm); \
701 #define CIRCLEQ_LAST(head) ((head)->cqh_last)
707 #define CIRCLEQ_REMOVE(head, elm, field) do { \
708 if ((elm)->field.cqe_next == (void *)(head)) \
709 (head)->cqh_last = (elm)->field.cqe_prev; \
713 if ((elm)->field.cqe_prev == (void *)(head)) \
714 (head)->cqh_first = (elm)->field.cqe_next; \
740 *head = (struct quehead *)b;
742 element->qh_link = head->qh_link;
743 element->qh_rlink = head;
744 head->qh_link = element;