Em Wed, 08 Apr 2015 09:48:23 -0400 Steven Rostedt <rost...@goodmis.org> escreveu:
> From: "Steven Rostedt (Red Hat)" <rost...@goodmis.org> > > Enums used by tracepoints for __print_symbolic() are shown in the > tracepoint format files with just their names and not their values. > This makes it difficult for user space tools to know how to convert the > binary data into their string representations. > > By adding the use of TRACE_DEFINE_ENUM(), the enum names will be mapped > to their values and shown in the tracing file system to let tools > convert the data as necessary. > > Link: http://lkml.kernel.org/r/20150403013802.220157...@goodmis.org > > Cc: Mauro Carvalho Chehab <m.che...@samsung.com> Acked-by: Mauro Carvalho Chehab <mche...@osg.samsung.com> > Reviewed-by: Masami Hiramatsu <masami.hiramatsu...@hitachi.com> > Tested-by: Masami Hiramatsu <masami.hiramatsu...@hitachi.com> > Signed-off-by: Steven Rostedt <rost...@goodmis.org> > --- > include/trace/events/v4l2.h | 75 > ++++++++++++++++++++++++++++++--------------- > 1 file changed, 50 insertions(+), 25 deletions(-) > > diff --git a/include/trace/events/v4l2.h b/include/trace/events/v4l2.h > index b9bb1f204693..20112170ff11 100644 > --- a/include/trace/events/v4l2.h > +++ b/include/trace/events/v4l2.h > @@ -6,33 +6,58 @@ > > #include <linux/tracepoint.h> > > -#define show_type(type) > \ > - __print_symbolic(type, \ > - { V4L2_BUF_TYPE_VIDEO_CAPTURE, "VIDEO_CAPTURE" }, \ > - { V4L2_BUF_TYPE_VIDEO_OUTPUT, "VIDEO_OUTPUT" }, \ > - { V4L2_BUF_TYPE_VIDEO_OVERLAY, "VIDEO_OVERLAY" }, \ > - { V4L2_BUF_TYPE_VBI_CAPTURE, "VBI_CAPTURE" }, \ > - { V4L2_BUF_TYPE_VBI_OUTPUT, "VBI_OUTPUT" }, \ > - { V4L2_BUF_TYPE_SLICED_VBI_CAPTURE, "SLICED_VBI_CAPTURE" }, \ > - { V4L2_BUF_TYPE_SLICED_VBI_OUTPUT, "SLICED_VBI_OUTPUT" }, \ > - { V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY, "VIDEO_OUTPUT_OVERLAY" },\ > - { V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, "VIDEO_CAPTURE_MPLANE" },\ > - { V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, "VIDEO_OUTPUT_MPLANE" }, \ > - { V4L2_BUF_TYPE_SDR_CAPTURE, "SDR_CAPTURE" }, \ > - { V4L2_BUF_TYPE_PRIVATE, "PRIVATE" }) > +/* Enums require being exported to userspace, for user tool parsing */ > +#undef EM > +#undef EMe > +#define EM(a, b) TRACE_DEFINE_ENUM(a); > +#define EMe(a, b) TRACE_DEFINE_ENUM(a); > + > +#define show_type(type) > \ > + __print_symbolic(type, SHOW_TYPE) > + > +#define SHOW_TYPE \ > + EM( V4L2_BUF_TYPE_VIDEO_CAPTURE, "VIDEO_CAPTURE" ) \ > + EM( V4L2_BUF_TYPE_VIDEO_OUTPUT, "VIDEO_OUTPUT" ) \ > + EM( V4L2_BUF_TYPE_VIDEO_OVERLAY, "VIDEO_OVERLAY" ) \ > + EM( V4L2_BUF_TYPE_VBI_CAPTURE, "VBI_CAPTURE" ) \ > + EM( V4L2_BUF_TYPE_VBI_OUTPUT, "VBI_OUTPUT" ) \ > + EM( V4L2_BUF_TYPE_SLICED_VBI_CAPTURE, "SLICED_VBI_CAPTURE" ) \ > + EM( V4L2_BUF_TYPE_SLICED_VBI_OUTPUT, "SLICED_VBI_OUTPUT" ) \ > + EM( V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY, "VIDEO_OUTPUT_OVERLAY" ) \ > + EM( V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, "VIDEO_CAPTURE_MPLANE" ) \ > + EM( V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, "VIDEO_OUTPUT_MPLANE" ) \ > + EM( V4L2_BUF_TYPE_SDR_CAPTURE, "SDR_CAPTURE" ) \ > + EMe(V4L2_BUF_TYPE_PRIVATE, "PRIVATE" ) > + > +SHOW_TYPE > > #define show_field(field) \ > - __print_symbolic(field, \ > - { V4L2_FIELD_ANY, "ANY" }, \ > - { V4L2_FIELD_NONE, "NONE" }, \ > - { V4L2_FIELD_TOP, "TOP" }, \ > - { V4L2_FIELD_BOTTOM, "BOTTOM" }, \ > - { V4L2_FIELD_INTERLACED, "INTERLACED" }, \ > - { V4L2_FIELD_SEQ_TB, "SEQ_TB" }, \ > - { V4L2_FIELD_SEQ_BT, "SEQ_BT" }, \ > - { V4L2_FIELD_ALTERNATE, "ALTERNATE" }, \ > - { V4L2_FIELD_INTERLACED_TB, "INTERLACED_TB" }, \ > - { V4L2_FIELD_INTERLACED_BT, "INTERLACED_BT" }) > + __print_symbolic(field, SHOW_FIELD) > + > +#define SHOW_FIELD \ > + EM( V4L2_FIELD_ANY, "ANY" ) \ > + EM( V4L2_FIELD_NONE, "NONE" ) \ > + EM( V4L2_FIELD_TOP, "TOP" ) \ > + EM( V4L2_FIELD_BOTTOM, "BOTTOM" ) \ > + EM( V4L2_FIELD_INTERLACED, "INTERLACED" ) \ > + EM( V4L2_FIELD_SEQ_TB, "SEQ_TB" ) \ > + EM( V4L2_FIELD_SEQ_BT, "SEQ_BT" ) \ > + EM( V4L2_FIELD_ALTERNATE, "ALTERNATE" ) \ > + EM( V4L2_FIELD_INTERLACED_TB, "INTERLACED_TB" ) \ > + EMe( V4L2_FIELD_INTERLACED_BT, "INTERLACED_BT" ) > + > +SHOW_FIELD > + > +/* > + * Now redefine the EM() and EMe() macros to map the enums to the strings > + * that will be printed in the output. > + */ > +#undef EM > +#undef EMe > +#define EM(a, b) {a, b}, > +#define EMe(a, b) {a, b} > + > +/* V4L2_TC_TYPE_* are macros, not defines, they do not need processing */ > > #define show_timecode_type(type) \ > __print_symbolic(type, \ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/