On Thu, 17 Aug 2023 18:24:15 -0400 Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: > @@ -186,5 +186,7 @@ int traceeval_iterator_sort_custom(struct traceeval_iterator *iter, > traceeval_cmp_fn sort_fn, void *data); > int traceeval_iterator_next(struct traceeval_iterator *iter, > const union traceeval_data **keys); > +int traceeval_iterator_query(struct traceeval_iterator *iter, > + const union traceeval_data **results); > And while porting this to trace-flames.c, I also realize I need a traceeval_iterator_results_release() to match it. The traceeval_results_release() works, but it's nicer not to have to remember what teval you used. For example: while (traceeval_iterator_next(iter, &keys) > 0) { const struct traceeval_data *results; if (traceeval_iterator_query(iter, &results) < 1) continue; stack = results[0].pointer; traceeval_results_release(fstack->partial_stacks, results); Would be much nice with: while (traceeval_iterator_next(iter, &keys) > 0) { const struct traceeval_data *results; if (traceeval_iterator_query(iter, &results) < 1) continue; stack = results[0].pointer; traceeval_iterator_results_release(iter, results); -- Steve