Re: [PATCH] libtracecmd: Fix continuing in tracecmd_iterate_events_reverse()
Steven Rostedt <[email protected]> Mon, 24 Nov 2025 11:49:25 -0500
| Newsgroups | org.kernel.vger.linux-trace-devel |
|---|---|
| Message-ID | <[email protected]> |
On Mon, 24 Nov 2025 09:10:06 +0000 "MOESSBAUER, Felix" <[email protected]> wrote: > > + /* > > + * If the callback exited out early, then set the cursor back > > + * to the location of that record so that if this gets called > > + * again with cont = true, it will continue where it left off. > > + */ > > + if (page_offset) { > > + /* Set the record to the previous record that was read */ > > + record = tracecmd_read_at(handle, page_offset - 4, NULL); > > Hi, > > where does the magic "- 4" come from? It's just to get to the previous record. - 1 would likely work, but as I know all events are aligned by a minimum of 4 bytes I used that. I probably should add a comment about that. > > > + tracecmd_free_record(record); > > I still don't get why this fixes the issue. Does tracecmd_read_at has a > side-effect to set the the internal cursor? If so, it IMHO would help > to document this side effect in tracecmd_read_at(). Hmm, I guess I should. Yes, that's one of the things I consider "obvious", but "obvious" is seldom obvious ;-) Pretty much all tracecmd_read* functions set the internal cursor unless stated otherwise. -- Steve