xref: /minix3/minix/commands/swifi/systest.c (revision 875abb872412bde4d3ba5da66423f55431e19dcf)
1433d6423SLionel Sambuc /*
2433d6423SLionel Sambuc  * systest.c -- Test code for nooks system calls
3433d6423SLionel Sambuc  *
4433d6423SLionel Sambuc  * Copyright (C) 2002 Mike Swift
5433d6423SLionel Sambuc  *
6433d6423SLionel Sambuc  * The source code in this file can be freely used, adapted,
7433d6423SLionel Sambuc  * and redistributed in source or binary form, so long as an
8433d6423SLionel Sambuc  * acknowledgment appears in derived source files.
9433d6423SLionel Sambuc  * No warranty is attached;
10433d6423SLionel Sambuc  * we cannot take responsibility for errors or fitness for use.
11433d6423SLionel Sambuc  *
12433d6423SLionel Sambuc  */
13433d6423SLionel Sambuc 
14433d6423SLionel Sambuc #include <sys/types.h>
15433d6423SLionel Sambuc #include <stdlib.h>
16433d6423SLionel Sambuc #include <stdio.h>
17433d6423SLionel Sambuc #include <string.h>
18433d6423SLionel Sambuc #include <errno.h>
19433d6423SLionel Sambuc 
20*875abb87SDavid van Moolenbroek #include "swifi.h"
21433d6423SLionel Sambuc #include "extra.h"
22433d6423SLionel Sambuc 
23*875abb87SDavid van Moolenbroek void
usage(char * name)24*875abb87SDavid van Moolenbroek usage(char *name)
25*875abb87SDavid van Moolenbroek {
26*875abb87SDavid van Moolenbroek   printf("Usage: %s -f module_name pid fault-type fault-count seed\n", name);
27433d6423SLionel Sambuc 
28*875abb87SDavid van Moolenbroek   exit(EXIT_FAILURE);
29*875abb87SDavid van Moolenbroek }
30433d6423SLionel Sambuc 
31433d6423SLionel Sambuc int
main(int argc,char * argv[])32433d6423SLionel Sambuc main(int argc, char * argv[])
33433d6423SLionel Sambuc {
34433d6423SLionel Sambuc   char * module_name = NULL;
35433d6423SLionel Sambuc   int i;
36433d6423SLionel Sambuc   unsigned int cmd = 0;
37433d6423SLionel Sambuc   unsigned long arg = 0;
38433d6423SLionel Sambuc   unsigned long seed = 157;
39433d6423SLionel Sambuc 
40433d6423SLionel Sambuc   if (argc < 2) {
41*875abb87SDavid van Moolenbroek     usage(argv[0]);
42433d6423SLionel Sambuc   }
43433d6423SLionel Sambuc 
44433d6423SLionel Sambuc   for (i = 1; i < argc; i++ ) {
45433d6423SLionel Sambuc     if (strcmp(argv[i], "-f") == 0) {
46433d6423SLionel Sambuc       if (argc <= i+5) {
47*875abb87SDavid van Moolenbroek         usage(argv[0]);
48433d6423SLionel Sambuc       }
49433d6423SLionel Sambuc       module_name = victim_exe = argv[++i];
50433d6423SLionel Sambuc       sscanf(argv[++i],"%u", &victim_pid);
51433d6423SLionel Sambuc       sscanf(argv[++i],"%u", &cmd);
52433d6423SLionel Sambuc       sscanf(argv[++i],"%lu", &arg);
53433d6423SLionel Sambuc       sscanf(argv[++i],"%lu", &seed);
54433d6423SLionel Sambuc     } else {
55433d6423SLionel Sambuc       printf("Unknown command %s\n", argv[i]);
56*875abb87SDavid van Moolenbroek       usage(argv[0]);
57433d6423SLionel Sambuc     }
58433d6423SLionel Sambuc   }
59433d6423SLionel Sambuc 
60*875abb87SDavid van Moolenbroek   /* Do the injection. */
61*875abb87SDavid van Moolenbroek   swifi_inject_fault(module_name,
62433d6423SLionel Sambuc 		     cmd,          /* fault type */
63433d6423SLionel Sambuc 		     seed,         /* random seed */
64*875abb87SDavid van Moolenbroek 		     arg);         /* numFaults */
65433d6423SLionel Sambuc 
66*875abb87SDavid van Moolenbroek   return EXIT_SUCCESS;
67433d6423SLionel Sambuc }
68