From c4936880059251b28b7049f01bbfddb1882bda0e Mon Sep 17 00:00:00 2001 From: Slavomir Kaslev Date: Wed, 17 Apr 2019 21:31:57 +0300 Subject: [PATCH 2/2] trace-cmd: Add --no-filter option to not filter out recording processes Add trace-cmd --no-filter option that disables filtering out of trace-cmd recording processes from the trace. Link: http://lore.kernel.org/linux-trace-devel/20190417183157.8776-2-kaslevs@vmware.com Tested-by: Phil Auld Suggested-by: Steven Rostedt (VMware) Signed-off-by: Slavomir Kaslev Signed-off-by: Steven Rostedt (VMware) --- Documentation/trace-cmd-record.1.txt | 5 +++++ trace-record.c | 14 +++++++++++--- trace-usage.c | 1 + 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Documentation/trace-cmd-record.1.txt b/Documentation/trace-cmd-record.1.txt index 68afa161ac32..26a8299cd860 100644 --- a/Documentation/trace-cmd-record.1.txt +++ b/Documentation/trace-cmd-record.1.txt @@ -83,6 +83,11 @@ OPTIONS The above are usually safe to use to compare fields. +*--no-filter*:: + Do not filter out the trace-cmd threads. By default, the threads are + filtered out to not be traced by events. This option will have the trace-cmd + threads also be traced. + *-R* 'trigger':: Specify a trigger for the previous event. This must come after a *-e*. This will add a given trigger to the given event. To only enable the trigger diff --git a/trace-record.c b/trace-record.c index e636c97d701d..ef4c4c873fd4 100644 --- a/trace-record.c +++ b/trace-record.c @@ -99,6 +99,7 @@ static int do_ptrace; static int filter_task; static int filter_pid = -1; +static bool no_filter = false; static int local_cpu_count; @@ -1018,6 +1019,9 @@ static void update_task_filter(void) struct buffer_instance *instance; int pid = getpid(); + if (no_filter) + return; + if (filter_task) add_filter_pid(pid, 0); @@ -4343,9 +4347,9 @@ void update_first_instance(struct buffer_instance *instance, int topt) } enum { - - OPT_quiet = 246, - OPT_debug = 247, + OPT_quiet = 245, + OPT_debug = 246, + OPT_no_filter = 247, OPT_max_graph_depth = 248, OPT_tsoffset = 249, OPT_bycomm = 250, @@ -4592,6 +4596,7 @@ static void parse_record_options(int argc, {"by-comm", no_argument, NULL, OPT_bycomm}, {"ts-offset", required_argument, NULL, OPT_tsoffset}, {"max-graph-depth", required_argument, NULL, OPT_max_graph_depth}, + {"no-filter", no_argument, NULL, OPT_no_filter}, {"debug", no_argument, NULL, OPT_debug}, {"quiet", no_argument, NULL, OPT_quiet}, {"help", no_argument, NULL, '?'}, @@ -4866,6 +4871,9 @@ static void parse_record_options(int argc, if (!ctx->max_graph_depth) die("Could not allocate option"); break; + case OPT_no_filter: + no_filter = true; + break; case OPT_debug: debug = 1; break; diff --git a/trace-usage.c b/trace-usage.c index 10f737b340df..dc73d4d90688 100644 --- a/trace-usage.c +++ b/trace-usage.c @@ -56,6 +56,7 @@ static struct usage_help usage_help[] = { " --func-stack perform a stack trace for function tracer\n" " (use with caution)\n" " --max-graph-depth limit function_graph depth\n" + " --no-filter include trace-cmd threads in the trace\n" }, { "start", -- 2.20.1