Re: [PATCH v2 3/3] tools/lib/traceevent: Implement new traceevent APIs for accessing struct tep_handler fields

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 22, 2019 at 5:20 PM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
...
> > +/**
> > + * tep_get_parsing_failures - get the parsing failures flag
> > + * @tep: a handle to the tep_handle
> > + *
> > + * This returns value of flag "parsing_failures"
> > + * If @tep is NULL, 0 is returned.
> > + */
> > +int tep_get_parsing_failures(struct tep_handle *tep)
> > +{
> > +     if (tep)
> > +             return tep->parsing_failures;
> > +     return 0;
> > +}
>
> Hmm, actually I think we can get rid of the parsing failures
> completely, and use another mechanism to report these errors.
>
> Or better yet, have tep_parse_event() set it internally and have:
>
>  tep_has_failures() - returns true if tep_parse_event() failed
>  tep_clear_failures() - resets so tep_has_failures() returns false
>
>
Ok, I'll remove tep_get_parsing_failures() from this patch. This modification
should be introduced with its own patch.

> > +
> > +/**
> > + * tep_is_old_format - get if an old kernel is used
>
>     - returns true if the data is from an old kernel
>
> > + * @tep: a handle to the tep_handle
> > + *
> > + * This returns true, if an old kernel is used to generate the tracing events or
> > + * false if a new kernel is used. Old kernels did not have header page info.
> > + * If @pevent is NULL, false is returned.
> > + */
> > +bool tep_is_old_format(struct tep_handle *tep)
> > +{
> > +     if (tep)
> > +             return !!(tep->old_format);
> > +     return false;
> > +}
> > +
> > +/**
> > + * tep_set_print_raw - set a flag to force print in raw format
> > + * @tep: a handle to the tep_handle
> > + * @print_raw: the new value of the print_raw flag
> > + *
> > + * This sets a flag to force print in raw format
> > + */
> > +void tep_set_print_raw(struct tep_handle *tep, int print_raw)
> > +{
> > +     if (tep)
> > +             tep->print_raw = print_raw;
> > +}
> > +
> > +/**
> > + * tep_set_print_raw - set a flag to test a filter string
>
>   tep_set_test_filters -
>
> > + * @tep: a handle to the tep_handle
> > + * @test_filters: the new value of the test_filters flag
> > + *
> > + * This sets a flag to fjust test a filter string. If this flag is set,
>
>  This causes the tep_filter_add_filter_str() to simply print the filter
>  instead of adding it.
>
> Note, we should remove the "exit(0)" from tep_filter_add_filter_str()
> and have the callers do the exit. A library function should not call
> exit.
>
> -- Steve
>
>
> > + * when a filter string is added, then it will print the filters strings
> > + * that were created and exit.
> > + */
> > +void tep_set_test_filters(struct tep_handle *tep, int test_filters)
> > +{
> > +     if (tep)
> > +             tep->test_filters = test_filters;
> > +}
> > diff --git a/tools/lib/traceevent/event-parse-local.h b/tools/lib/traceevent/event-parse-local.h
> > index 35833ee32d6c..c5c8eb4c4ab7 100644
> > --- a/tools/lib/traceevent/event-parse-local.h
> > +++ b/tools/lib/traceevent/event-parse-local.h
> > @@ -83,6 +83,8 @@ struct tep_handle {
> >       struct event_handler *handlers;
> >       struct tep_function_handler *func_handlers;
> >
> > +     int parsing_failures;
> > +
> >       /* cache */
> >       struct tep_event *last_event;
> >
> > diff --git a/tools/lib/traceevent/event-parse.h b/tools/lib/traceevent/event-parse.h
> > index aec48f2aea8a..4b64658334de 100644
> > --- a/tools/lib/traceevent/event-parse.h
> > +++ b/tools/lib/traceevent/event-parse.h
> > @@ -409,6 +409,8 @@ void tep_print_plugins(struct trace_seq *s,
> >  typedef char *(tep_func_resolver_t)(void *priv,
> >                                   unsigned long long *addrp, char **modp);
> >  void tep_set_flag(struct tep_handle *tep, int flag);
> > +void tep_clear_flag(struct tep_handle *tep, enum tep_flag flag);
> > +bool tep_check_flags(struct tep_handle *tep, enum tep_flag flags);
> >
> >  static inline int tep_host_bigendian(void)
> >  {
> > @@ -565,6 +567,12 @@ void tep_set_host_bigendian(struct tep_handle *pevent, enum tep_endian endian);
> >  int tep_is_latency_format(struct tep_handle *pevent);
> >  void tep_set_latency_format(struct tep_handle *pevent, int lat);
> >  int tep_get_header_page_size(struct tep_handle *pevent);
> > +void tep_set_parsing_failures(struct tep_handle *tep, int parsing_failures);
> > +int tep_get_parsing_failures(struct tep_handle *tep);
> > +int tep_get_header_page_ts_size(struct tep_handle *tep);
> > +bool tep_is_old_format(struct tep_handle *pevent);
> > +void tep_set_print_raw(struct tep_handle *tep, int print_raw);
> > +void tep_set_test_filters(struct tep_handle *tep, int test_filters);
> >
> >  struct tep_handle *tep_alloc(void);
> >  void tep_free(struct tep_handle *pevent);
>


-- 

Tzvetomir (Ceco) Stoyanov
VMware Open Source Technology Center





[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux