Lines Matching refs:head
191 #define SLIST_HEAD_INITIALIZER(head) \ argument
202 #define SLIST_FIRST(head) ((head)->slh_first) argument
203 #define SLIST_END(head) NULL argument
204 #define SLIST_EMPTY(head) (SLIST_FIRST(head) == SLIST_END(head)) argument
207 #define SLIST_FOREACH(var, head, field) \ argument
208 for((var) = SLIST_FIRST(head); \
209 (var) != SLIST_END(head); \
212 #define SLIST_FOREACH_SAFE(var, head, field, tvar) \ argument
213 for ((var) = SLIST_FIRST(head); \
220 #define SLIST_INIT(head) { \ argument
221 SLIST_FIRST(head) = SLIST_END(head); \
229 #define SLIST_INSERT_HEAD(head, elm, field) do { \ argument
230 (elm)->field.sle_next = (head)->slh_first; \
231 (head)->slh_first = (elm); \
238 #define SLIST_REMOVE_HEAD(head, field) do { \ argument
239 (head)->slh_first = (head)->slh_first->field.sle_next; \
242 #define SLIST_REMOVE(head, elm, type, field) do { \ argument
243 if ((head)->slh_first == (elm)) { \
244 SLIST_REMOVE_HEAD((head), field); \
246 struct type *curelm = (head)->slh_first; \
264 #define LIST_HEAD_INITIALIZER(head) \ argument
276 #define LIST_FIRST(head) ((head)->lh_first) argument
277 #define LIST_END(head) NULL argument
278 #define LIST_EMPTY(head) (LIST_FIRST(head) == LIST_END(head)) argument
281 #define LIST_FOREACH(var, head, field) \ argument
282 for((var) = LIST_FIRST(head); \
283 (var)!= LIST_END(head); \
286 #define LIST_FOREACH_SAFE(var, head, field, tvar) \ argument
287 for ((var) = LIST_FIRST(head); \
294 #define LIST_INIT(head) do { \ argument
295 LIST_FIRST(head) = LIST_END(head); \
313 #define LIST_INSERT_HEAD(head, elm, field) do { \ argument
314 if (((elm)->field.le_next = (head)->lh_first) != NULL) \
315 (head)->lh_first->field.le_prev = &(elm)->field.le_next;\
316 (head)->lh_first = (elm); \
317 (elm)->field.le_prev = &(head)->lh_first; \
348 #define SIMPLEQ_HEAD_INITIALIZER(head) \ argument
349 { NULL, &(head).sqh_first }
359 #define SIMPLEQ_FIRST(head) ((head)->sqh_first) argument
360 #define SIMPLEQ_END(head) NULL argument
361 #define SIMPLEQ_EMPTY(head) (SIMPLEQ_FIRST(head) == SIMPLEQ_END(head)) argument
364 #define SIMPLEQ_FOREACH(var, head, field) \ argument
365 for((var) = SIMPLEQ_FIRST(head); \
366 (var) != SIMPLEQ_END(head); \
369 #define SIMPLEQ_FOREACH_SAFE(var, head, field, tvar) \ argument
370 for ((var) = SIMPLEQ_FIRST(head); \
377 #define SIMPLEQ_INIT(head) do { \ argument
378 (head)->sqh_first = NULL; \
379 (head)->sqh_last = &(head)->sqh_first; \
382 #define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \ argument
383 if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \
384 (head)->sqh_last = &(elm)->field.sqe_next; \
385 (head)->sqh_first = (elm); \
388 #define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \ argument
390 *(head)->sqh_last = (elm); \
391 (head)->sqh_last = &(elm)->field.sqe_next; \
394 #define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ argument
396 (head)->sqh_last = &(elm)->field.sqe_next; \
400 #define SIMPLEQ_REMOVE_HEAD(head, field) do { \ argument
401 if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \
402 (head)->sqh_last = &(head)->sqh_first; \
405 #define SIMPLEQ_REMOVE_AFTER(head, elm, field) do { \ argument
408 (head)->sqh_last = &(elm)->field.sqe_next; \
437 #define XSIMPLEQ_XOR(head, ptr) ((__typeof(ptr))((head)->sqx_cookie ^ \ argument
439 #define XSIMPLEQ_FIRST(head) XSIMPLEQ_XOR(head, ((head)->sqx_first)) argument
440 #define XSIMPLEQ_END(head) NULL argument
441 #define XSIMPLEQ_EMPTY(head) (XSIMPLEQ_FIRST(head) == XSIMPLEQ_END(head)) argument
442 #define XSIMPLEQ_NEXT(head, elm, field) XSIMPLEQ_XOR(head, ((elm)->field.sqx_next)) argument
445 #define XSIMPLEQ_FOREACH(var, head, field) \ argument
446 for ((var) = XSIMPLEQ_FIRST(head); \
447 (var) != XSIMPLEQ_END(head); \
448 (var) = XSIMPLEQ_NEXT(head, var, field))
450 #define XSIMPLEQ_FOREACH_SAFE(var, head, field, tvar) \ argument
451 for ((var) = XSIMPLEQ_FIRST(head); \
452 (var) && ((tvar) = XSIMPLEQ_NEXT(head, var, field), 1); \
458 #define XSIMPLEQ_INIT(head) do { \ argument
459 arc4random_buf(&(head)->sqx_cookie, sizeof((head)->sqx_cookie)); \
460 (head)->sqx_first = XSIMPLEQ_XOR(head, NULL); \
461 (head)->sqx_last = XSIMPLEQ_XOR(head, &(head)->sqx_first); \
464 #define XSIMPLEQ_INSERT_HEAD(head, elm, field) do { \ argument
465 if (((elm)->field.sqx_next = (head)->sqx_first) == \
466 XSIMPLEQ_XOR(head, NULL)) \
467 (head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
468 (head)->sqx_first = XSIMPLEQ_XOR(head, (elm)); \
471 #define XSIMPLEQ_INSERT_TAIL(head, elm, field) do { \ argument
472 (elm)->field.sqx_next = XSIMPLEQ_XOR(head, NULL); \
473 *(XSIMPLEQ_XOR(head, (head)->sqx_last)) = XSIMPLEQ_XOR(head, (elm)); \
474 (head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
477 #define XSIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ argument
479 XSIMPLEQ_XOR(head, NULL)) \
480 (head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
481 (listelm)->field.sqx_next = XSIMPLEQ_XOR(head, (elm)); \
484 #define XSIMPLEQ_REMOVE_HEAD(head, field) do { \ argument
485 if (((head)->sqx_first = XSIMPLEQ_XOR(head, \
486 (head)->sqx_first)->field.sqx_next) == XSIMPLEQ_XOR(head, NULL)) \
487 (head)->sqx_last = XSIMPLEQ_XOR(head, &(head)->sqx_first); \
490 #define XSIMPLEQ_REMOVE_AFTER(head, elm, field) do { \ argument
491 if (((elm)->field.sqx_next = XSIMPLEQ_XOR(head, \
493 == XSIMPLEQ_XOR(head, NULL)) \
494 (head)->sqx_last = \
495 XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
508 #define TAILQ_HEAD_INITIALIZER(head) \ argument
509 { NULL, &(head).tqh_first }
520 #define TAILQ_FIRST(head) ((head)->tqh_first) argument
521 #define TAILQ_END(head) NULL argument
523 #define TAILQ_LAST(head, headname) \ argument
524 (*(((struct headname *)((head)->tqh_last))->tqh_last))
528 #define TAILQ_EMPTY(head) \ argument
529 (TAILQ_FIRST(head) == TAILQ_END(head))
531 #define TAILQ_FOREACH(var, head, field) \ argument
532 for((var) = TAILQ_FIRST(head); \
533 (var) != TAILQ_END(head); \
536 #define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ argument
537 for ((var) = TAILQ_FIRST(head); \
538 (var) != TAILQ_END(head) && \
543 #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ argument
544 for((var) = TAILQ_LAST(head, headname); \
545 (var) != TAILQ_END(head); \
548 #define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ argument
549 for ((var) = TAILQ_LAST(head, headname); \
550 (var) != TAILQ_END(head) && \
557 #define TAILQ_INIT(head) do { \ argument
558 (head)->tqh_first = NULL; \
559 (head)->tqh_last = &(head)->tqh_first; \
562 #define TAILQ_INSERT_HEAD(head, elm, field) do { \ argument
563 if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \
564 (head)->tqh_first->field.tqe_prev = \
567 (head)->tqh_last = &(elm)->field.tqe_next; \
568 (head)->tqh_first = (elm); \
569 (elm)->field.tqe_prev = &(head)->tqh_first; \
572 #define TAILQ_INSERT_TAIL(head, elm, field) do { \ argument
574 (elm)->field.tqe_prev = (head)->tqh_last; \
575 *(head)->tqh_last = (elm); \
576 (head)->tqh_last = &(elm)->field.tqe_next; \
579 #define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ argument
584 (head)->tqh_last = &(elm)->field.tqe_next; \
596 #define TAILQ_REMOVE(head, elm, field) do { \ argument
601 (head)->tqh_last = (elm)->field.tqe_prev; \
607 #define TAILQ_REPLACE(head, elm, elm2, field) do { \ argument
612 (head)->tqh_last = &(elm2)->field.tqe_next; \