From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11701 invoked by alias); 15 Dec 2009 15:26:48 -0000 Received: (qmail 11693 invoked by uid 22791); 15 Dec 2009 15:26:46 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,FS_TIP_DDD,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 15 Dec 2009 15:26:41 +0000 Received: from int-mx04.intmail.prod.int.phx2.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.17]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id nBFFQdhR008958 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 15 Dec 2009 10:26:39 -0500 Received: from dhcp-100-2-132.bos.redhat.com (dhcp-100-2-132.bos.redhat.com [10.16.2.132]) by int-mx04.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id nBFFQbRf008345; Tue, 15 Dec 2009 10:26:37 -0500 From: Masami Hiramatsu Subject: [PATCH -tip 01/14] perf probe: Cleanup struct session in builtin-probe.c To: Ingo Molnar , Frederic Weisbecker , lkml Cc: Paul Mackerras , Arnaldo Carvalho de Melo , Steven Rostedt , Jim Keniston , Ananth N Mavinakayanahalli , Christoph Hellwig , "Frank Ch. Eigler" , Jason Baron , "K.Prasad" , Peter Zijlstra , Srikar Dronamraju , systemtap, DLE Date: Tue, 15 Dec 2009 15:26:00 -0000 Message-ID: <20091215153114.17436.77000.stgit@dhcp-100-2-132.bos.redhat.com> In-Reply-To: <20091215153106.17436.66584.stgit@dhcp-100-2-132.bos.redhat.com> References: <20091215153106.17436.66584.stgit@dhcp-100-2-132.bos.redhat.com> User-Agent: StGIT/0.14.3 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2009-q4/txt/msg00911.txt.bz2 Cleanup struct session in builtin-probe.c, including change need_dwarf to bool and move listing flag into struct session as list_events flag. This also changes parse_perf_probe_event() interface due to code readability. Signed-off-by: Masami Hiramatsu Cc: Ingo Molnar Cc: Paul Mackerras Cc: Arnaldo Carvalho de Melo Cc: Steven Rostedt Cc: Jim Keniston Cc: Ananth N Mavinakayanahalli Cc: Christoph Hellwig Cc: Frank Ch. Eigler Cc: Frederic Weisbecker Cc: Jason Baron Cc: K.Prasad Cc: Peter Zijlstra Cc: Srikar Dronamraju --- tools/perf/builtin-probe.c | 13 +++++++------ tools/perf/util/probe-event.c | 12 +++++++----- tools/perf/util/probe-event.h | 4 +++- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c index 5a47c1e..559eeb4 100644 --- a/tools/perf/builtin-probe.c +++ b/tools/perf/builtin-probe.c @@ -59,13 +59,13 @@ const char *default_search_path[NR_SEARCH_PATH] = { static struct { char *vmlinux; char *release; - int need_dwarf; + bool need_dwarf; + bool list_events; int nr_probe; struct probe_point probes[MAX_PROBES]; struct strlist *dellist; } session; -static bool listing; /* Parse an event definition. Note that any error must die. */ static void parse_probe_event(const char *str) @@ -77,7 +77,7 @@ static void parse_probe_event(const char *str) die("Too many probes (> %d) are specified.", MAX_PROBES); /* Parse perf-probe event into probe_point */ - session.need_dwarf = parse_perf_probe_event(str, pp); + parse_perf_probe_event(str, pp, &session.need_dwarf); pr_debug("%d arguments\n", pp->nr_args); } @@ -166,7 +166,8 @@ static const struct option options[] = { OPT_STRING('k', "vmlinux", &session.vmlinux, "file", "vmlinux/module pathname"), #endif - OPT_BOOLEAN('l', "list", &listing, "list up current probe events"), + OPT_BOOLEAN('l', "list", &session.list_events, + "list up current probe events"), OPT_CALLBACK('d', "del", NULL, "[GROUP:]EVENT", "delete a probe event.", opt_del_probe_event), OPT_CALLBACK('a', "add", NULL, @@ -207,10 +208,10 @@ int cmd_probe(int argc, const char **argv, const char *prefix __used) if (argc > 0) parse_probe_event_argv(argc, argv); - if ((session.nr_probe == 0 && !session.dellist && !listing)) + if ((!session.nr_probe && !session.dellist && !session.list_events)) usage_with_options(probe_usage, options); - if (listing) { + if (session.list_events) { if (session.nr_probe != 0 || session.dellist) { pr_warning(" Error: Don't use --list with" " --add/--del.\n"); diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index d14a458..add379c 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c @@ -150,10 +150,13 @@ static void parse_perf_probe_probepoint(char *arg, struct probe_point *pp) } /* Parse perf-probe event definition */ -int parse_perf_probe_event(const char *str, struct probe_point *pp) +void parse_perf_probe_event(const char *str, struct probe_point *pp, + bool *need_dwarf) { char **argv; - int argc, i, need_dwarf = 0; + int argc, i; + + *need_dwarf = false; argv = argv_split(str, &argc); if (!argv) @@ -164,7 +167,7 @@ int parse_perf_probe_event(const char *str, struct probe_point *pp) /* Parse probe point */ parse_perf_probe_probepoint(argv[0], pp); if (pp->file || pp->line) - need_dwarf = 1; + *need_dwarf = true; /* Copy arguments and ensure return probe has no C argument */ pp->nr_args = argc - 1; @@ -177,12 +180,11 @@ int parse_perf_probe_event(const char *str, struct probe_point *pp) if (pp->retprobe) semantic_error("You can't specify local" " variable for kretprobe"); - need_dwarf = 1; + *need_dwarf = true; } } argv_free(argv); - return need_dwarf; } /* Parse kprobe_events event into struct probe_point */ diff --git a/tools/perf/util/probe-event.h b/tools/perf/util/probe-event.h index f752159..028575b 100644 --- a/tools/perf/util/probe-event.h +++ b/tools/perf/util/probe-event.h @@ -1,10 +1,12 @@ #ifndef _PROBE_EVENT_H #define _PROBE_EVENT_H +#include #include "probe-finder.h" #include "strlist.h" -extern int parse_perf_probe_event(const char *str, struct probe_point *pp); +extern void parse_perf_probe_event(const char *str, struct probe_point *pp, + bool *need_dwarf); extern int synthesize_perf_probe_event(struct probe_point *pp); extern void parse_trace_kprobe_event(const char *str, char **group, char **event, struct probe_point *pp); -- Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: mhiramat@redhat.com