aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-top.c
diff options
context:
space:
mode:
authorIan Munsie <imunsie@au.ibm.com>2010-04-13 04:37:33 -0400
committerIngo Molnar <mingo@elte.hu>2010-04-14 05:26:44 -0400
commitc05556421742eb47f80301767653a4bcb19de9de (patch)
tree1e9c441a457acee41d2585e05692cc90c1d88be2 /tools/perf/builtin-top.c
parent53e5b5c215ce8372250e227f2c9acf9892de8434 (diff)
perf: Fix endianness argument compatibility with OPT_BOOLEAN() and introduce OPT_INCR()
Parsing an option from the command line with OPT_BOOLEAN on a bool data type would not work on a big-endian machine due to the manner in which the boolean was being cast into an int and incremented. For example, running 'perf probe --list' on a PowerPC machine would fail to properly set the list_events bool and would therefore print out the usage information and terminate. This patch makes OPT_BOOLEAN work as expected with a bool datatype. For cases where the original OPT_BOOLEAN was intentionally being used to increment an int each time it was passed in on the command line, this patch introduces OPT_INCR with the old behaviour of OPT_BOOLEAN (the verbose variable is currently the only such example of this). I have reviewed every use of OPT_BOOLEAN to verify that a true C99 bool was passed. Where integers were used, I verified that they were only being used for boolean logic and changed them to bools to ensure that they would not be mistakenly used as ints. The major exception was the verbose variable which now uses OPT_INCR instead of OPT_BOOLEAN. Signed-off-by: Ian Munsie <imunsie@au.ibm.com> Acked-by: David S. Miller <davem@davemloft.net> Cc: <stable@kernel.org> # NOTE: wont apply to .3[34].x cleanly, please backport Cc: Git development list <git@vger.kernel.org> Cc: Ian Munsie <imunsie@au1.ibm.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Hitoshi Mitake <mitake@dcl.info.waseda.ac.jp> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Eric B Munson <ebmunson@us.ibm.com> Cc: Valdis.Kletnieks@vt.edu Cc: WANG Cong <amwang@redhat.com> Cc: Thiago Farina <tfransosi@gmail.com> Cc: Masami Hiramatsu <mhiramat@redhat.com> Cc: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com> Cc: Jaswinder Singh Rajput <jaswinderrajput@gmail.com> Cc: Arjan van de Ven <arjan@linux.intel.com> Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> Cc: Mike Galbraith <efault@gmx.de> Cc: Tom Zanussi <tzanussi@gmail.com> Cc: Anton Blanchard <anton@samba.org> Cc: John Kacur <jkacur@redhat.com> Cc: Li Zefan <lizf@cn.fujitsu.com> Cc: Steven Rostedt <rostedt@goodmis.org> LKML-Reference: <1271147857-11604-1-git-send-email-imunsie@au.ibm.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/builtin-top.c')
-rw-r--r--tools/perf/builtin-top.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 4abdd9b646b3..40f24dd46ef4 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -57,7 +57,7 @@
57 57
58static int *fd[MAX_NR_CPUS][MAX_COUNTERS]; 58static int *fd[MAX_NR_CPUS][MAX_COUNTERS];
59 59
60static int system_wide = 0; 60static bool system_wide = false;
61 61
62static int default_interval = 0; 62static int default_interval = 0;
63 63
@@ -68,18 +68,18 @@ static int target_pid = -1;
68static int target_tid = -1; 68static int target_tid = -1;
69static pid_t *all_tids = NULL; 69static pid_t *all_tids = NULL;
70static int thread_num = 0; 70static int thread_num = 0;
71static int inherit = 0; 71static bool inherit = false;
72static int profile_cpu = -1; 72static int profile_cpu = -1;
73static int nr_cpus = 0; 73static int nr_cpus = 0;
74static unsigned int realtime_prio = 0; 74static unsigned int realtime_prio = 0;
75static int group = 0; 75static bool group = false;
76static unsigned int page_size; 76static unsigned int page_size;
77static unsigned int mmap_pages = 16; 77static unsigned int mmap_pages = 16;
78static int freq = 1000; /* 1 KHz */ 78static int freq = 1000; /* 1 KHz */
79 79
80static int delay_secs = 2; 80static int delay_secs = 2;
81static int zero = 0; 81static bool zero = false;
82static int dump_symtab = 0; 82static bool dump_symtab = false;
83 83
84static bool hide_kernel_symbols = false; 84static bool hide_kernel_symbols = false;
85static bool hide_user_symbols = false; 85static bool hide_user_symbols = false;
@@ -854,7 +854,7 @@ static void handle_keypress(int c)
854 display_weighted = ~display_weighted; 854 display_weighted = ~display_weighted;
855 break; 855 break;
856 case 'z': 856 case 'z':
857 zero = ~zero; 857 zero = !zero;
858 break; 858 break;
859 default: 859 default:
860 break; 860 break;
@@ -1335,7 +1335,7 @@ static const struct option options[] = {
1335 "display this many functions"), 1335 "display this many functions"),
1336 OPT_BOOLEAN('U', "hide_user_symbols", &hide_user_symbols, 1336 OPT_BOOLEAN('U', "hide_user_symbols", &hide_user_symbols,
1337 "hide user symbols"), 1337 "hide user symbols"),
1338 OPT_BOOLEAN('v', "verbose", &verbose, 1338 OPT_INCR('v', "verbose", &verbose,
1339 "be more verbose (show counter open errors, etc)"), 1339 "be more verbose (show counter open errors, etc)"),
1340 OPT_END() 1340 OPT_END()
1341}; 1341};