Add timer mode in opcontrol.

Change-Id: Ic0ab81deac51b48068e3a9b92a417003196161ea
diff --git a/opcontrol/opcontrol.cpp b/opcontrol/opcontrol.cpp
index ecf4f10..3eb0d28 100644
--- a/opcontrol/opcontrol.cpp
+++ b/opcontrol/opcontrol.cpp
@@ -53,6 +53,7 @@
 int show_usage;
 int setup;
 int quick;
+int timer;
 int num_events;
 int start;
 int stop;
@@ -71,6 +72,7 @@
     {"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 @@
 #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 @@
         setup = 1;
     }
 
+    if (timer) {
+        setup = 1;
+    }
+
     if (reset) {
         do_reset();
     }
@@ -654,7 +661,7 @@
         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 @@
             }
         }
 
-        /* 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",