Add TAILQ iterator that allows to safely remove elements while walking
the list.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5798
c046a42c-6fe2-441c-8c8c-
71466251a162
(var); \\r
(var) = ((var)->field.tqe_next))\r
\r
+#define TAILQ_FOREACH_SAFE(var, head, field, next_var) \\r
+ for ((var) = ((head)->tqh_first); \\r
+ (var) && ((next_var) = ((var)->field.tqe_next), 1); \\r
+ (var) = (next_var))\r
+\r
#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \\r
for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \\r
(var); \\r