Lines Matching refs:field

187 #define	SLIST_NEXT(elm, field)	((elm)->field.sle_next)  argument
190 #define SLIST_FOREACH(var, head, field) \ argument
193 (var) = SLIST_NEXT((var), field))
195 #define SLIST_FOREACH_FROM(var, head, field) \ argument
198 (var) = SLIST_NEXT((var), field))
200 #define SLIST_FOREACH_SAFE(var, head, field, tvar) \ argument
203 ((tvar) = SLIST_NEXT((var), field), 1); \
206 #define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ argument
209 ((tvar) = SLIST_NEXT((var), field), 1); \
220 #define SLIST_CONCAT(head1, head2, type, field) do { \ argument
227 while (SLIST_NEXT(curelm, field) != SLIST_END(head1)) \
228 curelm = SLIST_NEXT(curelm, field); \
229 SLIST_NEXT(curelm, field) = SLIST_FIRST(head2); \
235 #define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ argument
236 SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \
237 SLIST_NEXT((slistelm), field) = (elm); \
241 #define SLIST_INSERT_HEAD(head, elm, field) do { \ argument
242 SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
247 #define SLIST_REMOVE_HEAD(head, field) do { \ argument
248 SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
252 #define SLIST_REMOVE_AFTER(slistelm, field) do { \ argument
253 SLIST_NEXT((slistelm), field) = \
254 SLIST_NEXT(SLIST_NEXT((slistelm), field), field); \
258 #define SLIST_REMOVE(head, elm, type, field) do { \ argument
259 QMD_SAVELINK(oldnext, SLIST_NEXT((elm), field)); \
261 SLIST_REMOVE_HEAD((head), field); \
265 while (SLIST_NEXT(curelm, field) != (elm)) \
266 curelm = SLIST_NEXT(curelm, field); \
267 SLIST_REMOVE_AFTER(curelm, field); \
312 #define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) argument
315 #define STAILQ_FOREACH(var, head, field) \ argument
318 (var) = STAILQ_NEXT((var), field))
320 #define STAILQ_FOREACH_FROM(var, head, field) \ argument
324 (var) = STAILQ_NEXT((var), field))
326 #define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ argument
329 ((tvar) = STAILQ_NEXT((var), field), 1); \
332 #define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ argument
336 ((tvar) = STAILQ_NEXT((var), field), 1); \
357 #define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ argument
358 if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
359 (head)->stqh_last = &STAILQ_NEXT((elm), field); \
360 STAILQ_NEXT((tqelm), field) = (elm); \
364 #define STAILQ_INSERT_HEAD(head, elm, field) do { \ argument
365 if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
366 (head)->stqh_last = &STAILQ_NEXT((elm), field); \
371 #define STAILQ_INSERT_TAIL(head, elm, field) do { \ argument
372 STAILQ_NEXT((elm), field) = NULL; \
374 (head)->stqh_last = &STAILQ_NEXT((elm), field); \
378 #define STAILQ_LAST(head, type, field) \ argument
381 QUEUE_TYPEOF(type), field.stqe_next))
383 #define STAILQ_REMOVE_HEAD(head, field) do { \ argument
385 STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
390 #define STAILQ_REMOVE_AFTER(head, elm, field) do { \ argument
391 if ((STAILQ_NEXT(elm, field) = \
392 STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \
393 (head)->stqh_last = &STAILQ_NEXT((elm), field); \
397 #define STAILQ_REMOVE(head, elm, type, field) do { \ argument
398 QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \
400 STAILQ_REMOVE_HEAD((head), field); \
403 while (STAILQ_NEXT(curelm, field) != (elm)) \
404 curelm = STAILQ_NEXT(curelm, field); \
405 STAILQ_REMOVE_AFTER(head, curelm, field); \
459 #define LIST_NEXT(elm, field) ((elm)->field.le_next) argument
460 #define LIST_PREV(elm, head, type, field) \ argument
461 ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \
462 __containerof((elm)->field.le_prev, type, field.le_next))
464 #define LIST_FOREACH(var, head, field) \ argument
467 (var) = LIST_NEXT((var), field))
469 #define LIST_FOREACH_FROM(var, head, field) \ argument
472 (var) = LIST_NEXT((var), field))
474 #define LIST_FOREACH_SAFE(var, head, field, tvar) \ argument
477 ((tvar) = LIST_NEXT((var), field), 1); \
480 #define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ argument
483 ((tvar) = LIST_NEXT((var), field), 1); \
490 #define QUEUEDEBUG_LIST_INSERT_HEAD(head, elm, field) \ argument
492 (head)->lh_first->field.le_prev != &(head)->lh_first) \
494 #define QUEUEDEBUG_LIST_OP(elm, field) \ argument
495 if ((elm)->field.le_next && \
496 (elm)->field.le_next->field.le_prev != \
497 &(elm)->field.le_next) \
499 if (*(elm)->field.le_prev != (elm)) \
501 #define QUEUEDEBUG_LIST_POSTREMOVE(elm, field) \ argument
502 (elm)->field.le_next = (void *)1L; \
503 (elm)->field.le_prev = (void *)1L;
505 #define QUEUEDEBUG_LIST_INSERT_HEAD(head, elm, field) argument
506 #define QUEUEDEBUG_LIST_OP(elm, field) argument
507 #define QUEUEDEBUG_LIST_POSTREMOVE(elm, field) argument
515 #define LIST_INSERT_AFTER(listelm, elm, field) do { \ argument
516 QUEUEDEBUG_LIST_OP((listelm), field) \
517 if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\
518 LIST_NEXT((listelm), field)->field.le_prev = \
519 &LIST_NEXT((elm), field); \
520 LIST_NEXT((listelm), field) = (elm); \
521 (elm)->field.le_prev = &LIST_NEXT((listelm), field); \
525 #define LIST_INSERT_BEFORE(listelm, elm, field) do { \ argument
526 QUEUEDEBUG_LIST_OP((listelm), field) \
527 (elm)->field.le_prev = (listelm)->field.le_prev; \
528 LIST_NEXT((elm), field) = (listelm); \
529 *(listelm)->field.le_prev = (elm); \
530 (listelm)->field.le_prev = &LIST_NEXT((elm), field); \
534 #define LIST_INSERT_HEAD(head, elm, field) do { \ argument
535 QUEUEDEBUG_LIST_INSERT_HEAD((head), (elm), field) \
536 if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \
537 LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
539 (elm)->field.le_prev = &LIST_FIRST((head)); \
543 #define LIST_REMOVE(elm, field) do { \ argument
544 QUEUEDEBUG_LIST_OP((elm), field) \
545 if (LIST_NEXT((elm), field) != NULL) \
546 LIST_NEXT((elm), field)->field.le_prev = \
547 (elm)->field.le_prev; \
548 *(elm)->field.le_prev = LIST_NEXT((elm), field); \
549 QUEUEDEBUG_LIST_POSTREMOVE((elm), field) \
553 #define LIST_SWAP(head1, head2, type, field) do { \ argument
558 swap_tmp->field.le_prev = &LIST_FIRST((head1)); \
560 swap_tmp->field.le_prev = &LIST_FIRST((head2)); \
598 #define SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next) argument
600 #define SIMPLEQ_FOREACH(var, head, field) \ argument
603 (var) = SIMPLEQ_NEXT((var), field))
605 #define SIMPLEQ_FOREACH_FROM(var, head, field) \ argument
609 (var) = SIMPLEQ_NEXT((var), field))
611 #define SIMPLEQ_FOREACH_SAFE(var, head, field, tvar) \ argument
614 ((tvar) = SIMPLEQ_NEXT((var), field), 1); \
617 #define SIMPLEQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ argument
621 ((tvar) = SIMPLEQ_NEXT((var), field), 1); \
633 #define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \ argument
634 if ((SIMPLEQ_NEXT((elm), field) = SIMPLEQ_FIRST((head))) == NULL)\
635 (head)->sqh_last = &SIMPLEQ_NEXT((elm), field); \
640 #define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \ argument
641 SIMPLEQ_NEXT((elm), field) = NULL; \
643 (head)->sqh_last = &SIMPLEQ_NEXT((elm), field); \
647 #define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ argument
648 if ((SIMPLEQ_NEXT((elm), field) = SIMPLEQ_NEXT((listelm), field)) == \
650 (head)->sqh_last = &SIMPLEQ_NEXT((elm), field); \
651 SIMPLEQ_NEXT((listelm), field) = (elm); \
655 #define SIMPLEQ_REMOVE_HEAD(head, field) do { \ argument
657 SIMPLEQ_NEXT(SIMPLEQ_FIRST((head)), field)) == NULL) \
662 #define SIMPLEQ_REMOVE_AFTER(head, elm, field) do { \ argument
664 SIMPLEQ_NEXT(SIMPLEQ_NEXT((elm), field), field)) == NULL) \
665 (head)->sqh_last = &SIMPLEQ_NEXT((elm), field); \
669 #define SIMPLEQ_REMOVE(head, elm, type, field) do { \ argument
671 SIMPLEQ_REMOVE_HEAD((head), field); \
674 while (SIMPLEQ_NEXT(curelm, field) != (elm)) \
675 curelm = SIMPLEQ_NEXT(curelm, field); \
676 SIMPLEQ_REMOVE_AFTER((head), curelm, field); \
690 #define SIMPLEQ_LAST(head, type, field) \ argument
694 ((char *)((head)->sqh_last) - offsetof(QUEUE_TYPEOF(type), field))))
735 #define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) argument
738 #define TAILQ_PREV(elm, headname, field) \ argument
739 (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
743 #define TAILQ_FOREACH(var, head, field) \ argument
746 (var) = TAILQ_NEXT((var), field))
748 #define TAILQ_FOREACH_FROM(var, head, field) \ argument
752 (var) = TAILQ_NEXT((var), field))
754 #define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ argument
757 ((tvar) = TAILQ_NEXT((var), field), 1); \
760 #define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ argument
764 ((tvar) = TAILQ_NEXT((var), field), 1); \
767 #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ argument
770 (var) = TAILQ_PREV((var), headname, field))
772 #define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \ argument
776 (var) = TAILQ_PREV((var), headname, field))
778 #define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ argument
781 ((tvar) = TAILQ_PREV((var), headname, field), 1); \
784 #define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar)\ argument
788 ((tvar) = TAILQ_PREV((var), headname, field), 1); \
795 #define QUEUEDEBUG_TAILQ_INSERT_HEAD(head, elm, field) \ argument
797 (head)->tqh_first->field.tqe_prev != &(head)->tqh_first) \
800 #define QUEUEDEBUG_TAILQ_INSERT_TAIL(head, elm, field) \ argument
804 #define QUEUEDEBUG_TAILQ_OP(elm, field) \ argument
805 if ((elm)->field.tqe_next && \
806 (elm)->field.tqe_next->field.tqe_prev != \
807 &(elm)->field.tqe_next) \
810 if (*(elm)->field.tqe_prev != (elm)) \
813 #define QUEUEDEBUG_TAILQ_PREREMOVE(head, elm, field) \ argument
814 if ((elm)->field.tqe_next == NULL && \
815 (head)->tqh_last != &(elm)->field.tqe_next) \
818 #define QUEUEDEBUG_TAILQ_POSTREMOVE(elm, field) \ argument
819 (elm)->field.tqe_next = (void *)1L; \
820 (elm)->field.tqe_prev = (void *)1L;
822 #define QUEUEDEBUG_TAILQ_INSERT_HEAD(head, elm, field) argument
823 #define QUEUEDEBUG_TAILQ_INSERT_TAIL(head, elm, field) argument
824 #define QUEUEDEBUG_TAILQ_OP(elm, field) argument
825 #define QUEUEDEBUG_TAILQ_PREREMOVE(head, elm, field) argument
826 #define QUEUEDEBUG_TAILQ_POSTREMOVE(elm, field) argument
835 #define TAILQ_INSERT_HEAD(head, elm, field) do { \ argument
836 QUEUEDEBUG_TAILQ_INSERT_HEAD((head), (elm), field) \
837 if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \
838 TAILQ_FIRST((head))->field.tqe_prev = \
839 &TAILQ_NEXT((elm), field); \
841 (head)->tqh_last = &TAILQ_NEXT((elm), field); \
843 (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \
847 #define TAILQ_INSERT_TAIL(head, elm, field) do { \ argument
848 QUEUEDEBUG_TAILQ_INSERT_TAIL((head), (elm), field) \
849 TAILQ_NEXT((elm), field) = NULL; \
850 (elm)->field.tqe_prev = (head)->tqh_last; \
852 (head)->tqh_last = &TAILQ_NEXT((elm), field); \
856 #define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ argument
857 QUEUEDEBUG_TAILQ_OP((listelm), field) \
858 if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\
859 TAILQ_NEXT((elm), field)->field.tqe_prev = \
860 &TAILQ_NEXT((elm), field); \
862 (head)->tqh_last = &TAILQ_NEXT((elm), field); \
863 TAILQ_NEXT((listelm), field) = (elm); \
864 (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \
868 #define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ argument
869 QUEUEDEBUG_TAILQ_OP((listelm), field) \
870 (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
871 TAILQ_NEXT((elm), field) = (listelm); \
872 *(listelm)->field.tqe_prev = (elm); \
873 (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \
877 #define TAILQ_REMOVE(head, elm, field) do { \ argument
878 QUEUEDEBUG_TAILQ_PREREMOVE((head), (elm), field) \
879 QUEUEDEBUG_TAILQ_OP((elm), field) \
880 if ((TAILQ_NEXT((elm), field)) != NULL) \
881 TAILQ_NEXT((elm), field)->field.tqe_prev = \
882 (elm)->field.tqe_prev; \
884 (head)->tqh_last = (elm)->field.tqe_prev; \
885 *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \
886 QUEUEDEBUG_TAILQ_POSTREMOVE((elm), field); \
890 #define TAILQ_SWAP(head1, head2, type, field) do { \ argument
898 swap_first->field.tqe_prev = &TAILQ_FIRST((head1)); \
902 swap_first->field.tqe_prev = &TAILQ_FIRST((head2)); \
934 #define CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next) argument
935 #define CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev) argument
937 #define CIRCLEQ_LOOP_NEXT(head, elm, field) \ argument
938 (((elm)->field.cqe_next == (void *)(head)) \
940 : (elm->field.cqe_next))
941 #define CIRCLEQ_LOOP_PREV(head, elm, field) \ argument
942 (((elm)->field.cqe_prev == (void *)(head)) \
944 : (elm->field.cqe_prev))
946 #define CIRCLEQ_FOREACH(var, head, field) \ argument
949 (var) = CIRCLEQ_NEXT((var), field))
951 #define CIRCLEQ_FOREACH_REVERSE(var, head, field) \ argument
954 (var) = CIRCLEQ_PREV((var), field))
965 #define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ argument
966 (elm)->field.cqe_next = (listelm)->field.cqe_next; \
967 (elm)->field.cqe_prev = (listelm); \
968 if ((listelm)->field.cqe_next == (void *)(head)) \
971 (listelm)->field.cqe_next->field.cqe_prev = (elm); \
972 (listelm)->field.cqe_next = (elm); \
976 #define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \ argument
977 (elm)->field.cqe_next = (listelm); \
978 (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \
979 if ((listelm)->field.cqe_prev == (void *)(head)) \
982 (listelm)->field.cqe_prev->field.cqe_next = (elm); \
983 (listelm)->field.cqe_prev = (elm); \
987 #define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \ argument
988 (elm)->field.cqe_next = (head)->cqh_first; \
989 (elm)->field.cqe_prev = (void *)(head); \
993 (head)->cqh_first->field.cqe_prev = (elm); \
998 #define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \ argument
999 (elm)->field.cqe_next = (void *)(head); \
1000 (elm)->field.cqe_prev = (head)->cqh_last; \
1004 (head)->cqh_last->field.cqe_next = (elm); \
1009 #define CIRCLEQ_REMOVE(head, elm, field) do { \ argument
1010 if ((elm)->field.cqe_next == (void *)(head)) \
1011 (head)->cqh_last = (elm)->field.cqe_prev; \
1013 (elm)->field.cqe_next->field.cqe_prev = \
1014 (elm)->field.cqe_prev; \
1015 if ((elm)->field.cqe_prev == (void *)(head)) \
1016 (head)->cqh_first = (elm)->field.cqe_next; \
1018 (elm)->field.cqe_prev->field.cqe_next = \
1019 (elm)->field.cqe_next; \