|
@@ -80,6 +80,87 @@
|
|
|
|
|
|
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
|
|
|
|
|
|
+/*
|
|
|
+ * Setup the showing format of trace point.
|
|
|
+ *
|
|
|
+ * int
|
|
|
+ * ftrace_format_##call(struct trace_seq *s)
|
|
|
+ * {
|
|
|
+ * struct ftrace_raw_##call field;
|
|
|
+ * int ret;
|
|
|
+ *
|
|
|
+ * ret = trace_seq_printf(s, #type " " #item ";"
|
|
|
+ * " offset:%u; size:%u;\n",
|
|
|
+ * offsetof(struct ftrace_raw_##call, item),
|
|
|
+ * sizeof(field.type));
|
|
|
+ *
|
|
|
+ * }
|
|
|
+ */
|
|
|
+
|
|
|
+#undef TP_STRUCT__entry
|
|
|
+#define TP_STRUCT__entry(args...) args
|
|
|
+
|
|
|
+#undef __field
|
|
|
+#define __field(type, item) \
|
|
|
+ ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \
|
|
|
+ "offset:%u;\tsize:%u;\n", \
|
|
|
+ (unsigned int)offsetof(typeof(field), item), \
|
|
|
+ (unsigned int)sizeof(field.item)); \
|
|
|
+ if (!ret) \
|
|
|
+ return 0;
|
|
|
+
|
|
|
+#undef __array
|
|
|
+#define __array(type, item, len) \
|
|
|
+ ret = trace_seq_printf(s, "\tfield:" #type " " #item "[" #len "];\t" \
|
|
|
+ "offset:%u;\tsize:%u;\n", \
|
|
|
+ (unsigned int)offsetof(typeof(field), item), \
|
|
|
+ (unsigned int)sizeof(field.item)); \
|
|
|
+ if (!ret) \
|
|
|
+ return 0;
|
|
|
+
|
|
|
+#undef __dynamic_array
|
|
|
+#define __dynamic_array(type, item, len) \
|
|
|
+ ret = trace_seq_printf(s, "\tfield:__data_loc " #item ";\t" \
|
|
|
+ "offset:%u;\tsize:%u;\n", \
|
|
|
+ (unsigned int)offsetof(typeof(field), \
|
|
|
+ __data_loc_##item), \
|
|
|
+ (unsigned int)sizeof(field.__data_loc_##item)); \
|
|
|
+ if (!ret) \
|
|
|
+ return 0;
|
|
|
+
|
|
|
+#undef __string
|
|
|
+#define __string(item, src) __dynamic_array(char, item, -1)
|
|
|
+
|
|
|
+#undef __entry
|
|
|
+#define __entry REC
|
|
|
+
|
|
|
+#undef __print_symbolic
|
|
|
+#undef __get_dynamic_array
|
|
|
+#undef __get_str
|
|
|
+
|
|
|
+#undef TP_printk
|
|
|
+#define TP_printk(fmt, args...) "%s, %s\n", #fmt, __stringify(args)
|
|
|
+
|
|
|
+#undef TP_fast_assign
|
|
|
+#define TP_fast_assign(args...) args
|
|
|
+
|
|
|
+#undef TRACE_EVENT
|
|
|
+#define TRACE_EVENT(call, proto, args, tstruct, func, print) \
|
|
|
+static int \
|
|
|
+ftrace_format_##call(struct trace_seq *s) \
|
|
|
+{ \
|
|
|
+ struct ftrace_raw_##call field __attribute__((unused)); \
|
|
|
+ int ret = 0; \
|
|
|
+ \
|
|
|
+ tstruct; \
|
|
|
+ \
|
|
|
+ trace_seq_printf(s, "\nprint fmt: " print); \
|
|
|
+ \
|
|
|
+ return ret; \
|
|
|
+}
|
|
|
+
|
|
|
+#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
|
|
|
+
|
|
|
/*
|
|
|
* Stage 3 of the trace events.
|
|
|
*
|
|
@@ -179,83 +260,6 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags) \
|
|
|
|
|
|
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
|
|
|
|
|
|
-/*
|
|
|
- * Setup the showing format of trace point.
|
|
|
- *
|
|
|
- * int
|
|
|
- * ftrace_format_##call(struct trace_seq *s)
|
|
|
- * {
|
|
|
- * struct ftrace_raw_##call field;
|
|
|
- * int ret;
|
|
|
- *
|
|
|
- * ret = trace_seq_printf(s, #type " " #item ";"
|
|
|
- * " offset:%u; size:%u;\n",
|
|
|
- * offsetof(struct ftrace_raw_##call, item),
|
|
|
- * sizeof(field.type));
|
|
|
- *
|
|
|
- * }
|
|
|
- */
|
|
|
-
|
|
|
-#undef TP_STRUCT__entry
|
|
|
-#define TP_STRUCT__entry(args...) args
|
|
|
-
|
|
|
-#undef __field
|
|
|
-#define __field(type, item) \
|
|
|
- ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \
|
|
|
- "offset:%u;\tsize:%u;\n", \
|
|
|
- (unsigned int)offsetof(typeof(field), item), \
|
|
|
- (unsigned int)sizeof(field.item)); \
|
|
|
- if (!ret) \
|
|
|
- return 0;
|
|
|
-
|
|
|
-#undef __array
|
|
|
-#define __array(type, item, len) \
|
|
|
- ret = trace_seq_printf(s, "\tfield:" #type " " #item "[" #len "];\t" \
|
|
|
- "offset:%u;\tsize:%u;\n", \
|
|
|
- (unsigned int)offsetof(typeof(field), item), \
|
|
|
- (unsigned int)sizeof(field.item)); \
|
|
|
- if (!ret) \
|
|
|
- return 0;
|
|
|
-
|
|
|
-#undef __dynamic_array
|
|
|
-#define __dynamic_array(type, item, len) \
|
|
|
- ret = trace_seq_printf(s, "\tfield:__data_loc " #item ";\t" \
|
|
|
- "offset:%u;\tsize:%u;\n", \
|
|
|
- (unsigned int)offsetof(typeof(field), \
|
|
|
- __data_loc_##item), \
|
|
|
- (unsigned int)sizeof(field.__data_loc_##item)); \
|
|
|
- if (!ret) \
|
|
|
- return 0;
|
|
|
-
|
|
|
-#undef __string
|
|
|
-#define __string(item, src) __dynamic_array(char, item, -1)
|
|
|
-
|
|
|
-#undef __entry
|
|
|
-#define __entry REC
|
|
|
-
|
|
|
-#undef TP_printk
|
|
|
-#define TP_printk(fmt, args...) "%s, %s\n", #fmt, __stringify(args)
|
|
|
-
|
|
|
-#undef TP_fast_assign
|
|
|
-#define TP_fast_assign(args...) args
|
|
|
-
|
|
|
-#undef TRACE_EVENT
|
|
|
-#define TRACE_EVENT(call, proto, args, tstruct, func, print) \
|
|
|
-static int \
|
|
|
-ftrace_format_##call(struct trace_seq *s) \
|
|
|
-{ \
|
|
|
- struct ftrace_raw_##call field __attribute__((unused)); \
|
|
|
- int ret = 0; \
|
|
|
- \
|
|
|
- tstruct; \
|
|
|
- \
|
|
|
- trace_seq_printf(s, "\nprint fmt: " print); \
|
|
|
- \
|
|
|
- return ret; \
|
|
|
-}
|
|
|
-
|
|
|
-#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
|
|
|
-
|
|
|
#undef __field
|
|
|
#define __field(type, item) \
|
|
|
ret = trace_define_field(event_call, #type, #item, \
|