On Wed, Feb 21, 2024 at 9:12 AM Steven Rostedt <rost...@goodmis.org> wrote: > > On Wed, 21 Feb 2024 16:41:10 +0000 > Vilas Bhat <vilasb...@google.com> wrote: > > > > diff --git a/include/trace/events/rpm.h b/include/trace/events/rpm.h > > index 3c716214dab1..f1dc4e95dbce 100644 > > --- a/include/trace/events/rpm.h > > +++ b/include/trace/events/rpm.h > > @@ -101,6 +101,42 @@ TRACE_EVENT(rpm_return_int, > > __entry->ret) > > ); > > > > +#define RPM_STATUS_STRINGS \ > > + { RPM_INVALID, "RPM_INVALID" }, \ > > + { RPM_ACTIVE, "RPM_ACTIVE" }, \ > > + { RPM_RESUMING, "RPM_RESUMING" }, \ > > + { RPM_SUSPENDED, "RPM_SUSPENDED" }, \ > > + { RPM_SUSPENDING, "RPM_SUSPENDING" } > > + > > +/* > > + * ftrace's __print_symbolic requires that all enum values be wrapped in > > the > > + * TRACE_DEFINE_ENUM macro so that the enum value can be encoded in the > > ftrace > > + * ring buffer. > > + */ > > +TRACE_DEFINE_ENUM(RPM_INVALID); > > +TRACE_DEFINE_ENUM(RPM_ACTIVE); > > +TRACE_DEFINE_ENUM(RPM_RESUMING); > > +TRACE_DEFINE_ENUM(RPM_SUSPENDED); > > +TRACE_DEFINE_ENUM(RPM_SUSPENDING); > > You could do what everyone else does: > > #define RPM_STATUS_STRINGS \ > EM( RPM_INVALID, "RPM_INVALID" ) \ > EM( RPM_ACTIVE, "RPM_ACTIVE" ) \ > EM( RPM_RESUMING, "RPM_RESUMING" ) \ > EM( RPM_SUSPENDED, "RPM_SUSPENDED" ) \ > EMe( RPM_SUSPENDING, "RPM_SUSPENDING" ) > > #undef EM > #undef EMe > #define EM(a, b) TRACE_DEFINE_ENUM(a); > #define EMe(a, b) TRACE_DEFINE_ENUM(a); > > RPM_STATUS_STRINGS > > #undef EM > #undef EMe > #define EM(a, b) { a, b }, > #define EMe(a, b) { a, b } >
Thanks for the comment, Steven. I did notice both methods of defining enum values for tracepoints and chose this method because it felt clearer. Could you clarify on why the method you suggested is preferred? > > + > > +TRACE_EVENT(rpm_status, > > + TP_PROTO(struct device *dev, enum rpm_status status), > > + TP_ARGS(dev, status), > > + > > + TP_STRUCT__entry( > > + __string(name, dev_name(dev)) > > + __field(int, status) > > + ), > > + > > + TP_fast_assign( > > + __assign_str(name, dev_name(dev)); > > + __entry->status = status; > > + ), > > + > > + TP_printk("%s status=%s", __get_str(name), > > + __print_symbolic(__entry->status, RPM_STATUS_STRINGS)) > > This will be what you want with that last redefine of EM*() > > -- Steve > > > > +); > > + > > #endif /* _TRACE_RUNTIME_POWER_H */ > > > > /* This part must be outside protection */ >