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