summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2011-09-01 18:35:42 -0400
committerSteven Rostedt <rostedt@goodmis.org>2011-09-01 18:35:42 -0400
commit1f4e25c03767174ad441e78e49c1744741efff31 (patch)
tree80443c45938f83b35d4201e3b674527b3c5235d5
parentbd2a8da00b01bd9061890bb8bd196309cd28441a (diff)
downloadrt-tests-1f4e25c03767174ad441e78e49c1744741efff31.tar.gz
Have -I and -P together also be -B
-B is used to enable preemptirqsoff, but it also makes sense that one could use both -I and -P together for the same thing. Also rename the enum IRQPREEMPTOFF TO PREEMPTIRQSOFF to match the tracer it represents and avoid confusion. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--src/cyclictest/cyclictest.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
index 17d45a3..dc97939 100644
--- a/src/cyclictest/cyclictest.c
+++ b/src/cyclictest/cyclictest.c
@@ -112,7 +112,7 @@ enum {
CTXTSWITCH,
IRQSOFF,
PREEMPTOFF,
- IRQPREEMPTOFF,
+ PREEMPTIRQSOFF,
WAKEUP,
WAKEUPRT,
LATENCY,
@@ -434,7 +434,7 @@ static void setup_tracer(void)
case PREEMPTOFF:
ret = settracer("preemptoff");
break;
- case IRQPREEMPTOFF:
+ case PREEMPTIRQSOFF:
ret = settracer("preemptirqsoff");
break;
case CTXTSWITCH:
@@ -988,7 +988,7 @@ static void process_options (int argc, char *argv[])
}
break;
case 'b': tracelimit = atoi(optarg); break;
- case 'B': tracetype = IRQPREEMPTOFF; break;
+ case 'B': tracetype = PREEMPTIRQSOFF; break;
case 'c': clocksel = atoi(optarg); break;
case 'C': tracetype = CTXTSWITCH; break;
case 'd': distance = atoi(optarg); break;
@@ -997,7 +997,15 @@ static void process_options (int argc, char *argv[])
case 'H': histofall = 1; /* fall through */
case 'h': histogram = atoi(optarg); break;
case 'i': interval = atoi(optarg); break;
- case 'I': tracetype = IRQSOFF; break;
+ case 'I':
+ if (tracetype == PREEMPTOFF) {
+ tracetype = PREEMPTIRQSOFF;
+ strncpy(tracer, "preemptirqsoff", sizeof(tracer));
+ } else {
+ tracetype = IRQSOFF;
+ strncpy(tracer, "irqsoff", sizeof(tracer));
+ }
+ break;
case 'l': max_cycles = atoi(optarg); break;
case 'n': use_nanosleep = MODE_CLOCK_NANOSLEEP; break;
case 'N': use_nsecs = 1; break;
@@ -1008,7 +1016,15 @@ static void process_options (int argc, char *argv[])
if (policy != SCHED_FIFO && policy != SCHED_RR)
policy = SCHED_FIFO;
break;
- case 'P': tracetype = PREEMPTOFF; break;
+ case 'P':
+ if (tracetype == IRQSOFF) {
+ tracetype = PREEMPTIRQSOFF;
+ strncpy(tracer, "preemptirqsoff", sizeof(tracer));
+ } else {
+ tracetype = PREEMPTOFF;
+ strncpy(tracer, "preemptoff", sizeof(tracer));
+ }
+ break;
case 'q': quiet = 1; break;
case 'r': timermode = TIMER_RELTIME; break;
case 's': use_system = MODE_SYS_OFFSET; break;
@@ -1322,7 +1338,7 @@ int main(int argc, char **argv)
warn("High resolution timers not available\n");
mode = use_nanosleep + use_system;
-
+
sigemptyset(&sigset);
sigaddset(&sigset, signum);
sigprocmask (SIG_BLOCK, &sigset, NULL);