trace: add meson trace func [2/2]
authorbinqi.zhang <binqi.zhang@amlogic.com>
Fri, 13 Apr 2018 06:08:14 +0000 (14:08 +0800)
committerYixun Lan <yixun.lan@amlogic.com>
Thu, 19 Apr 2018 08:58:53 +0000 (01:58 -0700)
PD#164734: meson: Aid to kernel debug

echo 1 >
/sys/kernel/debug/tracing/events/meson_atrace/tracing_mark_write/enable

Change-Id: I11d56296ae8f5bd7427b292b0c98c6b4541b6faa
Signed-off-by: binqi.zhang <binqi.zhang@amlogic.com>
MAINTAINERS
include/trace/events/meson_atrace.h [new file with mode: 0644]

index 71c98a8..6e274d4 100644 (file)
@@ -13674,6 +13674,10 @@ AMLOGIC GPU DEVICETREE
 M:     Jiyu Yang <jiyu.yang@amlogic.com>
 F:     arch/arm64/boot/dts/amlogic/mesongxtvbb-gpu-t83x.dtsi
 
+AMLOGIC GPU SYSTRACE
+M:     Binqi Zhang <binqi.zhang@amlogic.com>
+F:     include/trace/events/meson_atrace.h
+
 AMLOGIC VRTC DRIVER
 M:     Yun Cai <yun.cai@amlogic.com>
 F:     drivers/amlogic/vrtc/
diff --git a/include/trace/events/meson_atrace.h b/include/trace/events/meson_atrace.h
new file mode 100644 (file)
index 0000000..8400969
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * meson_atrace.h
+ */
+
+/*
+ * This file enables ftrace logging in a way that
+ * atrace/systrace would understand
+ * without any custom javascript change in chromium-trace
+ */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM meson_atrace
+
+#if !defined(_TRACE_MESON_BASE_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_MESON_BASE_H
+
+#include <linux/tracepoint.h>
+
+
+#define KERNEL_ATRACE_COUNTER 0
+#define KERNEL_ATRACE_BEGIN 1
+#define KERNEL_ATRACE_END 2
+
+#define print_flags_header(flags) __print_flags(flags, "",     \
+       { (1UL << KERNEL_ATRACE_COUNTER),       "C" },          \
+       { (1UL << KERNEL_ATRACE_BEGIN),         "B" },          \
+       { (1UL << KERNEL_ATRACE_END),           "E" })
+
+
+#define print_flags_delim(flags) __print_flags(flags, "",      \
+       { (1UL << KERNEL_ATRACE_COUNTER),       "|1|" },                \
+       { (1UL << KERNEL_ATRACE_BEGIN),         "|1|" },                \
+       { (1UL << KERNEL_ATRACE_END),           "" })
+
+TRACE_EVENT(tracing_mark_write,
+
+       TP_PROTO(const char *name, unsigned int flags, unsigned int value),
+
+       TP_ARGS(name, flags, value),
+
+       TP_STRUCT__entry(
+               __string(name, name)
+               __field(unsigned int, flags)
+               __field(unsigned int, value)
+       ),
+
+       TP_fast_assign(
+               __assign_str(name, name);
+               __entry->flags = flags;
+               __entry->value = value;
+       ),
+
+       TP_printk("%s%s%s|%u", print_flags_header(__entry->flags),
+               print_flags_delim(__entry->flags),
+               __get_str(name), __entry->value)
+);
+
+#define ATRACE_COUNTER(name, value) \
+       trace_tracing_mark_write(name, (1 << KERNEL_ATRACE_COUNTER), value)
+#define ATRACE_BEGIN(name) \
+       trace_tracing_mark_write(name, (1 << KERNEL_ATRACE_BEGIN), 0)
+#define ATRACE_END(name) \
+       trace_tracing_mark_write("", (1 << KERNEL_ATRACE_END), 1)
+
+#endif /* _TRACE_MESON_BASE_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>