From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753294AbdAZJfu (ORCPT ); Thu, 26 Jan 2017 04:35:50 -0500 Received: from mail-pf0-f193.google.com ([209.85.192.193]:35744 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751774AbdAZJfs (ORCPT ); Thu, 26 Jan 2017 04:35:48 -0500 From: Taeung Song To: Arnaldo Carvalho de Melo Cc: linux-kernel@vger.kernel.org, Jiri Olsa , Namhyung Kim , Ingo Molnar , Peter Zijlstra , Wang Nan , Taeung Song Subject: [PATCH 2/3] perf ftrace: Add ftrace.tracer config option Date: Thu, 26 Jan 2017 18:35:38 +0900 Message-Id: <1485423339-22780-2-git-send-email-treeze.taeung@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1485423339-22780-1-git-send-email-treeze.taeung@gmail.com> References: <1485423339-22780-1-git-send-email-treeze.taeung@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently perf ftrace command will select 'function_graph' or 'function'. So add ftrace.tracer config option to select tracer # cat ~/.perfconfig [ftrace] tracer = function # perf ftrace usleep 123456 | head -10 <...>-14450 [002] d... 10089.284231: finish_task_switch <-__schedule <...>-14450 [002] .... 10089.284232: finish_wait <-pipe_wait <...>-14450 [002] .... 10089.284232: mutex_lock <-pipe_wait <...>-14450 [002] .... 10089.284232: _cond_resched <-mutex_lock <...>-14450 [002] .... 10089.284233: generic_pipe_buf_confirm <-pipe_read Cc: Jiri Olsa Cc: Namhyung Kim Signed-off-by: Taeung Song --- tools/perf/builtin-ftrace.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c index 414444d..8df5416 100644 --- a/tools/perf/builtin-ftrace.c +++ b/tools/perf/builtin-ftrace.c @@ -17,6 +17,7 @@ #include "evlist.h" #include "target.h" #include "thread_map.h" +#include "util/config.h" #define DEFAULT_TRACER "function_graph" @@ -198,6 +199,23 @@ static int __cmd_ftrace(struct perf_ftrace *ftrace, int argc, const char **argv) return done ? 0 : -1; } +static int perf_ftrace_config(const char *var, const char *value, void *cb) +{ + struct perf_ftrace *ftrace = cb; + + if (!strcmp(var, "ftrace.tracer")) { + if (!strcmp(value, "function_graph")) + ftrace->tracer = DEFAULT_TRACER; + else if (!strcmp(value, "function")) + ftrace->tracer = "function"; + else + return -1; + return 0; + } + + return 0; +} + int cmd_ftrace(int argc, const char **argv, const char *prefix __maybe_unused) { int ret; @@ -218,6 +236,8 @@ int cmd_ftrace(int argc, const char **argv, const char *prefix __maybe_unused) OPT_END() }; + perf_config(perf_ftrace_config, &ftrace); + argc = parse_options(argc, argv, ftrace_options, ftrace_usage, PARSE_OPT_STOP_AT_NON_OPTION); if (!argc) -- 2.7.4