aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-sched.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-sched.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-sched.c')
-rw-r--r--tools/perf/builtin-sched.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
index 5e59c0c40c40..09ddc8e6d8e1 100644
--- a/tools/perf/builtin-sched.c
+++ b/tools/perf/builtin-sched.c
@@ -1790,7 +1790,7 @@ static const char * const sched_usage[] = {
1790static const struct option sched_options[] = { 1790static const struct option sched_options[] = {
1791 OPT_STRING('i', "input", &input_name, "file", 1791 OPT_STRING('i', "input", &input_name, "file",
1792 "input file name"), 1792 "input file name"),
1793 OPT_BOOLEAN('v', "verbose", &verbose, 1793 OPT_INCR('v', "verbose", &verbose,
1794 "be more verbose (show symbol address, etc)"), 1794 "be more verbose (show symbol address, etc)"),
1795 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, 1795 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
1796 "dump raw trace in ASCII"), 1796 "dump raw trace in ASCII"),
@@ -1805,7 +1805,7 @@ static const char * const latency_usage[] = {
1805static const struct option latency_options[] = { 1805static const struct option latency_options[] = {
1806 OPT_STRING('s', "sort", &sort_order, "key[,key2...]", 1806 OPT_STRING('s', "sort", &sort_order, "key[,key2...]",
1807 "sort by key(s): runtime, switch, avg, max"), 1807 "sort by key(s): runtime, switch, avg, max"),
1808 OPT_BOOLEAN('v', "verbose", &verbose, 1808 OPT_INCR('v', "verbose", &verbose,
1809 "be more verbose (show symbol address, etc)"), 1809 "be more verbose (show symbol address, etc)"),
1810 OPT_INTEGER('C', "CPU", &profile_cpu, 1810 OPT_INTEGER('C', "CPU", &profile_cpu,
1811 "CPU to profile on"), 1811 "CPU to profile on"),
@@ -1822,7 +1822,7 @@ static const char * const replay_usage[] = {
1822static const struct option replay_options[] = { 1822static const struct option replay_options[] = {
1823 OPT_INTEGER('r', "repeat", &replay_repeat, 1823 OPT_INTEGER('r', "repeat", &replay_repeat,
1824 "repeat the workload replay N times (-1: infinite)"), 1824 "repeat the workload replay N times (-1: infinite)"),
1825 OPT_BOOLEAN('v', "verbose", &verbose, 1825 OPT_INCR('v', "verbose", &verbose,
1826 "be more verbose (show symbol address, etc)"), 1826 "be more verbose (show symbol address, etc)"),
1827 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, 1827 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
1828 "dump raw trace in ASCII"), 1828 "dump raw trace in ASCII"),