summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Rowand <frank.rowand@am.sony.com>2012-08-13 13:37:42 -0700
committerJohn Kacur <jkacur@redhat.com>2012-10-17 00:24:59 +0200
commitfcdef80f5f3910f2a9a8f6fcc7045bd068a9bce5 (patch)
tree3f02ae6a1cd3393fec05b24e1928c7aab8ba8d51
parent2400e5e3b561e66a7779a4115e756959d2dcff1c (diff)
downloadrt-tests-fcdef80f5f3910f2a9a8f6fcc7045bd068a9bce5.tar.gz
V3: cyclictest: clean up getopt_long() parameters
V3: unchanged from V2 cyclictest getopt_long() parameter clean up. Clean up before following patch which will add a new option. Some elements of long_options were not in alphabetical order. Some elements of optstring were not in alphabetical order. '-e', '--latency' was missing help text short form of --duration ('D') was missing from optstring Change a few instances of leading spaces to tabs. Add white space to long_options to improve readability. Some cases of the switch processing the result of getopt_long() were not in alphabetical order. Did _not_ clean up option value parsing and processing. Signed-off-by: Frank Rowand <frank.rowand@am.sony.com> Signed-off-by: John Kacur <jkacur@redhat.com> Conflicts: src/cyclictest/cyclictest.c
-rw-r--r--src/cyclictest/cyclictest.c145
1 files changed, 74 insertions, 71 deletions
diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
index 824544f..e53e1ce 100644
--- a/src/cyclictest/cyclictest.c
+++ b/src/cyclictest/cyclictest.c
@@ -928,10 +928,11 @@ static void display_help(int error)
"-D --duration=t specify a length for the test run\n"
" default is in seconds, but 'm', 'h', or 'd' maybe added\n"
" to modify value to minutes, hours or days\n"
+ "-e --latency=PM_QOS write PM_QOS to /dev/cpu_dma_latency\n"
"-E --event event tracing (used with -b)\n"
"-f --ftrace function trace (when -b is active)\n"
"-h --histogram=US dump a latency histogram to stdout after the run\n"
- " (with same priority about many threads)\n"
+ " (with same priority about many threads)\n"
" US is the max time to be be tracked in microseconds\n"
"-H --histofall=US same as -h except with an additional summary column\n"
"-i INTV --interval=INTV base interval of thread in us default=1000\n"
@@ -949,6 +950,8 @@ static void display_help(int error)
"-Q --priospread spread priority levels starting at specified value\n"
"-r --relative use relative timer instead of absolute\n"
"-s --system use sys_nanosleep and sys_setitimer\n"
+ "-S --smp Standard SMP testing: options -a -t -n and\n"
+ " same priority of all threads\n"
"-t --threads one thread per available processor\n"
"-t [NUM] --threads=NUM number of threads:\n"
" without NUM, threads = max_cpus\n"
@@ -956,16 +959,14 @@ static void display_help(int error)
"-T TRACE --tracer=TRACER set tracing function\n"
" configured tracers: %s\n"
"-u --unbuffered force unbuffered output for live processing\n"
+ "-U --numa Standard NUMA testing (similar to SMP option)\n"
+ " thread data structures allocated from local node\n"
"-v --verbose output values on stdout for statistics\n"
" format: n:c:v n=tasknum c=count v=value in us\n"
- "-w --wakeup task wakeup tracing (used with -b)\n"
- "-W --wakeuprt rt task wakeup tracing (used with -b)\n"
- "-y POLI --policy=POLI policy of realtime thread, POLI may be fifo(default) or rr\n"
- " format: --policy=fifo(default) or --policy=rr\n"
- "-S --smp Standard SMP testing: options -a -t -n and\n"
- " same priority of all threads\n"
- "-U --numa Standard NUMA testing (similar to SMP option)\n"
- " thread data structures allocated from local node\n",
+ "-w --wakeup task wakeup tracing (used with -b)\n"
+ "-W --wakeuprt rt task wakeup tracing (used with -b)\n"
+ "-y POLI --policy=POLI policy of realtime thread, POLI may be fifo(default) or rr\n"
+ " format: --policy=fifo(default) or --policy=rr\n",
tracers
);
if (error)
@@ -1048,49 +1049,52 @@ static void process_options (int argc, char *argv[])
int max_cpus = sysconf(_SC_NPROCESSORS_CONF);
for (;;) {
- int option_index = 0;
- /** Options for getopt */
+ int option_index = 0;
+ /*
+ * Options for getopt
+ * Ordered alphabetically by single letter name
+ */
static struct option long_options[] = {
- {"affinity", optional_argument, NULL, 'a'},
- {"breaktrace", required_argument, NULL, 'b'},
- {"preemptirqs", no_argument, NULL, 'B'},
- {"clock", required_argument, NULL, 'c'},
- {"context", no_argument, NULL, 'C'},
- {"distance", required_argument, NULL, 'd'},
- {"event", no_argument, NULL, 'E'},
- {"ftrace", no_argument, NULL, 'f'},
- {"histogram", required_argument, NULL, 'h'},
- {"histofall", required_argument, NULL, 'H'},
- {"interval", required_argument, NULL, 'i'},
- {"irqsoff", no_argument, NULL, 'I'},
- {"loops", required_argument, NULL, 'l'},
- {"mlockall", no_argument, NULL, 'm' },
- {"refresh_on_max", no_argument, NULL, 'M' },
- {"nanosleep", no_argument, NULL, 'n'},
- {"nsecs", no_argument, NULL, 'N'},
- {"oscope", required_argument, NULL, 'o'},
- {"priority", required_argument, NULL, 'p'},
- {"policy", required_argument, NULL, 'y'},
- {"preemptoff", no_argument, NULL, 'P'},
- {"quiet", no_argument, NULL, 'q'},
- {"relative", no_argument, NULL, 'r'},
- {"system", no_argument, NULL, 's'},
- {"threads", optional_argument, NULL, 't'},
- {"unbuffered", no_argument, NULL, 'u'},
- {"verbose", no_argument, NULL, 'v'},
- {"duration",required_argument, NULL, 'D'},
- {"wakeup", no_argument, NULL, 'w'},
- {"wakeuprt", no_argument, NULL, 'W'},
- {"help", no_argument, NULL, '?'},
- {"tracer", required_argument, NULL, 'T'},
- {"traceopt", required_argument, NULL, 'O'},
- {"smp", no_argument, NULL, 'S'},
- {"numa", no_argument, NULL, 'U'},
- {"latency", required_argument, NULL, 'e'},
- {"priospread", no_argument, NULL, 'Q'},
+ {"affinity", optional_argument, NULL, 'a'},
+ {"breaktrace", required_argument, NULL, 'b'},
+ {"preemptirqs", no_argument, NULL, 'B'},
+ {"clock", required_argument, NULL, 'c'},
+ {"context", no_argument, NULL, 'C'},
+ {"distance", required_argument, NULL, 'd'},
+ {"duration", required_argument, NULL, 'D'},
+ {"latency", required_argument, NULL, 'e'},
+ {"event", no_argument, NULL, 'E'},
+ {"ftrace", no_argument, NULL, 'f'},
+ {"histogram", required_argument, NULL, 'h'},
+ {"histofall", required_argument, NULL, 'H'},
+ {"interval", required_argument, NULL, 'i'},
+ {"irqsoff", no_argument, NULL, 'I'},
+ {"loops", required_argument, NULL, 'l'},
+ {"mlockall", no_argument, NULL, 'm'},
+ {"refresh_on_max", no_argument, NULL, 'M'},
+ {"nanosleep", no_argument, NULL, 'n'},
+ {"nsecs", no_argument, NULL, 'N'},
+ {"oscope", required_argument, NULL, 'o'},
+ {"traceopt", required_argument, NULL, 'O'},
+ {"priority", required_argument, NULL, 'p'},
+ {"preemptoff", no_argument, NULL, 'P'},
+ {"quiet", no_argument, NULL, 'q'},
+ {"priospread", no_argument, NULL, 'Q'},
+ {"relative", no_argument, NULL, 'r'},
+ {"system", no_argument, NULL, 's'},
+ {"smp", no_argument, NULL, 'S'},
+ {"threads", optional_argument, NULL, 't'},
+ {"tracer", required_argument, NULL, 'T'},
+ {"unbuffered", no_argument, NULL, 'u'},
+ {"numa", no_argument, NULL, 'U'},
+ {"verbose", no_argument, NULL, 'v'},
+ {"wakeup", no_argument, NULL, 'w'},
+ {"wakeuprt", no_argument, NULL, 'W'},
+ {"policy", required_argument, NULL, 'y'},
+ {"help", no_argument, NULL, '?'},
{NULL, 0, NULL, 0}
};
- int c = getopt_long(argc, argv, "a::b:Bc:Cd:Efh:H:i:Il:MnNo:O:p:PmqQrsSt::uUvD:wWT:y:e:",
+ int c = getopt_long(argc, argv, "a::b:Bc:Cd:D:e:Efh:H:i:Il:MnNo:O:p:PmqQrsSt::uUvD:wWT:y:",
long_options, &option_index);
if (c == -1)
break;
@@ -1114,6 +1118,13 @@ static void process_options (int argc, char *argv[])
case 'c': clocksel = atoi(optarg); break;
case 'C': tracetype = CTXTSWITCH; break;
case 'd': distance = atoi(optarg); break;
+ case 'D': duration = parse_time_string(optarg); break;
+ case 'e': /* power management latency target value */
+ /* note: default is 0 (zero) */
+ latency_target_value = atoi(optarg);
+ if (latency_target_value < 0)
+ latency_target_value = 0;
+ break;
case 'E': enable_events = 1; break;
case 'f': tracetype = FUNCTION; ftrace = 1; break;
case 'H': histofall = 1; /* fall through */
@@ -1129,6 +1140,8 @@ static void process_options (int argc, char *argv[])
}
break;
case 'l': max_cycles = atoi(optarg); break;
+ case 'm': lockall = 1; break;
+ case 'M': refresh_on_max = 1; break;
case 'n': use_nanosleep = MODE_CLOCK_NANOSLEEP; break;
case 'N': use_nsecs = 1; break;
case 'o': oscope_reduction = atoi(optarg); break;
@@ -1151,6 +1164,14 @@ static void process_options (int argc, char *argv[])
case 'Q': priospread = 1; break;
case 'r': timermode = TIMER_RELTIME; break;
case 's': use_system = MODE_SYS_OFFSET; break;
+ case 'S': /* SMP testing */
+ if (numa)
+ fatal("numa and smp options are mutually exclusive\n");
+ smp = 1;
+ num_threads = max_cpus;
+ setaffinity = AFFINITY_USEALL;
+ use_nanosleep = MODE_CLOCK_NANOSLEEP;
+ break;
case 't':
if (smp) {
warn("-t ignored due to --smp\n");
@@ -1168,22 +1189,6 @@ static void process_options (int argc, char *argv[])
strncpy(tracer, optarg, sizeof(tracer));
break;
case 'u': setvbuf(stdout, NULL, _IONBF, 0); break;
- case 'v': verbose = 1; break;
- case 'm': lockall = 1; break;
- case 'M': refresh_on_max = 1; break;
- case 'D': duration = parse_time_string(optarg);
- break;
- case 'w': tracetype = WAKEUP; break;
- case 'W': tracetype = WAKEUPRT; break;
- case 'y': handlepolicy(optarg); break;
- case 'S': /* SMP testing */
- if (numa)
- fatal("numa and smp options are mutually exclusive\n");
- smp = 1;
- num_threads = max_cpus;
- setaffinity = AFFINITY_USEALL;
- use_nanosleep = MODE_CLOCK_NANOSLEEP;
- break;
case 'U': /* NUMA testing */
if (smp)
fatal("numa and smp options are mutually exclusive\n");
@@ -1199,12 +1204,10 @@ static void process_options (int argc, char *argv[])
warn("ignoring --numa or -U\n");
#endif
break;
- case 'e': /* power management latency target value */
- /* note: default is 0 (zero) */
- latency_target_value = atoi(optarg);
- if (latency_target_value < 0)
- latency_target_value = 0;
- break;
+ case 'v': verbose = 1; break;
+ case 'w': tracetype = WAKEUP; break;
+ case 'W': tracetype = WAKEUPRT; break;
+ case 'y': handlepolicy(optarg); break;
case '?': display_help(0); break;
}