Richard Henderson writes: > On 06/26/2017 05:33 AM, Lluís Vilanova wrote: >> 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.
> I think using QTAILQ in the common main loop is better than twisting the logic > so that the loop is unnaturally split into a subroutine. Ok, then I'll integrate that into the new series. Thanks, Lluis