mirror of
https://github.com/opnsense/src.git
synced 2026-02-18 18:20:26 -05:00
ck_queue: add CK_*_FOREACH_FROM
This is a variant of CK_*_FOREACH from FreeBSD queue.h which starts iteration at the specified item. If the item pointer is NULL, iteration starts from the beginning of the list. Upstream commit 74366be35a6f4635f248a3c62d2d23245a4eb0f4. MFC after: 2 weeks Sponsored by: Klara, Inc.
This commit is contained in:
parent
b739bc9860
commit
6f48a4acbe
1 changed files with 15 additions and 0 deletions
|
|
@ -153,6 +153,11 @@ struct { \
|
|||
(var); \
|
||||
(var) = CK_SLIST_NEXT((var), field))
|
||||
|
||||
#define CK_SLIST_FOREACH_FROM(var, head, field) \
|
||||
for ((var) = ((var) != NULL ? (var) : CK_SLIST_FIRST((head))); \
|
||||
(var); \
|
||||
(var) = CK_SLIST_NEXT((var), field))
|
||||
|
||||
#define CK_SLIST_FOREACH_SAFE(var, head, field, tvar) \
|
||||
for ((var) = CK_SLIST_FIRST(head); \
|
||||
(var) && ((tvar) = CK_SLIST_NEXT(var, field), 1); \
|
||||
|
|
@ -262,6 +267,11 @@ struct { \
|
|||
(var); \
|
||||
(var) = CK_STAILQ_NEXT((var), field))
|
||||
|
||||
#define CK_STAILQ_FOREACH_FROM(var, head, field) \
|
||||
for ((var) = ((var) != NULL ? (var) : CK_STAILQ_FIRST((head))); \
|
||||
(var); \
|
||||
(var) = CK_STAILQ_NEXT((var), field))
|
||||
|
||||
#define CK_STAILQ_FOREACH_SAFE(var, head, field, tvar) \
|
||||
for ((var) = CK_STAILQ_FIRST((head)); \
|
||||
(var) && ((tvar) = \
|
||||
|
|
@ -374,6 +384,11 @@ struct { \
|
|||
(var); \
|
||||
(var) = CK_LIST_NEXT((var), field))
|
||||
|
||||
#define CK_LIST_FOREACH_FROM(var, head, field) \
|
||||
for ((var) = ((var) != NULL ? (var) : CK_LIST_FIRST((head))); \
|
||||
(var); \
|
||||
(var) = CK_LIST_NEXT((var), field))
|
||||
|
||||
#define CK_LIST_FOREACH_SAFE(var, head, field, tvar) \
|
||||
for ((var) = CK_LIST_FIRST((head)); \
|
||||
(var) && ((tvar) = CK_LIST_NEXT((var), field), 1); \
|
||||
|
|
|
|||
Loading…
Reference in a new issue