]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
net/9p/tracing: Export enums in tracepoints to userspace
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>
Fri, 27 Mar 2015 20:15:07 +0000 (16:15 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 8 Apr 2015 13:39:59 +0000 (09:39 -0400)
The tracepoints in the 9p code use a lot of enums for the __print_symbolic()
function. These enums are shown in the tracepoint format files, and user
space tools such as trace-cmd does not have the information to parse it.
Add helper macros to export the enums with TRACE_DEFINE_ENUM().

Link: http://lkml.kernel.org/r/20150403013802.220157513@goodmis.org
Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Cc: Eric Van Hensbergen <ericvh@gmail.com>
Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Tested-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
include/trace/events/9p.h

index a0666362c111ae1b597ebda14973826f29f33e75..633ee9ee97782210e74618a89e3187f41920b48e 100644 (file)
@@ -6,76 +6,95 @@
 
 #include <linux/tracepoint.h>
 
+#define P9_MSG_T                                                       \
+               EM( P9_TLERROR,         "P9_TLERROR" )                  \
+               EM( P9_RLERROR,         "P9_RLERROR" )                  \
+               EM( P9_TSTATFS,         "P9_TSTATFS" )                  \
+               EM( P9_RSTATFS,         "P9_RSTATFS" )                  \
+               EM( P9_TLOPEN,          "P9_TLOPEN" )                   \
+               EM( P9_RLOPEN,          "P9_RLOPEN" )                   \
+               EM( P9_TLCREATE,        "P9_TLCREATE" )                 \
+               EM( P9_RLCREATE,        "P9_RLCREATE" )                 \
+               EM( P9_TSYMLINK,        "P9_TSYMLINK" )                 \
+               EM( P9_RSYMLINK,        "P9_RSYMLINK" )                 \
+               EM( P9_TMKNOD,          "P9_TMKNOD" )                   \
+               EM( P9_RMKNOD,          "P9_RMKNOD" )                   \
+               EM( P9_TRENAME,         "P9_TRENAME" )                  \
+               EM( P9_RRENAME,         "P9_RRENAME" )                  \
+               EM( P9_TREADLINK,       "P9_TREADLINK" )                \
+               EM( P9_RREADLINK,       "P9_RREADLINK" )                \
+               EM( P9_TGETATTR,        "P9_TGETATTR" )                 \
+               EM( P9_RGETATTR,        "P9_RGETATTR" )                 \
+               EM( P9_TSETATTR,        "P9_TSETATTR" )                 \
+               EM( P9_RSETATTR,        "P9_RSETATTR" )                 \
+               EM( P9_TXATTRWALK,      "P9_TXATTRWALK" )               \
+               EM( P9_RXATTRWALK,      "P9_RXATTRWALK" )               \
+               EM( P9_TXATTRCREATE,    "P9_TXATTRCREATE" )             \
+               EM( P9_RXATTRCREATE,    "P9_RXATTRCREATE" )             \
+               EM( P9_TREADDIR,        "P9_TREADDIR" )                 \
+               EM( P9_RREADDIR,        "P9_RREADDIR" )                 \
+               EM( P9_TFSYNC,          "P9_TFSYNC" )                   \
+               EM( P9_RFSYNC,          "P9_RFSYNC" )                   \
+               EM( P9_TLOCK,           "P9_TLOCK" )                    \
+               EM( P9_RLOCK,           "P9_RLOCK" )                    \
+               EM( P9_TGETLOCK,        "P9_TGETLOCK" )                 \
+               EM( P9_RGETLOCK,        "P9_RGETLOCK" )                 \
+               EM( P9_TLINK,           "P9_TLINK" )                    \
+               EM( P9_RLINK,           "P9_RLINK" )                    \
+               EM( P9_TMKDIR,          "P9_TMKDIR" )                   \
+               EM( P9_RMKDIR,          "P9_RMKDIR" )                   \
+               EM( P9_TRENAMEAT,       "P9_TRENAMEAT" )                \
+               EM( P9_RRENAMEAT,       "P9_RRENAMEAT" )                \
+               EM( P9_TUNLINKAT,       "P9_TUNLINKAT" )                \
+               EM( P9_RUNLINKAT,       "P9_RUNLINKAT" )                \
+               EM( P9_TVERSION,        "P9_TVERSION" )                 \
+               EM( P9_RVERSION,        "P9_RVERSION" )                 \
+               EM( P9_TAUTH,           "P9_TAUTH" )                    \
+               EM( P9_RAUTH,           "P9_RAUTH" )                    \
+               EM( P9_TATTACH,         "P9_TATTACH" )                  \
+               EM( P9_RATTACH,         "P9_RATTACH" )                  \
+               EM( P9_TERROR,          "P9_TERROR" )                   \
+               EM( P9_RERROR,          "P9_RERROR" )                   \
+               EM( P9_TFLUSH,          "P9_TFLUSH" )                   \
+               EM( P9_RFLUSH,          "P9_RFLUSH" )                   \
+               EM( P9_TWALK,           "P9_TWALK" )                    \
+               EM( P9_RWALK,           "P9_RWALK" )                    \
+               EM( P9_TOPEN,           "P9_TOPEN" )                    \
+               EM( P9_ROPEN,           "P9_ROPEN" )                    \
+               EM( P9_TCREATE,         "P9_TCREATE" )                  \
+               EM( P9_RCREATE,         "P9_RCREATE" )                  \
+               EM( P9_TREAD,           "P9_TREAD" )                    \
+               EM( P9_RREAD,           "P9_RREAD" )                    \
+               EM( P9_TWRITE,          "P9_TWRITE" )                   \
+               EM( P9_RWRITE,          "P9_RWRITE" )                   \
+               EM( P9_TCLUNK,          "P9_TCLUNK" )                   \
+               EM( P9_RCLUNK,          "P9_RCLUNK" )                   \
+               EM( P9_TREMOVE,         "P9_TREMOVE" )                  \
+               EM( P9_RREMOVE,         "P9_RREMOVE" )                  \
+               EM( P9_TSTAT,           "P9_TSTAT" )                    \
+               EM( P9_RSTAT,           "P9_RSTAT" )                    \
+               EM( P9_TWSTAT,          "P9_TWSTAT" )                   \
+               EMe(P9_RWSTAT,          "P9_RWSTAT" )
+
+/* Define EM() to export the enums to userspace via TRACE_DEFINE_ENUM() */
+#undef EM
+#undef EMe
+#define EM(a, b)       TRACE_DEFINE_ENUM(a);
+#define EMe(a, b)      TRACE_DEFINE_ENUM(a);
+
+P9_MSG_T
+
+/*
+ * 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 }
+
 #define show_9p_op(type)                                               \
-       __print_symbolic(type,                                          \
-                        { P9_TLERROR,          "P9_TLERROR" },         \
-                        { P9_RLERROR,          "P9_RLERROR" },         \
-                        { P9_TSTATFS,          "P9_TSTATFS" },         \
-                        { P9_RSTATFS,          "P9_RSTATFS" },         \
-                        { P9_TLOPEN,           "P9_TLOPEN" },          \
-                        { P9_RLOPEN,           "P9_RLOPEN" },          \
-                        { P9_TLCREATE,         "P9_TLCREATE" },        \
-                        { P9_RLCREATE,         "P9_RLCREATE" },        \
-                        { P9_TSYMLINK,         "P9_TSYMLINK" },        \
-                        { P9_RSYMLINK,         "P9_RSYMLINK" },        \
-                        { P9_TMKNOD,           "P9_TMKNOD" },          \
-                        { P9_RMKNOD,           "P9_RMKNOD" },          \
-                        { P9_TRENAME,          "P9_TRENAME" },         \
-                        { P9_RRENAME,          "P9_RRENAME" },         \
-                        { P9_TREADLINK,        "P9_TREADLINK" },       \
-                        { P9_RREADLINK,        "P9_RREADLINK" },       \
-                        { P9_TGETATTR,         "P9_TGETATTR" },        \
-                        { P9_RGETATTR,         "P9_RGETATTR" },        \
-                        { P9_TSETATTR,         "P9_TSETATTR" },        \
-                        { P9_RSETATTR,         "P9_RSETATTR" },        \
-                        { P9_TXATTRWALK,       "P9_TXATTRWALK" },      \
-                        { P9_RXATTRWALK,       "P9_RXATTRWALK" },      \
-                        { P9_TXATTRCREATE,     "P9_TXATTRCREATE" },    \
-                        { P9_RXATTRCREATE,     "P9_RXATTRCREATE" },    \
-                        { P9_TREADDIR,         "P9_TREADDIR" },        \
-                        { P9_RREADDIR,         "P9_RREADDIR" },        \
-                        { P9_TFSYNC,           "P9_TFSYNC" },          \
-                        { P9_RFSYNC,           "P9_RFSYNC" },          \
-                        { P9_TLOCK,            "P9_TLOCK" },           \
-                        { P9_RLOCK,            "P9_RLOCK" },           \
-                        { P9_TGETLOCK,         "P9_TGETLOCK" },        \
-                        { P9_RGETLOCK,         "P9_RGETLOCK" },        \
-                        { P9_TLINK,            "P9_TLINK" },           \
-                        { P9_RLINK,            "P9_RLINK" },           \
-                        { P9_TMKDIR,           "P9_TMKDIR" },          \
-                        { P9_RMKDIR,           "P9_RMKDIR" },          \
-                        { P9_TRENAMEAT,        "P9_TRENAMEAT" },       \
-                        { P9_RRENAMEAT,        "P9_RRENAMEAT" },       \
-                        { P9_TUNLINKAT,        "P9_TUNLINKAT" },       \
-                        { P9_RUNLINKAT,        "P9_RUNLINKAT" },       \
-                        { P9_TVERSION,         "P9_TVERSION" },        \
-                        { P9_RVERSION,         "P9_RVERSION" },        \
-                        { P9_TAUTH,            "P9_TAUTH" },           \
-                        { P9_RAUTH,            "P9_RAUTH" },           \
-                        { P9_TATTACH,          "P9_TATTACH" },         \
-                        { P9_RATTACH,          "P9_RATTACH" },         \
-                        { P9_TERROR,           "P9_TERROR" },          \
-                        { P9_RERROR,           "P9_RERROR" },          \
-                        { P9_TFLUSH,           "P9_TFLUSH" },          \
-                        { P9_RFLUSH,           "P9_RFLUSH" },          \
-                        { P9_TWALK,            "P9_TWALK" },           \
-                        { P9_RWALK,            "P9_RWALK" },           \
-                        { P9_TOPEN,            "P9_TOPEN" },           \
-                        { P9_ROPEN,            "P9_ROPEN" },           \
-                        { P9_TCREATE,          "P9_TCREATE" },         \
-                        { P9_RCREATE,          "P9_RCREATE" },         \
-                        { P9_TREAD,            "P9_TREAD" },           \
-                        { P9_RREAD,            "P9_RREAD" },           \
-                        { P9_TWRITE,           "P9_TWRITE" },          \
-                        { P9_RWRITE,           "P9_RWRITE" },          \
-                        { P9_TCLUNK,           "P9_TCLUNK" },          \
-                        { P9_RCLUNK,           "P9_RCLUNK" },          \
-                        { P9_TREMOVE,          "P9_TREMOVE" },         \
-                        { P9_RREMOVE,          "P9_RREMOVE" },         \
-                        { P9_TSTAT,            "P9_TSTAT" },           \
-                        { P9_RSTAT,            "P9_RSTAT" },           \
-                        { P9_TWSTAT,           "P9_TWSTAT" },          \
-                        { P9_RWSTAT,           "P9_RWSTAT" })
+       __print_symbolic(type, P9_MSG_T)
 
 TRACE_EVENT(9p_client_req,
            TP_PROTO(struct p9_client *clnt, int8_t type, int tag),