aboutsummaryrefslogtreecommitdiff
path: root/tools/regression/p1003_1b/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/regression/p1003_1b/main.c')
-rw-r--r--tools/regression/p1003_1b/main.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/tools/regression/p1003_1b/main.c b/tools/regression/p1003_1b/main.c
new file mode 100644
index 000000000000..7333b64bd455
--- /dev/null
+++ b/tools/regression/p1003_1b/main.c
@@ -0,0 +1,79 @@
+
+#include <sys/param.h>
+
+#include <stdio.h>
+#include <string.h>
+
+int fifo(int argc, char *argv[]);
+int memlock(int argc, char *argv[]);
+int p26(int argc, char *argv[]);
+int sched(int argc, char *argv[]);
+int yield(int argc, char *argv[]);
+
+static struct {
+ const char *t;
+ int (*f)(int, char *[]);
+ int works;
+} tab[] = {
+ { "fifo", fifo, 1 },
+ { "memlock", memlock, 0 },
+ { "p26", p26, 1 },
+ { "sched", sched, 1 },
+ { "yield", yield, 1 },
+};
+
+static int usage(int argc, char *argv[])
+{
+ int i;
+ if (argc > 1)
+ fprintf(stderr, "%s is unknown\n", argv[1]);
+
+ fprintf(stderr, "usage: %s [-a] or one of [", argv[0]);
+ for (i = 0; i < (sizeof(tab) / sizeof(tab[0])); i++)
+ fprintf(stderr, "%s%s", (i)? " | " : "", tab[i].t);
+ fprintf(stderr, "]\n");
+
+ return -1;
+}
+
+int main(int argc, char *argv[])
+{
+ int i;
+
+ if (argc == 2 && strcmp(argv[1], "-a") == 0) {
+#if 1
+ fprintf(stderr,
+ "-a should but doesn't really work"
+ " (my notes say \"because things detach\");\n"
+ "meanwhile do these individual tests and look"
+ " for a non-zero exit code:\n");
+ for (i = 0; i < nitems(tab); i++)
+ if (tab[i].works)
+ fprintf(stderr, "p1003_1b %s\n", tab[i].t);
+ return -1;
+#else
+ {
+ int r;
+ for (i = 0; i < nitems(tab); i++) {
+ if (tab[i].works) {
+ if ( (r =
+ (*tab[i].f)(argc - 1, argv + 1)) ) {
+ fprintf(stderr,
+ "%s failed\n", tab[i].t);
+ return r;
+ }
+ }
+ }
+ return 0;
+ }
+#endif
+ }
+
+ if (argc > 1) {
+ for (i = 0; i < nitems(tab); i++)
+ if (strcmp(tab[i].t, argv[1]) == 0)
+ return (*tab[i].f)(argc - 1, argv + 1);
+ }
+
+ return usage(argc, argv);
+}