Lines Matching refs:head

45  * added to the list after an existing element or at the head of the list.
46 * Elements being removed from the head of the list should use the explicit
53 * head of the list and the other to the tail of the list. The elements are
56 * to the list after an existing element, at the head of the list, or at the
57 * end of the list. Elements being removed from the head of the tail queue
67 * or after an existing element or at the head of the list. A list
70 * A tail queue is headed by a pair of pointers, one to the head of the
74 * after an existing element, at the head of the list, or at the end of
116 /* Store the last 2 places the queue element or head was altered */
129 #define QMD_TRACE_HEAD(head) do { \
130 (head)->trace.prevline = (head)->trace.lastline; \
131 (head)->trace.prevfile = (head)->trace.lastfile; \
132 (head)->trace.lastline = __LINE__; \
133 (head)->trace.lastfile = __FILE__; \
145 #define QMD_TRACE_HEAD(head)
174 #define SLIST_HEAD_INITIALIZER(head) \
203 #define SLIST_EMPTY(head) ((head)->slh_first == NULL)
205 #define SLIST_FIRST(head) ((head)->slh_first)
207 #define SLIST_FOREACH(var, head, field) \
208 for ((var) = SLIST_FIRST((head)); \
212 #define SLIST_FOREACH_FROM(var, head, field) \
213 for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \
217 #define SLIST_FOREACH_SAFE(var, head, field, tvar) \
218 for ((var) = SLIST_FIRST((head)); \
222 #define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \
223 for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \
227 #define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
228 for ((varp) = &SLIST_FIRST((head)); \
232 #define SLIST_INIT(head) do { \
233 SLIST_FIRST((head)) = NULL; \
241 #define SLIST_INSERT_HEAD(head, elm, field) do { \
242 SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
243 SLIST_FIRST((head)) = (elm); \
248 #define SLIST_REMOVE(head, elm, type, field) do { \
250 if (SLIST_FIRST((head)) == (elm)) { \
251 SLIST_REMOVE_HEAD((head), field); \
254 QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head); \
267 #define SLIST_REMOVE_HEAD(head, field) do { \
268 SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
292 #define STAILQ_HEAD_INITIALIZER(head) \
293 { NULL, &(head).stqh_first }
316 #define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
318 #define STAILQ_FIRST(head) ((head)->stqh_first)
320 #define STAILQ_FOREACH(var, head, field) \
321 for((var) = STAILQ_FIRST((head)); \
325 #define STAILQ_FOREACH_FROM(var, head, field) \
326 for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \
330 #define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
331 for ((var) = STAILQ_FIRST((head)); \
335 #define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \
336 for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \
340 #define STAILQ_INIT(head) do { \
341 STAILQ_FIRST((head)) = NULL; \
342 (head)->stqh_last = &STAILQ_FIRST((head)); \
345 #define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
347 (head)->stqh_last = &STAILQ_NEXT((elm), field); \
351 #define STAILQ_INSERT_HEAD(head, elm, field) do { \
352 if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
353 (head)->stqh_last = &STAILQ_NEXT((elm), field); \
354 STAILQ_FIRST((head)) = (elm); \
357 #define STAILQ_INSERT_TAIL(head, elm, field) do { \
359 *(head)->stqh_last = (elm); \
360 (head)->stqh_last = &STAILQ_NEXT((elm), field); \
363 #define STAILQ_LAST(head, type, field) \
364 (STAILQ_EMPTY((head)) ? NULL : \
365 __containerof((head)->stqh_last, \
370 #define STAILQ_REMOVE(head, elm, type, field) do { \
372 if (STAILQ_FIRST((head)) == (elm)) { \
373 STAILQ_REMOVE_HEAD((head), field); \
376 QUEUE_TYPEOF(type) *curelm = STAILQ_FIRST(head); \
379 STAILQ_REMOVE_AFTER(head, curelm, field); \
384 #define STAILQ_REMOVE_AFTER(head, elm, field) do { \
387 (head)->stqh_last = &STAILQ_NEXT((elm), field); \
390 #define STAILQ_REMOVE_HEAD(head, field) do { \
391 if ((STAILQ_FIRST((head)) = \
392 STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
393 (head)->stqh_last = &STAILQ_FIRST((head)); \
423 #define LIST_HEAD_INITIALIZER(head) \
443 #define QMD_LIST_CHECK_HEAD(head, field) do { \
444 if (LIST_FIRST((head)) != NULL && \
445 LIST_FIRST((head))->field.le_prev != \
446 &LIST_FIRST((head))) \
447 panic("Bad list head %p first->prev != head", (head)); \
462 #define QMD_LIST_CHECK_HEAD(head, field)
484 #define LIST_EMPTY(head) ((head)->lh_first == NULL)
486 #define LIST_FIRST(head) ((head)->lh_first)
488 #define LIST_FOREACH(var, head, field) \
489 for ((var) = LIST_FIRST((head)); \
493 #define LIST_FOREACH_FROM(var, head, field) \
494 for ((var) = ((var) ? (var) : LIST_FIRST((head))); \
498 #define LIST_FOREACH_SAFE(var, head, field, tvar) \
499 for ((var) = LIST_FIRST((head)); \
503 #define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \
504 for ((var) = ((var) ? (var) : LIST_FIRST((head))); \
508 #define LIST_INIT(head) do { \
509 LIST_FIRST((head)) = NULL; \
529 #define LIST_INSERT_HEAD(head, elm, field) do { \
530 QMD_LIST_CHECK_HEAD((head), field); \
531 if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \
532 LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
533 LIST_FIRST((head)) = (elm); \
534 (elm)->field.le_prev = &LIST_FIRST((head)); \
539 #define LIST_PREV(elm, head, type, field) \
540 ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \
584 #define TAILQ_HEAD_INITIALIZER(head) \
585 { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER }
605 #define QMD_TAILQ_CHECK_HEAD(head, field) do { \
606 if (!TAILQ_EMPTY(head) && \
607 TAILQ_FIRST((head))->field.tqe_prev != \
608 &TAILQ_FIRST((head))) \
609 panic("Bad tailq head %p first->prev != head", (head)); \
612 #define QMD_TAILQ_CHECK_TAIL(head, field) do { \
613 if (*(head)->tqh_last != NULL) \
614 panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \
629 #define QMD_TAILQ_CHECK_HEAD(head, field)
630 #define QMD_TAILQ_CHECK_TAIL(head, headname)
646 #define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
648 #define TAILQ_FIRST(head) ((head)->tqh_first)
650 #define TAILQ_FOREACH(var, head, field) \
651 for ((var) = TAILQ_FIRST((head)); \
655 #define TAILQ_FOREACH_FROM(var, head, field) \
656 for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \
660 #define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
661 for ((var) = TAILQ_FIRST((head)); \
665 #define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \
666 for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \
670 #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
671 for ((var) = TAILQ_LAST((head), headname); \
675 #define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \
676 for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \
680 #define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
681 for ((var) = TAILQ_LAST((head), headname); \
685 #define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \
686 for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \
690 #define TAILQ_INIT(head) do { \
691 TAILQ_FIRST((head)) = NULL; \
692 (head)->tqh_last = &TAILQ_FIRST((head)); \
693 QMD_TRACE_HEAD(head); \
696 #define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
702 (head)->tqh_last = &TAILQ_NEXT((elm), field); \
703 QMD_TRACE_HEAD(head); \
721 #define TAILQ_INSERT_HEAD(head, elm, field) do { \
722 QMD_TAILQ_CHECK_HEAD(head, field); \
723 if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \
724 TAILQ_FIRST((head))->field.tqe_prev = \
727 (head)->tqh_last = &TAILQ_NEXT((elm), field); \
728 TAILQ_FIRST((head)) = (elm); \
729 (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \
730 QMD_TRACE_HEAD(head); \
734 #define TAILQ_INSERT_TAIL(head, elm, field) do { \
735 QMD_TAILQ_CHECK_TAIL(head, field); \
737 (elm)->field.tqe_prev = (head)->tqh_last; \
738 *(head)->tqh_last = (elm); \
739 (head)->tqh_last = &TAILQ_NEXT((elm), field); \
740 QMD_TRACE_HEAD(head); \
744 #define TAILQ_LAST(head, headname) \
745 (*(((struct headname *)((head)->tqh_last))->tqh_last))
752 #define TAILQ_REMOVE(head, elm, field) do { \
761 (head)->tqh_last = (elm)->field.tqe_prev; \
762 QMD_TRACE_HEAD(head); \