From fcdef80f5f3910f2a9a8f6fcc7045bd068a9bce5 Mon Sep 17 00:00:00 2001 From: Frank Rowand Date: Mon, 13 Aug 2012 13:37:42 -0700 Subject: 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 Signed-off-by: John Kacur Conflicts: src/cyclictest/cyclictest.c --- src/cyclictest/cyclictest.c | 145 ++++++++++++++++++++++---------------------- 1 file 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; } -- cgit 1.2.3-korg