Richard Henderson writes: > On 06/12/2017 07:54 AM, Lluís Vilanova wrote: >> Adds macro QTAILQ_FOREACH_CONTINUE to support incremental list >> traversal. >> >> Signed-off-by: Lluís Vilanova <vilan...@ac.upc.edu> >> --- >> include/qemu/queue.h | 12 ++++++++++++ >> 1 file changed, 12 insertions(+) >> >> diff --git a/include/qemu/queue.h b/include/qemu/queue.h >> index 35292c3155..eb2bf9cb1c 100644 >> --- a/include/qemu/queue.h >> +++ b/include/qemu/queue.h >> @@ -415,6 +415,18 @@ struct { >> \ >> (var); \ >> (var) = ((var)->field.tqe_next)) >> +/** >> + * QTAILQ_FOREACH_CONTINUE: >> + * @var: Variable to resume iteration from. >> + * @field: Field in @var holding a QTAILQ_ENTRY for this queue. >> + * >> + * Resumes iteration on a queue from the element in @var. >> + */ >> +#define QTAILQ_FOREACH_CONTINUE(var, field) \ >> + for ((var) = ((var)->field.tqe_next); \ >> + (var); \ >> + (var) = ((var)->field.tqe_next)) >> + >> #define QTAILQ_FOREACH_SAFE(var, head, field, next_var) \ >> for ((var) = ((head)->tqh_first); \ >> (var) && ((next_var) = ((var)->field.tqe_next), 1); \ >> >>
> I still say this isn't required if the breakpoint loop is better structured. I can embed the use of QTAILQ into translate-block.c, but I wanted to keep the implementation of breakpoint lists hidden behind the cpu_breakpoint API. Thanks, Lluis