4 int fifo(int argc, char *argv[]);
5 int memlock(int argc, char *argv[]);
6 int p26(int argc, char *argv[]);
7 int sched(int argc, char *argv[]);
8 int yield(int argc, char *argv[]);
12 int (*f)(int, char *[]);
16 { "memlock", memlock, 0 },
18 { "sched", sched, 1 },
19 { "yield", yield, 1 },
22 #define N(T) (sizeof (T)/ sizeof(T[0]))
24 static int usage(int argc, char *argv[])
28 fprintf(stderr, "%s is unknown\n", argv[1]);
30 fprintf(stderr, "usage: %s [-a] or one of [", argv[0]);
31 for (i = 0; i < (sizeof(tab) / sizeof(tab[0])); i++)
32 fprintf(stderr, "%s%s", (i)? " | " : "", tab[i].t);
33 fprintf(stderr, "]\n");
38 int main(int argc, char *argv[])
42 if (argc == 2 && strcmp(argv[1], "-a") == 0) {
45 "-a should but doesn't really work"
46 " (my notes say \"because things detach\");\n"
47 "meanwhile do these individual tests and look"
48 " for a non-zero exit code:\n");
49 for (i = 0; i < N(tab); i++)
51 fprintf(stderr, "p1003_1b %s\n", tab[i].t);
56 for (i = 0; i < N(tab); i++) {
59 (*tab[i].f)(argc - 1, argv + 1)) ) {
61 "%s failed\n", tab[i].t);
72 for (i = 0; i < N(tab); i++)
73 if (strcmp(tab[i].t, argv[1]) == 0)
74 return (*tab[i].f)(argc - 1, argv + 1);
77 return usage(argc, argv);