xref: /minix/minix/commands/swifi/systest.c (revision ebfedea0)
1 /*
2  * systest.c -- Test code for nooks system calls
3  *
4  * Copyright (C) 2002 Mike Swift
5  *
6  * The source code in this file can be freely used, adapted,
7  * and redistributed in source or binary form, so long as an
8  * acknowledgment appears in derived source files.
9  * No warranty is attached;
10  * we cannot take responsibility for errors or fitness for use.
11  *
12  */
13 
14 #include <sys/types.h>
15 #include <stdlib.h>
16 #include <stdio.h>
17 #include <string.h>
18 #include <errno.h>
19 
20 #include "swifi.h"
21 #include "extra.h"
22 
23 void
24 usage(char *name)
25 {
26   printf("Usage: %s -f module_name pid fault-type fault-count seed\n", name);
27 
28   exit(EXIT_FAILURE);
29 }
30 
31 int
32 main(int argc, char * argv[])
33 {
34   char * module_name = NULL;
35   int i;
36   unsigned int cmd = 0;
37   unsigned long arg = 0;
38   unsigned long seed = 157;
39 
40   if (argc < 2) {
41     usage(argv[0]);
42   }
43 
44   for (i = 1; i < argc; i++ ) {
45     if (strcmp(argv[i], "-f") == 0) {
46       if (argc <= i+5) {
47         usage(argv[0]);
48       }
49       module_name = victim_exe = argv[++i];
50       sscanf(argv[++i],"%u", &victim_pid);
51       sscanf(argv[++i],"%u", &cmd);
52       sscanf(argv[++i],"%lu", &arg);
53       sscanf(argv[++i],"%lu", &seed);
54     } else {
55       printf("Unknown command %s\n", argv[i]);
56       usage(argv[0]);
57     }
58   }
59 
60   /* Do the injection. */
61   swifi_inject_fault(module_name,
62 		     cmd,          /* fault type */
63 		     seed,         /* random seed */
64 		     arg);         /* numFaults */
65 
66   return EXIT_SUCCESS;
67 }
68