diff options
author | Ben Cheng <bccheng@android.com> | 2010-09-03 16:46:45 -0700 |
---|---|---|
committer | Ben Cheng <bccheng@google.com> | 2010-10-06 15:55:47 -0700 |
commit | 041ee6ccda354960ebc1e1ccfff78685ec5326e1 (patch) | |
tree | a95548632fcb563ede8e8e549e3c51423c203d2a | |
parent | 802e057e6e55fc120cb6d344ca5e6a2690cff3f0 (diff) | |
download | oprofile-041ee6ccda354960ebc1e1ccfff78685ec5326e1.tar.gz |
Add timer mode in opcontrol.android-sdk-2.3.4_r1android-cts-2.3_r5android-cts-2.3_r4android-cts-2.3_r3android-cts-2.3_r2android-cts-2.3_r12android-cts-2.3_r11android-cts-2.3_r10android-cts-2.3_r1android-2.3_r1android-2.3.7_r1android-2.3.6_r1android-2.3.6_r0.9android-2.3.5_r1android-2.3.4_r1android-2.3.4_r0.9android-2.3.3_r1aandroid-2.3.3_r1.1android-2.3.3_r1android-2.3.2_r1android-2.3.1_r1gingerbread-releasegingerbread-mr4-releasegingerbread
(cherry-picked from master - temporary workaround for the transition from
oprofile to perf events)
Change-Id: I647523e68814dee525b7599e9088b68a19e67f4b
-rw-r--r-- | opcontrol/opcontrol.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/opcontrol/opcontrol.cpp b/opcontrol/opcontrol.cpp index 0552c8c..f8031a6 100644 --- a/opcontrol/opcontrol.cpp +++ b/opcontrol/opcontrol.cpp @@ -53,6 +53,7 @@ int list_events; int show_usage; int setup; int quick; +int timer; int num_events; int start; int stop; @@ -71,6 +72,7 @@ struct option long_options[] = { {"reset", 0, &reset, 1}, {"setup", 0, &setup, 1}, {"quick", 0, &quick, 1}, + {"timer", 0, &timer, 1}, {"callgraph", 1, 0, 'c'}, {"event", 1, 0, 'e'}, {"vmlinux", 1, 0, 'v'}, @@ -296,6 +298,7 @@ void usage() #else " --quick setup and select CPU_CYCLES:150000\n" #endif + " --timer timer-based profiling\n" " --status show configuration\n" " --start start data collection\n" " --stop stop data collection\n" @@ -635,6 +638,10 @@ int main(int argc, char * const argv[]) setup = 1; } + if (timer) { + setup = 1; + } + if (reset) { do_reset(); } @@ -654,7 +661,7 @@ int main(int argc, char * const argv[]) echo_dev(callgraph, 0, "backtrace_depth", -1); } - if (num_events != 0) { + if (num_events != 0 || timer != 0) { int i; strcpy(command, "oprofiled --session-dir="OP_DATA_DIR); @@ -736,9 +743,15 @@ int main(int argc, char * const argv[]) } } - /* Disable the unused counters */ - for (i = num_events; i < MAX_EVENTS; i++) { - echo_dev("0", 0, "enabled", i); + if (timer == 0) { + /* If not in timer mode, disable unused counters */ + for (i = num_events; i < MAX_EVENTS; i++) { + echo_dev("0", 0, "enabled", i); + } + } else { + /* Timer mode uses empty event list */ + snprintf(command+strlen(command), 1024 - strlen(command), + " --events="); } snprintf(command+strlen(command), 1024 - strlen(command), " %s", |