> From: Steven Rostedt <rostedt@xxxxxxxxxxx> > Sent: Tuesday, March 28, 2023 5:51 AM > [...] > Subject: Re: [PATCH 1/1] Reduce synchronize_rcu() waiting time > > On Mon, 27 Mar 2023 17:48:44 -0400 > Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: > > > struct my_info { > > /* store state info here */ > > }; > > > > int main(...) { > > struct tracecmd_input *handle; > > struct my_info info; > > char *file = argv[1]; > > > > handle = tracecmd_open(file); > > > > tracecmd_follow_event(handle, "rcu", "rcu_batch_start", > > batch_start, &info); > > > > tracecmd_follow_event(handle, "rcu", "rcu_batch_end", > > batch_end, &info); > > > > tracecmd_follow_event(handle, "rcu", "rcu_invoke_callback", > > invoke_callback, &info); > > > > tracecmd_iterate_events(handle, NULL, 0, NULL, NULL); > > > > tracecmd_close(handle); > > } > > BTW, none of this code was actually tested, so I may have some syntax > errors. I just did this straight from memory, as it's so easy ;-) Thank you Steven for sharing the libtracecmd-based and libtraceevent-based methods for trace parsing. Good to know this. This should simplify the code to parse trace logs. Pretty useful for me/us ;-) - Qiuxu > > -- Steve