On Thu, 11 Nov 2021 17:11:07 +0200 "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@xxxxxxxxx> wrote: > Trace file version 7 is based on sections. Added an internal sections > database and new helper functions to add, read, open and close file > sections. > > Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@xxxxxxxxx> > --- > lib/trace-cmd/trace-input.c | 69 +++++++++++++++++++++++++++++++++++++ > 1 file changed, 69 insertions(+) > > diff --git a/lib/trace-cmd/trace-input.c b/lib/trace-cmd/trace-input.c > index 0375afba..cc292236 100644 > --- a/lib/trace-cmd/trace-input.c > +++ b/lib/trace-cmd/trace-input.c > @@ -115,6 +115,14 @@ struct tsc2nsec { > unsigned long long offset; > }; > > +struct file_section { > + int id; There's a 4 byte hole between id and section_offset. Might as well move that down to flags. > + unsigned long long section_offset; > + unsigned long long data_offset; > + enum tracecmd_section_flags flags; Again, unless "flags" holds a single enum, it cannot be of type enum. Just because flags are an enum, does not mean the use of them have to be an enum. In many cases, enums to define flags have no name. They should be anonymous enums. -- Steve > + struct file_section *next; > +}; > + > struct tracecmd_input { > struct tep_handle *pevent; > unsigned long file_state; > @@ -154,6 +162,7 @@ struct tracecmd_input { > struct hook_list *hooks; > struct pid_addr_maps *pid_maps; > /* file information */ > + struct file_section *sections; > size_t header_files_start; > size_t ftrace_files_start; > size_t event_files_start;