On Wed, 7 Oct 2020, Daniel Wagner wrote: > Use getopt_long to parse long version of the commands. > > Change the 'a/affinity' option to handle all cases including what '-c' > did. We still keep '-c' silently supported to avoid breaking existing > users. > > Signed-off-by: Daniel Wagner <dwagner@xxxxxxx> > --- > src/sched_deadline/cyclicdeadline.8 | 17 +++++------- > src/sched_deadline/cyclicdeadline.c | 42 ++++++++++++++++++++--------- > 2 files changed, 36 insertions(+), 23 deletions(-) > > diff --git a/src/sched_deadline/cyclicdeadline.8 b/src/sched_deadline/cyclicdeadline.8 > index 6df7faf445f9..def42f77044a 100644 > --- a/src/sched_deadline/cyclicdeadline.8 > +++ b/src/sched_deadline/cyclicdeadline.8 > @@ -17,7 +17,7 @@ cyclicdeadline \- This program is used to test the deadline scheduler (SCHED_DEA > .PP > .SH SYNOPSIS > .B cyclicdeadline > -.RI "[-ha] [-c CPUSET] [-D TIME] [-i INTV] [-s STEP] [-t NUM]" > +.RI "[-a [CPUSET]] [-D TIME] [-h] [-i INTV] [-s STEP] [-t NUM]" > .PP > .SH DESCRIPTION > .B cyclicdeadline > @@ -25,26 +25,23 @@ is a cyclictest style program for testing the deadline scheduler > .PP > .SH OPTIONS > .TP > -.B \-a > -Use all CPUs > -.TP > -.B \-c CPUSET > +.B \-a \-\-affinity [CPUSET] > Comma / hypen separated list of CPUs to run deadline tasks on > .TP > -.B \-D TIME > +.B \-D \-\-duration TIME > Specify a length for the test to run > Append 'm', 'h', or 'd' to specify minutes, hours, or days > .TP > -.B \-h > +.B \-h \-\-help > Show this help menu > .TP > -.B \-i INTV > +.B \-i \-\-interval INTV > The shortest deadline for the tasks in us. (default 1000us) > .TP > -.B \-s STEP > +.B \-s \-\-step STEP > The amount to increase the deadline for each task in us. (default 500us) > .TP > -.B \-t NUM > +.B \-t \-\-threads NUM > The number of threads to run as deadline (default 1) > .br > .SH AUTHOR > diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c > index 310880805553..5f5cdfa08f14 100644 > --- a/src/sched_deadline/cyclicdeadline.c > +++ b/src/sched_deadline/cyclicdeadline.c > @@ -17,6 +17,7 @@ > #include <ctype.h> > #include <errno.h> > #include <signal.h> > +#include <getopt.h> > > #include <sys/syscall.h> > #include <sys/types.h> > @@ -635,18 +636,19 @@ static void usage(int error) > printf("cyclicdeadline V %1.2f\n", VERSION); > printf("Usage:\n" > "cyclicdeadline <options>\n\n" > - "-a Use all CPUs\n" > - "-c CPUSET Comma/hyphen separated list of CPUs to run deadline\n" > - " tasks on.\n" > - "-D TIME Specify a length for the test run.\n" > + "-a [CPUSET] --affinity Comma/hyphen separated list of CPUs to run deadline\n" > + " tasks on. An empty CPUSET runs on all CPUs a deadline\n" > + " task.\n" > + " on CPU 4, and thread #5 on CPU 5.\n" > + "-D TIME --duration Specify a length for the test run.\n" > " Append 'm', 'h', or 'd' to specify minutes, hours or\n" > " days\n" > - "-h Show this help menu.\n" > - "-i INTV The shortest deadline for the tasks in us\n" > + "-h --help Show this help menu.\n" > + "-i INTV --interval The shortest deadline for the tasks in us\n" > " (default 1000us).\n" > - "-s STEP The amount to increase the deadline for each task in us\n" > + "-s STEP --step The amount to increase the deadline for each task in us\n" > " (default 500us).\n" > - "-t NUM The number of threads to run as deadline (default 1).\n" > + "-t NUM --threads The number of threads to run as deadline (default 1).\n" > ); > exit(error); > } > @@ -1033,15 +1035,29 @@ int main (int argc, char **argv) > exit(-1); > } > > - while ((c = getopt(argc, argv, "+hac:i:s:t:D:")) >= 0) { > + for (;;) { > + static struct option options[] = { > + { "affinity", optional_argument, NULL, 'a' }, > + { "duration", required_argument, NULL, 'D' }, > + { "help", no_argument, NULL, 'h' }, > + { "interval", required_argument, NULL, 'i' }, > + { "threads", required_argument, NULL, 't' }, > + { NULL, 0, NULL, 0 }, > + }; > + c = getopt_long(argc, argv, "a::c:D:hi:t:", options, NULL); > + if (c == -1) > + break; > switch (c) { > case 'a': > - all_cpus = 1; > + case 'c': > if (!nr_threads) > nr_threads = cpu_count; > - break; > - case 'c': > - setcpu = optarg; > + if (optarg) > + setcpu = optarg; > + else if (optind < argc) > + setcpu = argv[optind]; > + else > + all_cpus = 1; > break; > case 'i': > interval = atoi(optarg); > -- > 2.28.0 > > Signed-off-by: John Kacur <jkacur@xxxxxxxxxx> Go ahead and send me a patch to remove the -c option no need to retain this for silent backwards compatibility. Thanks