Em Thu, Jul 02, 2020 at 02:53:45PM -0400, Steven Rostedt escreveu: > From: "Steven Rostedt (Red Hat)" <rostedt@xxxxxxxxxxx> > > Add the functions kbuffer_subbuf_timestamp() and kbuffer_ptr_delta() to get > the timing data stored in the ring buffer that is used to produced the time > stamps of the records. > > This is useful for tools like trace-cmd to be able to display the content of > the read data to understand why the records show the time stamps that they > do. > > Link: http://lore.kernel.org/linux-trace-devel/20200625100516.365338-2-tz.stoyanov@xxxxxxxxx > > Signed-off-by: Steven Rostedt <rostedt@xxxxxxxxxxx> > [ Ported from trace-cmd.git ] > Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@xxxxxxxxx> > Signed-off-by: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx> Humm, is that intentional, i.e. two signed-off-by you? - Arnaldo > --- > tools/lib/traceevent/kbuffer-parse.c | 28 ++++++++++++++++++++++++++++ > tools/lib/traceevent/kbuffer.h | 2 ++ > 2 files changed, 30 insertions(+) > > diff --git a/tools/lib/traceevent/kbuffer-parse.c b/tools/lib/traceevent/kbuffer-parse.c > index 27f3b07fdae8..583db99aee94 100644 > --- a/tools/lib/traceevent/kbuffer-parse.c > +++ b/tools/lib/traceevent/kbuffer-parse.c > @@ -546,6 +546,34 @@ int kbuffer_load_subbuffer(struct kbuffer *kbuf, void *subbuffer) > return 0; > } > > +/** > + * kbuffer_subbuf_timestamp - read the timestamp from a sub buffer > + * @kbuf: The kbuffer to load > + * @subbuf: The subbuffer to read from. > + * > + * Return the timestamp from a subbuffer. > + */ > +unsigned long long kbuffer_subbuf_timestamp(struct kbuffer *kbuf, void *subbuf) > +{ > + return kbuf->read_8(subbuf); > +} > + > +/** > + * kbuffer_ptr_delta - read the delta field from a record > + * @kbuf: The kbuffer to load > + * @ptr: The record in the buffe. > + * > + * Return the timestamp delta from a record > + */ > +unsigned int kbuffer_ptr_delta(struct kbuffer *kbuf, void *ptr) > +{ > + unsigned int type_len_ts; > + > + type_len_ts = read_4(kbuf, ptr); > + return ts4host(kbuf, type_len_ts); > +} > + > + > /** > * kbuffer_read_event - read the next event in the kbuffer subbuffer > * @kbuf: The kbuffer to read from > diff --git a/tools/lib/traceevent/kbuffer.h b/tools/lib/traceevent/kbuffer.h > index ed4d697fc137..5fa8292e341b 100644 > --- a/tools/lib/traceevent/kbuffer.h > +++ b/tools/lib/traceevent/kbuffer.h > @@ -49,6 +49,8 @@ int kbuffer_load_subbuffer(struct kbuffer *kbuf, void *subbuffer); > void *kbuffer_read_event(struct kbuffer *kbuf, unsigned long long *ts); > void *kbuffer_next_event(struct kbuffer *kbuf, unsigned long long *ts); > unsigned long long kbuffer_timestamp(struct kbuffer *kbuf); > +unsigned long long kbuffer_subbuf_timestamp(struct kbuffer *kbuf, void *subbuf); > +unsigned int kbuffer_ptr_delta(struct kbuffer *kbuf, void *ptr); > > void *kbuffer_translate_data(int swap, void *data, unsigned int *size); > > -- > 2.26.2 > > -- - Arnaldo