Home | History | Annotate | Download | only in sys

Lines Matching refs:head

43  * head of the list.  Elements being removed from the head of the list
53 * or after an existing element or at the head of the list. A list
56 * A simple queue is headed by a pair of pointers, one the head of the
59 * head of the list. New elements can be added to the list after
60 * an existing element, at the head of the list, or at the end of the
63 * A tail queue is headed by a pair of pointers, one to the head of the
67 * after an existing element, at the head of the list, or at the end of
70 * A circle queue is headed by a pair of pointers, one to the head of the
74 * an existing element, at the head of the list, or at the end of the list.
89 #define LIST_HEAD_INITIALIZER(head) \
101 #define LIST_INIT(head) do { \
102 (head)->lh_first = NULL; \
120 #define LIST_INSERT_HEAD(head, elm, field) do { \
121 if (((elm)->field.le_next = (head)->lh_first) != NULL) \
122 (head)->lh_first->field.le_prev = &(elm)->field.le_next;\
123 (head)->lh_first = (elm); \
124 (elm)->field.le_prev = &(head)->lh_first; \
134 #define LIST_FOREACH(var, head, field) \
135 for ((var) = ((head)->lh_first); \
142 #define LIST_EMPTY(head) ((head)->lh_first == NULL)
143 #define LIST_FIRST(head) ((head)->lh_first)
155 #define SLIST_HEAD_INITIALIZER(head) \
166 #define SLIST_INIT(head) do { \
167 (head)->slh_first = NULL; \
175 #define SLIST_INSERT_HEAD(head, elm, field) do { \
176 (elm)->field.sle_next = (head)->slh_first; \
177 (head)->slh_first = (elm); \
180 #define SLIST_REMOVE_HEAD(head, field) do { \
181 (head)->slh_first = (head)->slh_first->field.sle_next; \
184 #define SLIST_REMOVE(head, elm, type, field) do { \
185 if ((head)->slh_first == (elm)) { \
186 SLIST_REMOVE_HEAD((head), field); \
189 struct type *curelm = (head)->slh_first; \
197 #define SLIST_FOREACH(var, head, field) \
198 for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
203 #define SLIST_EMPTY(head) ((head)->slh_first == NULL)
204 #define SLIST_FIRST(head) ((head)->slh_first)
217 #define STAILQ_HEAD_INITIALIZER(head) \
218 { NULL, &(head).stqh_first }
228 #define STAILQ_INIT(head) do { \
229 (head)->stqh_first = NULL; \
230 (head)->stqh_last = &(head)->stqh_first; \
233 #define STAILQ_INSERT_HEAD(head, elm, field) do { \
234 if (((elm)->field.stqe_next = (head)->stqh_first) == NULL) \
235 (head)->stqh_last = &(elm)->field.stqe_next; \
236 (head)->stqh_first = (elm); \
239 #define STAILQ_INSERT_TAIL(head, elm, field) do { \
241 *(head)->stqh_last = (elm); \
242 (head)->stqh_last = &(elm)->field.stqe_next; \
245 #define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
247 (head)->stqh_last = &(elm)->field.stqe_next; \
251 #define STAILQ_REMOVE_HEAD(head, field) do { \
252 if (((head)->stqh_first = (head)->stqh_first->field.stqe_next) == NULL) \
253 (head)->stqh_last = &(head)->stqh_first; \
256 #define STAILQ_REMOVE(head, elm, type, field) do { \
257 if ((head)->stqh_first == (elm)) { \
258 STAILQ_REMOVE_HEAD((head), field); \
260 struct type *curelm = (head)->stqh_first; \
265 (head)->stqh_last = &(curelm)->field.stqe_next; \
269 #define STAILQ_FOREACH(var, head, field) \
270 for ((var) = ((head)->stqh_first); \
277 #define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
278 #define STAILQ_FIRST(head) ((head)->stqh_first)
291 #define SIMPLEQ_HEAD_INITIALIZER(head) \
292 { NULL, &(head).sqh_first }
302 #define SIMPLEQ_INIT(head) do { \
303 (head)->sqh_first = NULL; \
304 (head)->sqh_last = &(head)->sqh_first; \
307 #define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \
308 if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \
309 (head)->sqh_last = &(elm)->field.sqe_next; \
310 (head)->sqh_first = (elm); \
313 #define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \
315 *(head)->sqh_last = (elm); \
316 (head)->sqh_last = &(elm)->field.sqe_next; \
319 #define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
321 (head)->sqh_last = &(elm)->field.sqe_next; \
325 #define SIMPLEQ_REMOVE_HEAD(head, field) do { \
326 if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \
327 (head)->sqh_last = &(head)->sqh_first; \
330 #define SIMPLEQ_REMOVE(head, elm, type, field) do { \
331 if ((head)->sqh_first == (elm)) { \
332 SIMPLEQ_REMOVE_HEAD((head), field); \
334 struct type *curelm = (head)->sqh_first; \
339 (head)->sqh_last = &(curelm)->field.sqe_next; \
343 #define SIMPLEQ_FOREACH(var, head, field) \
344 for ((var) = ((head)->sqh_first); \
351 #define SIMPLEQ_EMPTY(head) ((head)->sqh_first == NULL)
352 #define SIMPLEQ_FIRST(head) ((head)->sqh_first)
366 #define TAILQ_HEAD_INITIALIZER(head) \
367 { NULL, &(head).tqh_first }
379 #define TAILQ_INIT(head) do { \
380 (head)->tqh_first = NULL; \
381 (head)->tqh_last = &(head)->tqh_first; \
384 #define TAILQ_INSERT_HEAD(head, elm, field) do { \
385 if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \
386 (head)->tqh_first->field.tqe_prev = \
389 (head)->tqh_last = &(elm)->field.tqe_next; \
390 (head)->tqh_first = (elm); \
391 (elm)->field.tqe_prev = &(head)->tqh_first; \
394 #define TAILQ_INSERT_TAIL(head, elm, field) do { \
396 (elm)->field.tqe_prev = (head)->tqh_last; \
397 *(head)->tqh_last = (elm); \
398 (head)->tqh_last = &(elm)->field.tqe_next; \
401 #define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
406 (head)->tqh_last = &(elm)->field.tqe_next; \
418 #define TAILQ_REMOVE(head, elm, field) do { \
423 (head)->tqh_last = (elm)->field.tqe_prev; \
427 #define TAILQ_FOREACH(var, head, field) \
428 for ((var) = ((head)->tqh_first); \
432 #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
433 for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \
440 #define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
441 #define TAILQ_FIRST(head) ((head)->tqh_first)
444 #define TAILQ_LAST(head, headname) \
445 (*(((struct headname *)((head)->tqh_last))->tqh_last))
459 #define CIRCLEQ_HEAD_INITIALIZER(head) \
460 { (void *)&head, (void *)&head }
471 #define CIRCLEQ_INIT(head) do { \
472 (head)->cqh_first = (void *)(head); \
473 (head)->cqh_last = (void *)(head); \
476 #define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
479 if ((listelm)->field.cqe_next == (void *)(head)) \
480 (head)->cqh_last = (elm); \
486 #define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \
489 if ((listelm)->field.cqe_prev == (void *)(head)) \
490 (head)->cqh_first = (elm); \
496 #define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \
497 (elm)->field.cqe_next = (head)->cqh_first; \
498 (elm)->field.cqe_prev = (void *)(head); \
499 if ((head)->cqh_last == (void *)(head)) \
500 (head)->cqh_last = (elm); \
502 (head)->cqh_first->field.cqe_prev = (elm); \
503 (head)->cqh_first = (elm); \
506 #define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \
507 (elm)->field.cqe_next = (void *)(head); \
508 (elm)->field.cqe_prev = (head)->cqh_last; \
509 if ((head)->cqh_first == (void *)(head)) \
510 (head)->cqh_first = (elm); \
512 (head)->cqh_last->field.cqe_next = (elm); \
513 (head)->cqh_last = (elm); \
516 #define CIRCLEQ_REMOVE(head, elm, field) do { \
517 if ((elm)->field.cqe_next == (void *)(head)) \
518 (head)->cqh_last = (elm)->field.cqe_prev; \
522 if ((elm)->field.cqe_prev == (void *)(head)) \
523 (head)->cqh_first = (elm)->field.cqe_next; \
529 #define CIRCLEQ_FOREACH(var, head, field) \
530 for ((var) = ((head)->cqh_first); \
531 (var) != (const void *)(head); \
534 #define CIRCLEQ_FOREACH_REVERSE(var, head, field) \
535 for ((var) = ((head)->cqh_last); \
536 (var) != (const void *)(head); \
542 #define CIRCLEQ_EMPTY(head) ((head)->cqh_first == (void *)(head))
543 #define CIRCLEQ_FIRST(head) ((head)->cqh_first)
544 #define CIRCLEQ_LAST(head) ((head)->cqh_last)
548 #define CIRCLEQ_LOOP_NEXT(head, elm, field) \
549 (((elm)->field.cqe_next == (void *)(head)) \
550 ? ((head)->cqh_first) \
552 #define CIRCLEQ_LOOP_PREV(head, elm, field) \
553 (((elm)->field.cqe_prev == (void *)(head)) \
554 ? ((head)->cqh_last) \