FROMLIST: tracing: add trace_export support for trace_marker

Add the support to route trace_marker buffer to other destination
via trace_export.

Bug: 160464759
Link: https://lore.kernel.org/patchwork/cover/1280618/
Signed-off-by: Tingwei Zhang <tingwei@codeaurora.org>
Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Change-Id: I870f1902e48d05947667ac0ecda7a9d17a982890
This commit is contained in:
Tingwei Zhang
2020-07-22 18:44:32 +08:00
committed by Todd Kjos
parent 23e1124fab
commit b0b6463bb2
2 changed files with 10 additions and 0 deletions

View File

@@ -6,6 +6,7 @@
#define TRACE_EXPORT_FUNCTION BIT(0) #define TRACE_EXPORT_FUNCTION BIT(0)
#define TRACE_EXPORT_EVENT BIT(1) #define TRACE_EXPORT_EVENT BIT(1)
#define TRACE_EXPORT_MARKER BIT(2)
/* /*
* The trace export - an export of Ftrace output. The trace_export * The trace export - an export of Ftrace output. The trace_export

View File

@@ -271,6 +271,7 @@ static struct trace_export __rcu *ftrace_exports_list __read_mostly;
static DEFINE_STATIC_KEY_FALSE(trace_function_exports_enabled); static DEFINE_STATIC_KEY_FALSE(trace_function_exports_enabled);
static DEFINE_STATIC_KEY_FALSE(trace_event_exports_enabled); static DEFINE_STATIC_KEY_FALSE(trace_event_exports_enabled);
static DEFINE_STATIC_KEY_FALSE(trace_marker_exports_enabled);
static inline void ftrace_exports_enable(struct trace_export *export) static inline void ftrace_exports_enable(struct trace_export *export)
{ {
@@ -279,6 +280,9 @@ static inline void ftrace_exports_enable(struct trace_export *export)
if (export->flags & TRACE_EXPORT_EVENT) if (export->flags & TRACE_EXPORT_EVENT)
static_branch_inc(&trace_event_exports_enabled); static_branch_inc(&trace_event_exports_enabled);
if (export->flags & TRACE_EXPORT_MARKER)
static_branch_inc(&trace_marker_exports_enabled);
} }
static inline void ftrace_exports_disable(struct trace_export *export) static inline void ftrace_exports_disable(struct trace_export *export)
@@ -288,6 +292,9 @@ static inline void ftrace_exports_disable(struct trace_export *export)
if (export->flags & TRACE_EXPORT_EVENT) if (export->flags & TRACE_EXPORT_EVENT)
static_branch_dec(&trace_event_exports_enabled); static_branch_dec(&trace_event_exports_enabled);
if (export->flags & TRACE_EXPORT_MARKER)
static_branch_dec(&trace_marker_exports_enabled);
} }
static void ftrace_exports(struct ring_buffer_event *event, int flag) static void ftrace_exports(struct ring_buffer_event *event, int flag)
@@ -6687,6 +6694,8 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
} else } else
entry->buf[cnt] = '\0'; entry->buf[cnt] = '\0';
if (static_branch_unlikely(&trace_marker_exports_enabled))
ftrace_exports(event, TRACE_EXPORT_MARKER);
__buffer_unlock_commit(buffer, event); __buffer_unlock_commit(buffer, event);
if (tt) if (tt)