Changeset View
Changeset View
Standalone View
Standalone View
head/tools/regression/p1003_1b/main.c
/* $FreeBSD$ */ | /* $FreeBSD$ */ | ||||
#include <sys/param.h> | |||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <string.h> | #include <string.h> | ||||
int fifo(int argc, char *argv[]); | int fifo(int argc, char *argv[]); | ||||
int memlock(int argc, char *argv[]); | int memlock(int argc, char *argv[]); | ||||
int p26(int argc, char *argv[]); | int p26(int argc, char *argv[]); | ||||
int sched(int argc, char *argv[]); | int sched(int argc, char *argv[]); | ||||
int yield(int argc, char *argv[]); | int yield(int argc, char *argv[]); | ||||
static struct { | static struct { | ||||
const char *t; | const char *t; | ||||
int (*f)(int, char *[]); | int (*f)(int, char *[]); | ||||
int works; | int works; | ||||
} tab[] = { | } tab[] = { | ||||
{ "fifo", fifo, 1 }, | { "fifo", fifo, 1 }, | ||||
{ "memlock", memlock, 0 }, | { "memlock", memlock, 0 }, | ||||
{ "p26", p26, 1 }, | { "p26", p26, 1 }, | ||||
{ "sched", sched, 1 }, | { "sched", sched, 1 }, | ||||
{ "yield", yield, 1 }, | { "yield", yield, 1 }, | ||||
}; | }; | ||||
#define N(T) (sizeof (T)/ sizeof(T[0])) | |||||
static int usage(int argc, char *argv[]) | static int usage(int argc, char *argv[]) | ||||
{ | { | ||||
int i; | int i; | ||||
if (argc > 1) | if (argc > 1) | ||||
fprintf(stderr, "%s is unknown\n", argv[1]); | fprintf(stderr, "%s is unknown\n", argv[1]); | ||||
fprintf(stderr, "usage: %s [-a] or one of [", argv[0]); | fprintf(stderr, "usage: %s [-a] or one of [", argv[0]); | ||||
for (i = 0; i < (sizeof(tab) / sizeof(tab[0])); i++) | for (i = 0; i < (sizeof(tab) / sizeof(tab[0])); i++) | ||||
Show All 9 Lines | int main(int argc, char *argv[]) | ||||
if (argc == 2 && strcmp(argv[1], "-a") == 0) { | if (argc == 2 && strcmp(argv[1], "-a") == 0) { | ||||
#if 1 | #if 1 | ||||
fprintf(stderr, | fprintf(stderr, | ||||
"-a should but doesn't really work" | "-a should but doesn't really work" | ||||
" (my notes say \"because things detach\");\n" | " (my notes say \"because things detach\");\n" | ||||
"meanwhile do these individual tests and look" | "meanwhile do these individual tests and look" | ||||
" for a non-zero exit code:\n"); | " for a non-zero exit code:\n"); | ||||
for (i = 0; i < N(tab); i++) | for (i = 0; i < nitems(tab); i++) | ||||
if (tab[i].works) | if (tab[i].works) | ||||
fprintf(stderr, "p1003_1b %s\n", tab[i].t); | fprintf(stderr, "p1003_1b %s\n", tab[i].t); | ||||
return -1; | return -1; | ||||
#else | #else | ||||
{ | { | ||||
int r; | int r; | ||||
for (i = 0; i < N(tab); i++) { | for (i = 0; i < nitems(tab); i++) { | ||||
if (tab[i].works) { | if (tab[i].works) { | ||||
if ( (r = | if ( (r = | ||||
(*tab[i].f)(argc - 1, argv + 1)) ) { | (*tab[i].f)(argc - 1, argv + 1)) ) { | ||||
fprintf(stderr, | fprintf(stderr, | ||||
"%s failed\n", tab[i].t); | "%s failed\n", tab[i].t); | ||||
return r; | return r; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
return 0; | return 0; | ||||
} | } | ||||
#endif | #endif | ||||
} | } | ||||
if (argc > 1) { | if (argc > 1) { | ||||
for (i = 0; i < N(tab); i++) | for (i = 0; i < nitems(tab); i++) | ||||
if (strcmp(tab[i].t, argv[1]) == 0) | if (strcmp(tab[i].t, argv[1]) == 0) | ||||
return (*tab[i].f)(argc - 1, argv + 1); | return (*tab[i].f)(argc - 1, argv + 1); | ||||
} | } | ||||
return usage(argc, argv); | return usage(argc, argv); | ||||
} | } |