On Wed, 28 Aug 2019 14:51:49 +0800
Bing Zhao <bi...@mellanox.com> wrote:

> +
> +/* To enable the deletion when iterating the list */
> +#ifndef LIST_FOREACH_SAFE
> +#define LIST_FOREACH_SAFE(var, head, field, tvar)                    \
> +     for ((var) = ((head)->lh_first);                                \
> +             (var) && ((tvar) = ((var)->field.le_next), 1);          \
> +             (var) = (tvar))
> +#endif
> +
> +/* To move the whole list from one head to another */
> +#define LIST_MOVE_TO_NEW_HEAD(new, old, field) do {                  \
> +     (new)->lh_first = (old)->lh_first;                              \
> +     if (((new)->lh_first) != NULL)                                  \
> +             (new)->lh_first->field.le_prev = &(new)->lh_first;      \
> +} while (/*CONSTCOND*/0)
> +

Why not use BSD style lists, rather than reinventing it here.

Reply via email to