]> Zhao Yanbai Git Server - minix.git/commitdiff
swifi: various improvements 93/3193/1
authorDavid van Moolenbroek <david@minix3.org>
Tue, 2 Oct 2012 15:49:23 +0000 (15:49 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Wed, 23 Sep 2015 12:03:12 +0000 (12:03 +0000)
- no longer inject fewer faults than instructed;
- no longer apply a limit on the number of injected faults;
- refactory to allow for random faults (type 99);
- also allow for stop faults (type 50);
- massive dead code cleanup;
- move outdated test cruft into tests/ subdirectory; it is kept only
  as an example of how to use swifi.

Change-Id: I8a3cb71902dfaadb7bf785723b917307db83d0d5

25 files changed:
minix/commands/swifi/Makefile
minix/commands/swifi/db_disasm.c
minix/commands/swifi/db_sym.c
minix/commands/swifi/extra.c
minix/commands/swifi/extra.h
minix/commands/swifi/fault_model.c
minix/commands/swifi/random.c [deleted file]
minix/commands/swifi/swifi-2.4.18-a-patch [deleted file]
minix/commands/swifi/swifi-ksyms.c [deleted file]
minix/commands/swifi/swifi-user.h [deleted file]
minix/commands/swifi/swifi.h
minix/commands/swifi/systest.c
minix/commands/swifi/tests/do_swifi [moved from minix/commands/swifi/do_swifi with 64% similarity]
minix/commands/swifi/tests/do_swifi_bug1 [moved from minix/commands/swifi/do_swifi_bug1 with 65% similarity]
minix/commands/swifi/tests/rnd.c [moved from minix/commands/swifi/rnd.c with 98% similarity]
minix/commands/swifi/tests/rs.restart_imm [moved from minix/commands/swifi/rs.restart_imm with 100% similarity]
minix/commands/swifi/tests/run_swifi [moved from minix/commands/swifi/run_swifi with 96% similarity]
minix/commands/swifi/tests/run_swifi-x [moved from minix/commands/swifi/run_swifi-x with 91% similarity]
minix/commands/swifi/tests/run_t1 [moved from minix/commands/swifi/run_t1 with 97% similarity]
minix/commands/swifi/tests/run_t1a [moved from minix/commands/swifi/run_t1a with 86% similarity]
minix/commands/swifi/tests/run_t1b [moved from minix/commands/swifi/run_t1b with 100% similarity]
minix/commands/swifi/tests/run_t2 [moved from minix/commands/swifi/run_t2 with 97% similarity]
minix/commands/swifi/tests/run_t2a [moved from minix/commands/swifi/run_t2a with 86% similarity]
minix/commands/swifi/tests/run_t2b [moved from minix/commands/swifi/run_t2b with 100% similarity]
minix/commands/swifi/tests/socket.c [moved from minix/commands/swifi/socket.c with 96% similarity]

index 88d14b3a75e8a58912c485ddb89a15386e82d957..b7307216058a70ffbbb4d0fc25c6cf7706709e84 100644 (file)
@@ -3,9 +3,9 @@
 PROG=  swifi
 SRCS=  systest.c fault_model.c extra.c db_sym.c db_disasm.c \
        db_access.c read_nlist.c
-CPPFLAGS+= -DCONFIG_SWIFI
+MAN=
+
 DPADD+=        ${LIBELF}
 LDADD+=        -lelf
-MAN=
 
 .include <bsd.prog.mk>
index f2ec126f71cf321470084b949e89d122d3955667..9d86ac3ad203a8d06e44e51e4c8c6cd3f9cd5713 100644 (file)
@@ -28,9 +28,6 @@
  * Instruction disassembler.
  */
 
-#if 0
-#include <linux/kernel.h>
-#endif
 #include "ddb.h"
 
 #include "db_access.h"
@@ -861,12 +858,6 @@ static const int db_lengths[] = {
        result = db_get_value((loc), (size), (is_signed)); \
        (loc) += (size);
 
-/*static db_addr_t
-//             db_disasm_esc __P((db_addr_t loc, int inst, int short_addr,
-//                                int size, const char *seg));
-//static void  db_print_address __P((const char *seg, int size,
-//                                   struct i_addr *addrp));
-*/
 static db_addr_t
                db_read_address __P((db_addr_t loc, int short_addr,
                                     int regmodrm, struct i_addr *addrp));
index 72964fc72fc7aa48a1999e90a7f13092e9df03ad..8c94b5d10d639448b572507425e6c280740d7c0b 100644 (file)
  *     Author: David B. Golub, Carnegie Mellon University
  *     Date:   7/90
  */
-#if 0
-//#include <sys/param.h>
-//#include <sys/systm.h>
-#endif
-#if 0
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/kallsyms.h>
-#endif
 #include "ddb.h"
 #include "db_sym.h"
 #include "swifi.h"
 #ifndef MAXNOSYMTABS
 #define        MAXNOSYMTABS    3       /* mach, ux, emulator */
 #endif
-#if 0
-
-static db_symtab_t     db_symtabs[MAXNOSYMTABS] = {{0,},};
-static int db_nsymtab = 0;
-
-static db_symtab_t     *db_last_symtab;
-
-static db_sym_t                db_lookup __P(( char *symstr));
-static char            *db_qualify __P((db_sym_t sym, char *symtabname));
-static boolean_t       db_symbol_is_ambiguous __P((db_sym_t sym));
-static boolean_t       db_line_at_pc __P((db_sym_t, char **, int *, 
-                               db_expr_t));
-
-/*
- * Add symbol table, with given name, to list of symbol tables.
- */
-void
-db_add_symbol_table(start, end, name, ref)
-       char *start;
-       char *end;
-       char *name;
-       char *ref;
-{
-       if (db_nsymtab >= MAXNOSYMTABS) {
-               printk ("No slots left for %s symbol table", name);
-               panic ("db_sym.c: db_add_symbol_table");
-       }
-
-       db_symtabs[db_nsymtab].start = start;
-       db_symtabs[db_nsymtab].end = end;
-       db_symtabs[db_nsymtab].name = name;
-       db_symtabs[db_nsymtab].private = ref;
-       db_nsymtab++;
-}
-
-/*
- *  db_qualify("vm_map", "ux") returns "unix:vm_map".
- *
- *  Note: return value points to static data whose content is
- *  overwritten by each call... but in practice this seems okay.
- */
-static char *
-db_qualify(sym, symtabname)
-       db_sym_t        sym;
-       register char   *symtabname;
-{
-       char            *symname;
-       static char     tmp[256];
-
-       db_symbol_values(sym, &symname, 0);
-       strcpy(tmp,symtabname);
-       strcat(tmp,":");
-       strcat(tmp,symname);
-       return tmp;
-}
-
-
-boolean_t
-db_eqname(src, dst, c)
-       char *src;
-       char *dst;
-       char c;
-{
-       if (!strcmp(src, dst))
-           return (TRUE);
-       if (src[0] == c)
-           return (!strcmp(src+1,dst));
-       return (FALSE);
-}
-
-boolean_t
-db_value_of_name(name, valuep)
-       char            *name;
-       db_expr_t       *valuep;
-{
-       db_sym_t        sym;
-
-       sym = db_lookup(name);
-       if (sym == DB_SYM_NULL)
-           return (FALSE);
-       db_symbol_values(sym, &name, valuep);
-       return (TRUE);
-}
-
-
-/*
- * Lookup a symbol.
- * If the symbol has a qualifier (e.g., ux:vm_map),
- * then only the specified symbol table will be searched;
- * otherwise, all symbol tables will be searched.
- */
-static db_sym_t
-db_lookup(symstr)
-       char *symstr;
-{
-       db_sym_t sp;
-       register int i;
-       int symtab_start = 0;
-       int symtab_end = db_nsymtab;
-       register char *cp;
-
-       /*
-        * Look for, remove, and remember any symbol table specifier.
-        */
-       for (cp = symstr; *cp; cp++) {
-               if (*cp == ':') {
-                       *cp = '\0';
-                       for (i = 0; i < db_nsymtab; i++) {
-                               if (! strcmp(symstr, db_symtabs[i].name)) {
-                                       symtab_start = i;
-                                       symtab_end = i + 1;
-                                       break;
-                               }
-                       }
-                       *cp = ':';
-                       if (i == db_nsymtab) {
-                               db_error("invalid symbol table name");
-                       }
-                       symstr = cp+1;
-               }
-       }
-
-       /*
-        * Look in the specified set of symbol tables.
-        * Return on first match.
-        */
-       for (i = symtab_start; i < symtab_end; i++) {
-               sp = X_db_lookup(&db_symtabs[i], symstr);
-               if (sp) {
-                       db_last_symtab = &db_symtabs[i];
-                       return sp;
-               }
-       }
-       return 0;
-}
-
-/*
- * Does this symbol name appear in more than one symbol table?
- * Used by db_symbol_values to decide whether to qualify a symbol.
- */
-static boolean_t db_qualify_ambiguous_names = FALSE;
-
-static boolean_t
-db_symbol_is_ambiguous(sym)
-       db_sym_t        sym;
-{
-       char            *sym_name;
-       register int    i;
-       register
-       boolean_t       found_once = FALSE;
-
-       if (!db_qualify_ambiguous_names)
-               return FALSE;
-
-       db_symbol_values(sym, &sym_name, 0);
-       for (i = 0; i < db_nsymtab; i++) {
-               if (X_db_lookup(&db_symtabs[i], sym_name)) {
-                       if (found_once)
-                               return TRUE;
-                       found_once = TRUE;
-               }
-       }
-       return FALSE;
-}
-
-/*
- * Find the closest symbol to val, and return its name
- * and the difference between val and the symbol found.
- */
-db_sym_t
-db_search_symbol( val, strategy, offp)
-       register db_addr_t      val;
-       db_strategy_t           strategy;
-       db_expr_t               *offp;
-{
-       register
-       unsigned int    diff;
-       unsigned int    newdiff;
-       register int    i;
-       db_sym_t        ret = DB_SYM_NULL, sym;
-
-       newdiff = diff = ~0;
-       db_last_symtab = 0;
-       for (i = 0; i < db_nsymtab; i++) {
-           sym = X_db_search_symbol(&db_symtabs[i], val, strategy, &newdiff);
-           if (newdiff < diff) {
-               db_last_symtab = &db_symtabs[i];
-               diff = newdiff;
-               ret = sym;
-           }
-       }
-       *offp = diff;
-       return ret;
-}
-
-/*
- * Return name and value of a symbol
- */
-void
-db_symbol_values(sym, namep, valuep)
-       db_sym_t        sym;
-       char            **namep;
-       db_expr_t       *valuep;
-{
-       db_expr_t       value;
-
-       if (sym == DB_SYM_NULL) {
-               *namep = 0;
-               return;
-       }
-
-       X_db_symbol_values(sym, namep, &value);
-       if (db_symbol_is_ambiguous(sym))
-               *namep = db_qualify(sym, db_last_symtab->name);
-       if (valuep)
-               *valuep = value;
-}
-
-
-/*
- * Print a the closest symbol to value
- *
- * After matching the symbol according to the given strategy
- * we print it in the name+offset format, provided the symbol's
- * value is close enough (eg smaller than db_maxoff).
- * We also attempt to print [filename:linenum] when applicable
- * (eg for procedure names).
- *
- * If we could not find a reasonable name+offset representation,
- * then we just print the value in hex.  Small values might get
- * bogus symbol associations, e.g. 3 might get some absolute
- * value like _INCLUDE_VERSION or something, therefore we do
- * not accept symbols whose value is "small" (and use plain hex).
- */
-
-
-void
-db_printsym(off, strategy)
-       db_expr_t       off;
-       db_strategy_t   strategy;
-{
-       db_expr_t       d;
-       char            *filename;
-       char            *name;
-       db_expr_t       value;
-       int             linenum;
-       db_sym_t        cursym;
-
-       cursym = db_search_symbol(off, strategy, &d);
-       db_symbol_values(cursym, &name, &value);
-       if (name == 0)
-               value = off;
-       if (value >= DB_SMALL_VALUE_MIN && value <= DB_SMALL_VALUE_MAX) {
-               printk("0x%x", off);
-               return;
-       }
-       if (name == 0 || d >= db_maxoff) {
-               printk("0x%x", off);
-               return;
-       }
-       printk("%s", name);
-       if (d)
-               printk("+0x%x", d);
-       if (strategy == DB_STGY_PROC) {
-         //            if (db_line_at_pc(cursym, &filename, &linenum, off))
-         //                    printk(" [%s:%d]", filename, linenum);
-       }
-}
-
-#endif 
 
 unsigned int   db_maxoff = 0x10000;
 unsigned long modAddr = 0;
@@ -438,7 +159,7 @@ find_faulty_instr(db_expr_t off, int type, int *instr_len)
 
       found=1; 
       break;
-    } else if(type==NOP_FAULT) {
+    } else if(type==NOP_FAULT || type==STOP_FAULT) {
       /* 5b) nop*: replace instruction with nop */
       if(cur_value> off) {
        found=1;
@@ -563,9 +284,6 @@ find_faulty_instr(db_expr_t off, int type, int *instr_len)
       if (d) printk("+0x%x", d);
       printk(" @ %x, ", value);
       printk("instr @ %x, len=%d, ", off, *instr_len);
-#if 0
-                               // db_disasm(prev_value, FALSE); 
-#endif
     }
     return off;
   } else {
@@ -574,25 +292,3 @@ find_faulty_instr(db_expr_t off, int type, int *instr_len)
     return 0;
   }
 }
-
-#if 0
-static boolean_t
-db_line_at_pc( sym, filename, linenum, pc)
-       db_sym_t        sym;
-       char            **filename;
-       int             *linenum;
-       db_expr_t       pc;
-{
-       return X_db_line_at_pc( db_last_symtab, sym, filename, linenum, pc);
-}
-
-int
-db_sym_numargs(sym, nargp, argnames)
-       db_sym_t        sym;
-       int             *nargp;
-       char            **argnames;
-{
-       return X_db_sym_numargs(db_last_symtab, sym, nargp, argnames);
-}
-
-#endif
index 1b2135e4fd15b0f5fd0c1ed3fb4e9aa18ef5ca48..b67461b1489e85ce265ffbe85602a09755d132d5 100644 (file)
@@ -19,45 +19,6 @@ char *victim_exe= NULL;
 static struct nlist *exe_nlist;
 static int exe_nlist_n;
 
-/* unsigned long __get_free_page(int type) { assert(0); } */
-/* void *kmalloc(size_t size, int type) { assert(0); } */
-void free_page(unsigned long page) { assert(0); }
-/* void kfree(void *mem) { assert(0); } */
-void vfree(void *mem) { assert(0); }
-
-size_t strncpy_from_user(char *addr, const char *user_name, size_t size)
-{ assert(0); return 0; }
-
-/* void lock_kernel(void) { assert(0); } */
-/* void unlock_kernel(void) { assert(0); } */
-/* void __asm__(char *str) { assert(0); } */
-
-extern void *__vmalloc(unsigned long size, int gfp_mask, pgprot_t prot)
-{ assert(0); return NULL; }
-
-#if 0
-void kallsyms_sections(void *infop,
-       int (*fp)(void *token, const char *modname, const char *secname,
-             ElfW(Addr) secstart, ElfW(Addr) secend, ElfW(Word) secflags))
-{ assert(0); }
-#endif
-
-unsigned long __generic_copy_to_user(void *x, const void *y, unsigned long z)
-{ assert(0); return -1; }
-unsigned long __generic_copy_from_user(void *x, const void *y, unsigned long z)
-{ assert(0); return -1; }
-
-/* void read_lock(struct lock *lock) { assert(0); } */
-/* void read_unlock(struct lock *lock) { assert(0); } */
-void udelay(unsigned long usecs) { assert(0); }
-int copy_to_user(void * result_record, void *res, size_t size)
-{
-       memcpy(result_record, res, size);
-       return 0;
-}
-
-void panic(char *str) { assert(0); }
-
 void printk(char *fmt, ...)
 {
        va_list ap;
@@ -96,16 +57,6 @@ int kallsyms_address_to_symbol(db_expr_t off,
                                above= &exe_nlist[i];
                }
        }
-#if 0
-       if (below)
-       {
-               printf("found '%s' at 0x%x\n", below->n_name, below->n_value);
-       }
-       if (above)
-       {
-               printf("found '%s' at 0x%x\n", above->n_name, above->n_value);
-       }
-#endif
 
        btext |= TRAP_BIT;
        etext |= TRAP_BIT;
@@ -129,10 +80,6 @@ int kallsyms_address_to_symbol(db_expr_t off,
        return 1;
 }
 
-struct module *module_list;
-struct task_struct *task_list;
-struct lock tasklist_lock;
-
 unsigned long text_read_ul(void *addr)
 {
        int i;
index 89e40743c0229807627540b1724239e5ce8f449c..2745848137a87f4eb6ec3ba2d10cd690a9c42455 100644 (file)
@@ -7,46 +7,6 @@ Compatibility with the linux kernel environment
 #include <string.h>
 #include <sys/types.h>
 
-#if 0
-struct module
-{
-       struct module *next;
-       char *name;
-};
-extern struct module *module_list;
-#endif
-
-struct thread
-{
-       unsigned long esp;
-};
-
-struct task_struct
-{
-       struct thread thread;
-       struct task_struct *next;
-};
-
-unsigned long __get_free_page(int type);
-void *kmalloc(size_t size, int type);
-#define GFP_KERNEL 1
-void free_page(unsigned long page);
-void kfree(void *mem);
-void vfree(void *mem);
-
-size_t strncpy_from_user(char *addr, const char *user_name, size_t size);
-
-void lock_kernel(void);
-void unlock_kernel(void);
-
-/* void __asm__(char *str); */
-
-#define for_each_task(t) for(t= task_list; t; t=t->next)
-extern struct task_struct *task_list;
-
-typedef struct { int foo; } pgprot_t;
-extern void *__vmalloc(unsigned long size, int gfp_mask, pgprot_t prot);
-
 #define ElfW(type) Elf_ ## type
 typedef unsigned long Elf_Addr;
 typedef unsigned long Elf_Word;
@@ -55,25 +15,6 @@ void kallsyms_sections(void *infop,
        int (*fp)(void *token, const char *modname, const char *secname,
              ElfW(Addr) secstart, ElfW(Addr) secend, ElfW(Word) secflags));
 
-unsigned long __generic_copy_to_user(void *, const void *, unsigned long);
-unsigned long __generic_copy_from_user(void *, const void *, unsigned long);
-
-struct lock { int dummy; };
-extern struct lock tasklist_lock;
-void read_lock(struct lock *lock);
-void read_unlock(struct lock *lock);
-
-void udelay(unsigned long usecs);
-
-int copy_to_user(void * result_record, void *res, size_t size);
-
-void panic(char *str);
-
-#define PAGE_SIZE      (0x1000)
-#define PAGE_MASK      (0x0fff)
-#define PAGE_OFFSET    0       /* What does this do? */
-#define TASK_SIZE      0       /* What does this do? */
-
 void printk(char *fmt, ...);
 
 #include "ddb.h"
index 98afd115eb49f676c33b3aa48defe886c125c37b..09c9864ee7c62e85a89fb995b681ab9f70563713 100644 (file)
@@ -6,8 +6,8 @@
  *
  * The source code in this file can be freely used, adapted,
  * and redistributed in source or binary form, so long as an
- * acknowledgment appears in derived source files.  No warranty 
- * is attached; * we cannot take responsibility for errors or 
+ * acknowledgment appears in derived source files.  No warranty
+ * is attached; we cannot take responsibility for errors or
  * fitness for use.
  *
  */
 
 /*
  * Fault injector for testing the usefulness of NOOKS
- * 
+ *
  * Adapted from the SWIFI tools used by Wee Teck Ng to evaluate the RIO
  * file cache at the University of Michigan
- * 
+ *
  */
 
-/* 
- * This tool can inject faults into modules, whether they are loaded into a 
+/*
+ * This tool can inject faults into modules, whether they are loaded into a
  * nook or loaded into the kernel (for comparison testing).
- * 
+ *
  * There are several classes of faults emulated:
  * - Corruption of text
  *    - corruption
  *        - incorrect source/destination (corrupted)
  *         - remove jmp or rep instruction
  *         - change address computation for memory access (not stack)
- *        - change termination condition for loop (change repeat to repeat 
- *           -while equal, change condition to !condition
-          - remove instructions loading registers from arguments (ebp+x)
- *        
- * - Corruption of stack
- * - Corruption of heap
- * - copy overruns
- * - use after free
+ *        - change termination condition for loop (change repeat to repeat
+ *           while equal, change condition to !condition)
+ *         - remove instructions loading registers from arguments (ebp+x)
  */
 
-#if 0
-#include <linux/kernel.h>
-#include <linux/kallsyms.h>
-#include <linux/module.h>
-#include <linux/mm.h>
-#include <linux/slab.h>
-#include <linux/vmalloc.h>
-#include <linux/smp_lock.h>
-#include <asm/uaccess.h>
-#include <asm/delay.h>
-#include <asm/page.h>
-#endif
+#include <stdio.h>
+#include <assert.h>
+
 #include "ddb.h"
 #include "db_sym.h"
 #include "swifi.h"
 
 #include "extra.h"
-#include <assert.h>
 
-#define CRASH_INTERVAL 8192
-#define FI_MASK                        0xfff
-#define P50     0x3fffffff      /* 50% of max rand */
-#define P94     0x7851eb84      /* 94% of max rand */
-#define NOP            0x90
-
-unsigned long randomSeed=0;            /* random number */
-unsigned long injectFault=1;           /* inject fault ? */
-unsigned long diskTest=0;              /* run disk test instead of rio */
-unsigned long faultInjected=0;         /* has fault been injected? */
-unsigned long crashInterval=0;         /* interval between injecting fault */
-unsigned long crashCount=0;            /* number of times fault is injected */
-unsigned long faultType;                        
-unsigned long numFaults;
-char *crashAddr=0;                     /* track current malloc */
-int crashToggle=1;
-int text_fault(char *mod_name, pswifi_result_t res);
-int stack_fault(pswifi_result_t res);
-int heap_fault(pswifi_result_t res);
-int direct_fault(int fault_address, int fault_content, pswifi_result_t res);
-int direct_fault1(int fault_address, int fault_content, pswifi_result_t res);
-int while1(void);
-
-int *testVA;
-
-#if 0
-#define PDEBUG(fmt, args...) \
-do { \
-      printk( KERN_ALERT "SWIFI: " fmt, ## args); \
-} while (0)
-#else
-#include <stdio.h>
 #define PDEBUG(args) /* (printf args) */
-#endif
-
-#define inline
-
-#ifdef CONFIG_SWIFI
 
-#if 0
-static inline long
-get_mod_name(const char *user_name, char **buf)
-{
-       unsigned long page;
-       long retval;
-
-       page = __get_free_page(GFP_KERNEL);
-       if (!page)
-               return -ENOMEM;
+#define NOP            0x90
 
-       retval = strncpy_from_user((char *)page, user_name, PAGE_SIZE);
-       if (retval > 0) {
-               if (retval < PAGE_SIZE) {
-                       *buf = (char *)page;
-                       return retval;
-               }
-               retval = -ENAMETOOLONG;
-       } else if (!retval)
-               retval = -EINVAL;
+static int text_fault(int type, unsigned long btext, unsigned long text_size);
 
-       free_page(page);
-       return retval;
-}
+static int randomFaults[] = {
+  TEXT_FAULT,
+  NOP_FAULT,
+  SRC_FAULT,
+  DST_FAULT,
+  PTR_FAULT,
+  LOOP_FAULT,
+  INTERFACE_FAULT
+};
 
-static inline void
-put_mod_name(char *buf)
+void
+swifi_inject_fault(char * module_name,
+                unsigned long faultType,
+                unsigned long randomSeed,
+                unsigned long numFaults)
 {
-       free_page((unsigned long)buf);
-}
-#endif
-
-long 
-sys_inject_fault(char * module_name,
-                unsigned long argFaultType,
-                unsigned long argRandomSeed,
-                unsigned long argNumFaults,
-                pswifi_result_t result_record,
-                unsigned long argInjectFault)
-{   
-  int result = 0;
-  unsigned long fault_address = 0; 
-  unsigned long fault_data = 0 ; 
-  char * kern_name = NULL;
-#if 0
-  struct module * mod = NULL;
-  int found = 0;
-#endif
-  pswifi_result_t res = NULL;
-
-  if (argNumFaults > SWIFI_MAX_FAULTS) {
-    result = -E2BIG;
-    goto Cleanup;
-  }
-  res = (pswifi_result_t) malloc((1+argNumFaults) * sizeof(swifi_result_t));
-  if (res == NULL) {
-    result = -ENOMEM;
-    goto Cleanup;
-  }
-  memset(res, 0, (1 + argNumFaults) * sizeof(swifi_result_t));
-  
-  /*
-  // Capture the name of the module from usermode
-  */
-
-#if 0
-  result = get_mod_name(module_name, &kern_name);
-  if (result < 0) {
-    goto Cleanup;
-  }
-#endif
-
-  kern_name= module_name;
-
-
+  unsigned long btext, etext, text_size;
+  int type;
 
-
-#if 0
-    lock_kernel();
-
-    for (mod = module_list; mod ; mod = mod->next) {
-      if (strcmp(kern_name, mod->name) == 0) {
-       found = 1;
-       break;
-      }
-    }
-    unlock_kernel(); 
-    if (!found) {
-      result = -ENOENT;
-      goto Cleanup;
-    }
-#endif
-               
-  numFaults = argNumFaults;
-  faultType = argFaultType;
-  randomSeed = argRandomSeed;
-  injectFault = argInjectFault;
-
-
-  if(faultType>=DISK_TEST) {
-    faultType=faultType-DISK_TEST;
-    diskTest=1;
-  }
-  if(faultType==STATS) {
-#if 0    
-    extern long time_vmp, n_vmp;
-    extern long time_pmp, n_pmp;
-
-    PDEBUG("# vm_map_protect=%ld, total cycle=%ld\n", n_vmp, time_vmp);
-    PDEBUG("# pmap_protect=%ld, total cycle=%ld\n", n_pmp, time_pmp);
-    n_vmp=0; time_vmp=0;
-    n_pmp=0; time_pmp=0;
-#endif
-  } else if (faultType == DIRECT_FAULT) {
-    fault_address = numFaults;
-    fault_data = randomSeed;
-    PDEBUG(("sys inject fault, type %ld, addr=%lx, flip bit%lx\n", 
-          faultType, fault_address, fault_data));
-  } else if (faultType == DIRECT_FAULT1) {
-    fault_address = numFaults;
-    fault_data = randomSeed;
-    PDEBUG(("sys inject fault, type %ld, addr=%lx, zero bytes %lx\n", 
-          faultType, fault_address, fault_data));
-  } else {
-    PDEBUG(("sys inject fault, type %ld, seed=%ld, fault=%ld\n", 
-          faultType, randomSeed, numFaults));
-  }
-  faultInjected=1;
-  
-  srandom(randomSeed);
-  /* set warm reboot, leave RAM unchanged  
-   * 0 : don't inject fault
-   * 1 : run POST, wipe out memory
-   * 2 : don't test memory
-   * 3 : don't change memory (doesn't work)
-   * 4 : don't sync registry
-   */
-  
   /* default number of faults is 5 */
-  if(numFaults<=0 || numFaults>100) numFaults=5;
-  
-  switch(faultType)
-    {
-    case TEXT_FAULT: 
-      result = text_fault(module_name, res); 
-      break;
-    case STACK_FAULT: 
-      result = stack_fault(res); 
-      break;
-    case HEAP_FAULT: 
-      result = heap_fault(res); 
-      break;
-    case INIT_FAULT:
-    case NOP_FAULT: 
-    case DST_FAULT: 
-    case SRC_FAULT: 
-    case BRANCH_FAULT: 
-    case PTR_FAULT: 
-    case LOOP_FAULT: 
-    case INTERFACE_FAULT: 
-    case IRQ_FAULT:
-      result = text_fault(module_name, res); 
-      break;
-    case FREE_FAULT: 
-    case BCOPY_FAULT: 
-    case SYNC_FAULT:
-    case ALLOC_FAULT:
-      crashInterval=CRASH_INTERVAL;    /* interval between crash */
-      break;
-    case MEM_LEAK_FAULT: 
-      crashToggle=0;
-      crashInterval=CRASH_INTERVAL;    /* interval between crash */
-      break;
-    case PANIC_FAULT: 
-      panic("testing panic"); 
-      result = 0;
-      break;
-      /*        case WP_FAULT: page_reg_fault(random()); break; */
-    case DIRECT_FAULT:
-      {
-       direct_fault(fault_address, fault_data, res);
-       break;
-      }
-    case DIRECT_FAULT1: 
-      {
-       result = direct_fault1(fault_address, fault_data, res);
-       
-       break;
-      }
-      /*       case PAGE_REG_DUMP: rio_dump(); break; */
-    case WHILE1_FAULT: 
-      {
-       
-       result = while1();
-       
-       break;
-      }
-      /* case CPU_RESET_FAULT: cpu_reset(); break; */;
-    case COW_FAULT: 
-      {
-                               /* test writing to kernel text. freebsd currently do a COW on a
-                                * write to kernel text.
-                                */
-       unsigned long *addr1, *addr2;
-       
-       addr1 = (unsigned long *) 0xf0212000;
-       addr2 = (unsigned long *) 0xf0212010;
-       PDEBUG(("%p=%lx, %p=%lx\n", addr1, *addr1, addr2, *addr2));
-       /*
-       __asm__ ("movl $0xf0212000, %eax\n\t" \
-                "movl $6, 0(%eax)\n\t" \
-                "movl $6, 4(%eax)\n\t");
-       */
-       /* Not implemented on MINIX */
-       assert(0);
-       addr1 = (unsigned long *) 0xf0212000;
-       addr2 = (unsigned long *) 0xf0212010;
-       PDEBUG(("after injecting fault\n"));
-       PDEBUG(("%p=%lx, %p=%lx\n", addr1, *addr1, addr2, *addr2));
-       result = 0;
-       break;
-      }
-    
-    case DEBUGGER_FAULT: 
-      PDEBUG(("Debugger fault"));
-      /*
-      __asm__ ("movl %cr4, %ecx\n\t" \
-              "movl $42, %ecx; .byte 0x0f, 0x32\n\t" \
-              "movl $377, %ecx; .byte 0x0f, 0x32\n\t");
-      */
-      /* Not implemented on MINIX */
-      assert(0);
-      result = 0;
-      break;
-    default: PDEBUG(("unknown fault type %ld\n", faultType)); break;
-    }
-  if (copy_to_user(result_record, res, argNumFaults * sizeof(swifi_result_t))) {
-    result = -EFAULT;
-  }
- Cleanup:
-#if 0
-  if (kern_name != NULL) {
-    put_mod_name(kern_name);
-  }
-#endif
-  if (res != NULL) {
-    free(res);
-  }
-
-  return (result);
-}
-
-int while1(void)
-{
-  int i=0;
-
-  PDEBUG(("entering into while 1 loop\n"));
-  while(1) { 
-    udelay(20000); 
-    PDEBUG(("delay %4d secs, cpl=0x%x, ipend=0x%x\n", i+=5, 20, 30)); 
-    if(i>(100 * 2500)) 
-      break;
-  }
-  return(0);
-}
-
-
-int direct_fault(int fault_address, int fault_content, pswifi_result_t res)
-{   
-  unsigned long *addr;
-  int flip_bit=0;
-
+  if (numFaults == 0) numFaults = 5;
 
-  addr = (unsigned long *) (PAGE_OFFSET + fault_address);
-
-  PDEBUG(("%p:0x%lx => ", addr, *addr));
-  
-  flip_bit = 1 << fault_content;
+  srandom(randomSeed);
 
-  res[0].address = (unsigned long) addr;
-  res[0].old = *addr;
-  res[0].new = (*addr) ^ flip_bit;
+  load_nlist(module_name, &btext, &etext);
 
-  if (injectFault) {
-    *addr = (*addr) ^ flip_bit; 
-  }
-  PDEBUG(("%lx\n", *addr));
-  return(0);
-}
+  text_size = etext - btext;
 
-int direct_fault1(int fault_address, int fault_content, pswifi_result_t res)
-{   
-  unsigned long *addr, data;
+  PDEBUG(("text=%lx-%lx, size=%lx\n", btext, etext, text_size));
 
+  while (numFaults) {
+    if ((type = faultType) == RANDOM_FAULT)
+      type = randomFaults[random() %
+        (sizeof(randomFaults) / sizeof(randomFaults[0]))];
 
-  addr = (unsigned long *) (PAGE_OFFSET + fault_address);
-  
-  PDEBUG(("%p:%lx => ", addr, *addr));
-  
-  
-  data = *addr;
-  if(fault_content==1) {
-    data = data & 0xffffff00;
-    data = data | 0x00000090;
-  } else if(fault_content==2) {
-    data = data & 0xffff0000;
-    data = data | 0x00009090;
-  } else if(fault_content==3) {
-    data = data & 0xff000000;
-    data = data | 0x00909090;
-  } else if(fault_content==4) {
-    data = 0x90909090;
-  } 
-  res[0].address = (unsigned long) addr;
-  res[0].old = *addr;
-  res[0].new = data;
-  if (injectFault) {
-    *addr = data;
+    if (text_fault(type, btext, text_size))
+      numFaults--;
   }
-
-  PDEBUG(("%lx\n", *addr));
-  
-    
-  return(0);
 }
 
-
-
-
-/*
-#include <linux/sched.h>
-*/
-
-#define MAX_NUM_TASKS 20
-
-struct task_struct *
-find_task(void)
+static int text_fault(int type, unsigned long btext, unsigned long text_size)
 {
-  struct task_struct * task = NULL, *result = NULL ;
-  int i,j;
-  i = 1 + (random() % MAX_NUM_TASKS);
-  j = i;
-
-  
-  do {
-#if 0
-    read_lock(&tasklist_lock);
-#endif
-    for_each_task(task) { 
-      if (--i == 0) {
-       result = task;
-       break;
-      }
-    }
-#if 0
-    read_unlock(&tasklist_lock);
-#endif
-  } while ((i > 0) && (i != j));
+  unsigned long *addr, taddr;
+  int j, flip_bit, len, prefix;
+  unsigned char *c;
 
-  return(result);
-}
+  /* inject faults into text space */
 
-int
-stack_fault(pswifi_result_t res)
-{   
-  unsigned long *addr, size, taddr;
-  int flip_bit=0;
-  int count=0;
-  struct task_struct *task = NULL;
+  addr = (unsigned long *)
+    (btext + ((unsigned long) (random()&~0xf) % text_size));
 
-  while(count < numFaults) {
-    task = find_task();
-    if (task == NULL) {
-      return(-1);
-    }
+  /* now the tricky part */
 
-    size = (unsigned long) task + TASK_SIZE - task->thread.esp; 
+  taddr=(unsigned long) addr;
+  if (type != TEXT_FAULT) {
+    addr = (unsigned long *) find_faulty_instr(taddr, type, &len);
+    /* do it over again if we can't find the right instruction */
+    if (!addr || !len)
+      return FALSE;
+  }
 
-    PDEBUG(("stack range=%lx-%lx\n", 
-          (unsigned long) task->thread.esp, 
-          (unsigned long) task + TASK_SIZE));
+  PDEBUG(("target addr=%lx, instr addr=%p, %lx=>", taddr, addr,
+    text_read_ul(addr)));
 
-    addr = (unsigned long *) ((long) task->thread.esp + 
-                             (random()&~0x3)%size);  
-    taddr=(unsigned long) addr;
+  switch (type) {
+  case TEXT_FAULT:
     flip_bit = random() & 0x1f;
-    PDEBUG(("%lx:%lx flip bit %d => ", taddr, *addr, flip_bit));
+    PDEBUG(("flip bit %d => ", flip_bit));
     flip_bit = 1 << flip_bit;
-    res[count].address = taddr;
-    res[count].old = *addr;
-    res[count].new = (*addr) ^ flip_bit;
-    if (injectFault) {
-      *addr = ((*addr)^flip_bit); 
-    }
-    PDEBUG(("%lx\n", *addr));
-    count++;
-  }
-  return(0);
-}
 
+    text_write_ul(addr, text_read_ul(addr)^flip_bit);
 
+    break;
 
-/*
-// Instead of dealing with heaps directly, we look at the area cache of pages 
-// and vm pages and find an address there.
-*/
-
-
-int heap_fault(pswifi_result_t res)
-{   
-#ifdef notdef
-  unsigned long *addr, taddr;
-  int flip_bit=0;
-  int count=0;
-  unsigned long flags;
-  struct list_head *next;
-
-   addr = (unsigned long *) (map->address + (random()&~0xf)%map->size); 
-   
-   taddr=(unsigned long) addr;
-   flip_bit = random() & 0x1f;
-   PDEBUG("heap range=%lx-%lx ", map->address, map->address + map->size);
-   PDEBUG("%lx:%lx flip bit %d => ", taddr, *addr, flip_bit);
-   flip_bit = 1 << flip_bit;
-   res[count].address = taddr;
-   res[count].old = *addr;
-   res[count].new = (*addr) ^ flip_bit;
-
-   if (injectFault) {
-     *addr = ((*addr)^flip_bit); 
-   }
-   PDEBUG("%lx\n", *addr);
-   count++;   
- } while (count < numFaults);
-#endif
-  return(-1);
-  
-}
+  case NOP_FAULT:
+  case INIT_FAULT:
+  case BRANCH_FAULT:
+  case INTERFACE_FAULT:
+  case IRQ_FAULT:
+    c = (unsigned char *) addr;
 
+    for (j = 0; j < len; j++) {
+      /* replace these bytes with NOP (*c=NOP) */
+      text_write_ub(c, NOP);
 
-unsigned long  
-do_fault_copy_from_user (void *kaddr, const void *udaddr, unsigned long len,
-                     unsigned long (* copy_fn) (void *, const void *, unsigned long))
-{   
-  unsigned int prob, i=0;
-
-  if ( faultInjected && (faultType==BCOPY_FAULT) ) {
-
-    if (++crashCount == crashInterval) {   
-      
-      crashCount=0;
-      prob = random();
-      crashInterval = CRASH_INTERVAL + (random() & FI_MASK);
-      
-      if (prob < P50) {                    /* corrupt 1 QW         */
-       i=1; 
-      } else if (prob < P94) {               /* corrupt 2 - 1024 QW  */
-       i = prob & 0x3fe;
-       while(!i) {
-         i = random() & 0x3fe; 
-       }
-      } else {                            /* corrupt 2-4 pages    */
-       i= prob & 0xc00;
-       while(!i) {
-         i = random() & 0xc00; 
-       }
-      }
-      PDEBUG(("copyin: %p to %p, len=%ld overrun=%d, Intvl=%ld, inj=%ld\n", 
-            udaddr, kaddr, len, i, crashInterval, faultInjected));
-      if (faultInjected++ <numFaults) {
-       len += i;
-      } else {
-       faultInjected = 0;
-      }
-      i = 1;
+      c++;
     }
-    return(copy_fn(kaddr, udaddr, len));
-  } else {
-    return(copy_fn(kaddr, udaddr, len));
-  }
-}
 
-unsigned long
-do_fault_copy_to_user(void *udaddr, const void *kaddr, unsigned long len,
-                  unsigned long (* copy_fn) (void *, 
-                                             const void *, 
-                                             unsigned long))
-{   
-  unsigned int prob, i=0;
-
-  if( faultInjected && (faultType==BCOPY_FAULT) ){
-    crashCount++;
-    if (crashCount == crashInterval) {
-      crashCount=0;
-      prob = random();
-      crashInterval = CRASH_INTERVAL + (random() & FI_MASK);
-
-      if ( prob < P50) {                    /* corrupt 1 QW         */
-       i=1; 
-      } else if(prob < P94) {               /* corrupt 2 - 1024 QW  */
-       i = prob & 0x3fe;
-       while (!i) {
-         i = random() & 0x3fe; 
-       }
-      } else {
-       i = prob & 0xc00;
-       while(!i) {
-         i = random() & 0xc00; 
-       }
+    break;
+
+  case DST_FAULT:
+  case SRC_FAULT:
+    /* skip thru the prefix and opcode, and flip bits in following bytes */
+    c=(unsigned char *) addr;
+    do {
+      switch (text_read_ub(c)) {
+      case 0x66: case 0x67: case 0x26: case 0x36:
+      case 0x2e: case 0x3e: case 0x64: case 0x65:
+      case 0xf0: case 0xf2: case 0xf3:
+        prefix = 1;
+        break;
+      default:
+        prefix = 0;
+        break;
       }
-      PDEBUG(("copyout: %p to %p, len=%ld overrun=%d, Intvl=%ld, inj=%ld\n",
-            kaddr, udaddr, len, i, crashInterval, faultInjected));
-      if (faultInjected++ <numFaults) {
-       len+=i;
-      } else  {
-       faultInjected = 0;
+      if (prefix) {
+        c++;
       }
-      i=1;
+    } while (prefix);
+    if(text_read_ub(c)>=0xd8 && text_read_ub(c)<=0xdf) {
+      /* don't mess with fp instruction, yet */
+      PDEBUG(("floating point instruction, bailing out\n"));
+      return FALSE;
     }
-    return(copy_fn(udaddr, kaddr, len));
-  } else 
-    return(copy_fn(udaddr, kaddr, len));
-}
-
-
-unsigned long
-swifi___generic_copy_from_user (void *kaddr, void *udaddr, unsigned long len)
-{
-  return(do_fault_copy_from_user(kaddr, 
-                                udaddr, 
-                                len, 
-                                __generic_copy_from_user));
-}
-
-unsigned long  
-swifi___generic_copy_to_user(void *udaddr, void *kaddr, unsigned long len)
-{
-  return(do_fault_copy_to_user(udaddr, 
-                              kaddr, 
-                              len, 
-                              __generic_copy_to_user));
-}
-
-
-
-void *
-swifi_memcpy_fn (void *to, void *from, size_t len)
-{   
-  unsigned int prob, i=0;
-
-  if( faultInjected && (faultType==BCOPY_FAULT) ) {
-    crashCount++;
-    if (crashCount == crashInterval) {
-      crashCount=0;
-      prob = random();
-      crashInterval = CRASH_INTERVAL + (random() & FI_MASK);
-
-      if (prob < P50) {                    /* corrupt 1 QW         */
-               i=1; 
-      } else if (prob < P94) {               /* corrupt 2 - 1024 QW  */
-       i= prob & 0x3fe;
-       while(!i) {
-         i = random() & 0x3fe; 
-       }
-      } else {                            /* corrupt 2-4 pages    */
-       i=prob&0xc00;
-       while(!i) {
-         i = random() & 0xc00; 
-       }
-      }
-    
-      PDEBUG(("memcpy: %p to %p, len=%d overrun=%d, Intvl=%ld, inj=%ld\n", 
-            from, to, len, i, crashInterval, faultInjected));
-      if(faultInjected++ <numFaults) len+=i;
-      else faultInjected=0;
-      i=1;
+    if(text_read_ub(c)==0x0f) {
+      c++;
     }
-    return(memcpy(to, from, len));
-  } else 
-    return(memcpy(to, from, len));
-}
-
-
-void *
-swifi_memmove_fn (void *to, void *from, size_t len)
-{   
-  unsigned int prob, i=0;
-
-  if( faultInjected && (faultType==BCOPY_FAULT) ) {
-    crashCount++;
-    if (crashCount == crashInterval) {
-      crashCount=0;
-      prob = random();
-      crashInterval = CRASH_INTERVAL + (random() & FI_MASK);
-
-      if (prob < P50) {                    /* corrupt 1 QW         */
-               i=1; 
-      } else if (prob < P94) {               /* corrupt 2 - 1024 QW  */
-       i= prob & 0x3fe;
-       while(!i) {
-         i = random() & 0x3fe; 
-       }
-      } else {                            /* corrupt 2-4 pages    */
-       i=prob&0xc00;
-       while(!i) {
-         i = random() & 0xc00; 
-       }
-      }
-    
-      PDEBUG(("memmove: %p to %p, len=%d overrun=%d, Intvl=%ld, inj=%ld\n", 
-            from, to, len, i, crashInterval, faultInjected));
-      if(faultInjected++ <numFaults) len+=i;
-      else faultInjected=0;
-      i=1;
+    if(text_read_ub(c)==0x0f) {
+      c++;
     }
-    return(memmove(to, from, len));
-  } else 
-    return(memmove(to, from, len));
-}
-
-
-void *
-memmove_fn(void *to, void *from, size_t len)
-{
-  return(memmove(to, from, len));
-}
-
-
-
-void *
-memcpy_fn(void *to, void *from, size_t len)
-{
-  return(memcpy(to, from, len));
-}
-
-
-
-
-void
-do_fault_kfree(void *addr, void (* kfree_fn)(const void *))
-{   
-  if(addr == crashAddr) {
-    crashAddr=0;
-  }
-  if (faultInjected && (faultType==FREE_FAULT || 
-                       faultType==MEM_LEAK_FAULT)) {
-    crashCount++;
-    if(crashCount>=crashInterval) {   
-      
-      /* alternate between premature freeing and non-free */
-      if(crashToggle) {
-       if(crashAddr) { 
-         PDEBUG(("malloc : freeing %p prematurely\n", 
-                crashAddr));
-         kfree_fn(crashAddr);
-         kfree_fn(addr);
-         crashAddr=0;
-         crashToggle=0;
-         crashCount=0;
-         crashInterval = CRASH_INTERVAL + (random()&FI_MASK);
-         if (faultInjected++ > numFaults) {
-           faultInjected=0;
-         }
-       } 
-      } else {
-       PDEBUG(("free: don't free %p\n", addr));
-       if(faultInjected++ > numFaults) {
-         faultInjected=0;
-       }
-       if(faultType==FREE_FAULT) {
-         crashToggle=1;
-       }
-       crashCount=0;
-       crashInterval = CRASH_INTERVAL + (random()&FI_MASK);
-      }
+    c++;
+    len = len-((long) c - (long) addr);
+    if (len == 0)
+    {
+      PDEBUG(("text_fault: len = %d\n", len));
+      return FALSE;
     }
-  } else {
-    kfree_fn(addr);
-  }
-}
-
-#if 0
-void
-swifi_kfree(const void *addr)
-{
-  do_fault_kfree((void *) addr, kfree);
-}
-#endif
+    flip_bit = random() % (len*8);
+    PDEBUG(("flip bit %d (len=%d) => ", flip_bit, len));
+    for(j=0; j<len; j++) {
+      /* go to the right byte */
+      if(flip_bit<8) {
+        flip_bit = 1 << flip_bit;
 
+        text_write_ub(c, (text_read_ub(c)^flip_bit));
 
-void do_vfree(const void * addr)
-{
-  vfree((void *) addr);
-}
-
-
-void
-swifi_vfree(void *addr)
-{
-  do_fault_kfree(addr, do_vfree);
-}
-
-
-
-
-void *
-do_fault_kmalloc(size_t size, 
-                int flags,
-                void * (* kmalloc_fn)(size_t size, int flags))
-{
-  if (faultInjected && (faultType==ALLOC_FAULT)) {
-    crashCount++;
-    if(crashCount>=crashInterval) {   
-      PDEBUG(("kmalloc : returning null\n"));
-      crashCount=0;
-      crashInterval = CRASH_INTERVAL + (random()&FI_MASK);
-      if (faultInjected++ > numFaults) {
-       faultInjected=0;
-       return(NULL);
+        j=len;
       }
-
+      c++;
+      flip_bit = flip_bit-8;
     }
-  }
 
-  return(kmalloc_fn(size, flags));
-}
+    break;
 
-
-#if 0
-void *
-swifi_kmalloc(size_t size, int flags)
-{
-  return(do_fault_kmalloc(size, flags, kmalloc));
-}
-#endif
-
-
-
-void * do_fault_vmalloc(unsigned long size, 
-                       int gfp_mask, 
-                       pgprot_t prot,
-                       void * (*vmalloc_fn)(unsigned long size, 
-                                            int gfp_mask, 
-                                            pgprot_t prot))
-{
-  if (faultInjected && (faultType==ALLOC_FAULT)) {
-    crashCount++;
-    if(crashCount>=crashInterval) {   
-      PDEBUG(("vmalloc : returning null\n"));
-      crashCount=0;
-      crashInterval = CRASH_INTERVAL + (random()&FI_MASK);
-      if (faultInjected++ > numFaults) {
-       faultInjected=0;
-       return(NULL);
+  case PTR_FAULT:
+    /* 5f) ptr: if instruction has regmodrm byte (i_has_modrm),
+     *     flip 1 bit in lower byte (0x0f) or any bit in following
+     *     bytes (sib, imm or disp).
+     */
+    c=(unsigned char *) addr;
+    do {
+      switch (text_read_ub(c)) {
+      case 0x66: case 0x67: case 0x26: case 0x36:
+      case 0x2e: case 0x3e: case 0x64: case 0x65:
+      case 0xf0: case 0xf2: case 0xf3:
+        prefix = 1;
+        break;
+      default:
+        prefix = 0;
+        break;
       }
-
+      if (prefix) {
+        c++;
+      }
+    } while (prefix);
+    if(text_read_ub(c)>=0xd8 && text_read_ub(c)<=0xdf) {
+      /* don't mess with fp instruction, yet */
+      PDEBUG(("floating point instruction, bailing out\n"));
+      return FALSE;
     }
-  }
-  return(vmalloc_fn(size, gfp_mask, prot));
-}
-
-void *
-swifi___vmalloc(unsigned long size, int gfp_mask, pgprot_t prot)
-{
-  return(do_fault_vmalloc(size, gfp_mask, prot, __vmalloc));
-}
-
-
-#if 0
-typedef struct section_callback {
-  const char * module_name;
-  const char * section_name;
-  unsigned long sec_start;
-  unsigned long sec_end;
-} section_callback_t;
-
-static int
-text_section_callback(void *token, 
-                     const char *modname, 
-                     const char *secname,
-                     ElfW(Addr) secstart, 
-                     ElfW(Addr) secend, 
-                     ElfW(Word) secflags)
-{
-  section_callback_t * info = (section_callback_t *) token;
-  
-  if ((strcmp(modname, info->module_name) == 0) &&
-      (strcmp(secname, info->section_name) == 0)) {
-    info->sec_start = secstart;
-    info->sec_end = secend;
-    return(1);
-  }
-  return(0);
-}
-#endif
-
-
-int text_fault(char *mod_name, pswifi_result_t res)
-{   
-  unsigned long *addr, text_size, offset, page, taddr;
-  unsigned long btext, etext;
-
-  int count, flip_bit=0, len, rc;
-  unsigned char *c;
-#if 0
-  struct module * module;
-  section_callback_t info;
-#endif
-
-#define MAX_NUM_MODULES 10
-
-  /* inject faults into text space */
-
-  for(count=0; count<numFaults; count++) {
-    int i = 1 + (random() % MAX_NUM_MODULES);
-    int j = i;
-#if 0
-    module = mod;
-#endif
-
-#if 0
-    info.module_name = module->name;
-    info.module_name = "<module-name>";
-    info.section_name = ".text";
-
-    kallsyms_sections(&info, text_section_callback);
-    if (info.sec_start == 0 ) {
-      return(-1);
+    if(text_read_ub(c)==0x0f) {
+      c++;
     }
-#endif
-
-    load_nlist(mod_name, &btext, &etext);
-
-#if 0
-    btext = info.sec_start;
-    etext = info.sec_end;
-#endif
-    text_size = etext - btext;
-    
-    PDEBUG(("text=%lx-%lx, size=%lx\n", btext, etext, text_size));
-    
-    addr = (unsigned long *) 
-      (btext + ((unsigned long) (random()&~0xf) % text_size)); 
-    
-    /* now the tricky part */
-
-    taddr=(unsigned long) addr;
-    if( faultType==INIT_FAULT || 
-       faultType==NOP_FAULT || 
-       faultType==DST_FAULT || 
-       faultType==SRC_FAULT ||
-       faultType==BRANCH_FAULT || 
-       faultType==PTR_FAULT || 
-       faultType==LOOP_FAULT || 
-       faultType==INTERFACE_FAULT ||
-       faultType==IRQ_FAULT ) {
-      addr = (unsigned long *) find_faulty_instr(taddr, faultType, &len);
-      /* do it over again if we can't find the right instruction */
-      if(!addr || !len ) {
-       i--;
-       continue;
-      }
+    if(text_read_ub(c)==0x0f) {
+      c++;
     }
+    c++;
+    len = len-((long) c - (long) addr);
+    flip_bit = random() % (len*8-4);
+    PDEBUG(("flip bit %d (len=%d) => ", flip_bit, len));
 
-printf("len = %d\n", len);
+    /* mod/rm byte is special */
 
-    PDEBUG(("target addr=%lx, instr addr=%p, %lx=>", taddr, addr,
-       text_read_ul(addr))); 
-      
-    offset = (unsigned long) addr&PAGE_MASK;
-    page = (unsigned long) addr&~PAGE_MASK;
-    
-    /* it doesn't matter what we used here to unprotect page,
-     * as this routine will not be in production code.
-     */
-      
-    res[count].address = taddr;
-    res[count].old = text_read_ul(addr);
-    res[count].new = text_read_ul(addr);
-
-    if (faultType==TEXT_FAULT) {
-
-      flip_bit = random() & 0x1f;
-      PDEBUG(("flip bit %d => ", flip_bit));
+    if (flip_bit < 4) {
       flip_bit = 1 << flip_bit;
 
-      res[count].new = text_read_ul(addr) ^ flip_bit;
-      
-      if (injectFault) {
-       text_write_ul(addr, text_read_ul(addr)^flip_bit); 
-      }
+      text_write_ub(c, text_read_ub(c)^flip_bit);
+    }
+    c++;
+    flip_bit=flip_bit-4;
 
-    } else if (faultType==NOP_FAULT || 
-              faultType==INIT_FAULT ||
-              faultType==BRANCH_FAULT || 
-              faultType==INTERFACE_FAULT ||
-              faultType==IRQ_FAULT) {
-      c = (unsigned char *) addr;
+    for(j=1; j<len; j++) {
+      /* go to the right byte */
+      if (flip_bit<8) {
+        flip_bit = 1 << flip_bit;
 
-      for (j = 0; j < len; j++) {
-       /* replace these bytes with NOP (*c=NOP) */
-       if (j < sizeof(unsigned long)) {
-         ((unsigned char *) &res[count].new)[j] = NOP;
-       }
-       if (injectFault) {
-         text_write_ub(c, NOP);
-       }       
+        text_write_ub(c, text_read_ub(c)^flip_bit);
 
-       c++;
-      }
-    } else if (faultType==DST_FAULT || faultType==SRC_FAULT) {
-      /* skip thru the prefix and opcode, and flip bits in following bytes */
-      int prefix;
-      c=(unsigned char *) addr;
-      do {
-       switch (text_read_ub(c)) {
-       case 0x66: case 0x67: case 0x26: case 0x36:
-       case 0x2e: case 0x3e: case 0x64: case 0x65:
-       case 0xf0: case 0xf2: case 0xf3:
-         prefix = 1;
-         break;
-       default:
-         prefix = 0;
-         break;
-       }
-       if (prefix) {
-         c++;
-       }
-      } while (prefix);
-      if(text_read_ub(c)>=0xd8 && text_read_ub(c)<=0xdf) {
-       /* don't mess with fp instruction, yet.
-        * but there shouldn't be any fp instr in kernel.
-        */
-       PDEBUG(("floating point instruction, bailing out\n"));
-       i--;
-       continue;
-      } else if(text_read_ub(c)==0x0f) {
-       c++;
-      }
-      if(text_read_ub(c)==0x0f) {
-       c++;
+        j=len;
       }
       c++;
-      len = len-((long) c - (long) addr);
-      if (len == 0)
-      {
-       printf("tex_fault: len = %d\n", len);
-       count--;
-       continue;
-      }
-if (len == 0)
-{
-       int i;
-
-       printf(
-       "text_fault: bad length at address %p, c = %p, fault type %ld\n",
-               addr, c, faultType);
-       printf("bytes:");
-       for (i= 0; i<16; i++)
-               printf(" 0x%02x", text_read_ub((char *)addr+i));
-       printf("\n");
-       abort();
-       *(int *)-4 = 0;
-}
-      flip_bit = random() % (len*8);
-      PDEBUG(("flip bit %d (len=%d) => ", flip_bit, len));
-      for(j=0; j<len; j++) {
-       /* go to the right byte */
-       if(flip_bit<8) {
-         flip_bit = 1 << flip_bit;
-
-         if (j < sizeof(unsigned long)) {
-           ((unsigned char *) &res[count].new)[j] =
-               (text_read_ub(c) ^ flip_bit);
-         }
-
-
-         if (injectFault) {
-           text_write_ub(c, (text_read_ub(c)^flip_bit));
-         }
+      flip_bit = flip_bit-8;
+    }
 
-         j=len;
-       }
-       c++;
-       flip_bit = flip_bit-8;
-      }
-    } else if(faultType==PTR_FAULT) {
-      /* 5f) ptr: if instruction has regmodrm byte (i_has_modrm),
-       *     flip 1 bit in lower byte (0x0f) or any bit in following
-       *     bytes (sib, imm or disp).
+    break;
+
+  case LOOP_FAULT:
+    c=(unsigned char *) addr;
+    /* replace rep with repe, and vice versa */
+    if(text_read_ub(c)==0xf3) {
+      text_write_ub(c, 0xf2);
+    } else if(text_read_ub(c)==0xf2) {
+      text_write_ub(c, 0xf3);
+    } else if( (text_read_ub(c)&0xf0)==0x70 ) {
+      /* if we've jxx imm8 instruction,
+       * incl even byte instruction, eg jo (70) to jno (71)
+       * decl odd byte instruction,  eg jnle (7f) to jle (7e)
        */
-      int prefix;
-      c=(unsigned char *) addr;
-      do {
-       switch (text_read_ub(c)) {
-       case 0x66: case 0x67: case 0x26: case 0x36:
-       case 0x2e: case 0x3e: case 0x64: case 0x65:
-       case 0xf0: case 0xf2: case 0xf3:
-         prefix = 1;
-         break;
-       default:
-         prefix = 0;
-         break;
-       }
-       if (prefix) {
-         c++;
-       }
-      } while (prefix);
-      if(text_read_ub(c)>=0xd8 && text_read_ub(c)<=0xdf) {
-       /* don't mess with fp instruction, yet */
-       PDEBUG(("floating point instruction, bailing out\n"));
-       i--;
-       continue;
-      } else if(text_read_ub(c)==0x0f) {
-       c++;
-      }
-      if(text_read_ub(c)==0x0f) {
-       c++;
+      if(text_read_ub(c)%2 == 0) {
+               text_write_ub(c, text_read_ub(c)+1);
+      } else {
+        text_write_ub(c, text_read_ub(c)-1);
       }
+    } else if(text_read_ub(c)==0x66 || text_read_ub(c)==0x67) {
+           /* override prefix */
       c++;
-      len = len-((long) c - (long) addr);
-      flip_bit = random() % (len*8-4);
-      PDEBUG(("flip bit %d (len=%d) => ", flip_bit, len));
-
-      /* mod/rm byte is special */
-
-      if (flip_bit < 4) {
-       flip_bit = 1 << flip_bit;
-
-       rc = c - (unsigned char *) addr;
-       if (rc < sizeof(unsigned long)) {
-         ((unsigned char *) &res[count].new)[rc] = text_read_ub(c) ^ flip_bit;
-         
-       }
-       if (injectFault) {
-         text_write_ub(c, text_read_ub(c)^flip_bit);
-       }
-
-      }
-      c++; 
-      flip_bit=flip_bit-4;
-
-      for(j=1; j<len; j++) {
-       /* go to the right byte */
-       if (flip_bit<8) {
-         flip_bit = 1 << flip_bit;
-
-         rc = (c - (unsigned char *) addr);
-         if (rc < sizeof(unsigned long)) {
-           ((unsigned char *) &res[count].new)[rc] =
-               text_read_ub(c) ^ flip_bit;
-           
-         }
-         if (injectFault) {
-           text_write_ub(c, text_read_ub(c)^flip_bit);
-         }
-
-         j=len;
-       }
-       c++;
-       flip_bit = flip_bit-8;
+    } else if(text_read_ub(c++)==0xf && (text_read_ub(c)&0xf0)==0x80 ) {
+      /* if we've jxx imm16/32 instruction,
+       * incl even byte instruction, eg jo (80) to jno (81)
+       * decl odd byte instruction,  eg jnle (8f) to jle (8e)
+       */
+      if(text_read_ub(c)%2 == 0) {
+        text_write_ub(c, text_read_ub(c)+1);
+      } else {
+        text_write_ub(c, text_read_ub(c)-1);
       }
-    } else if(faultType==LOOP_FAULT) {
-      c=(unsigned char *) addr;
-      /* replace rep with repe, and vice versa */
-       if(text_read_ub(c)==0xf3) {
-         if (j < sizeof(unsigned long)) {
-           ((unsigned char *) &res[count].new)[j] = NOP;
-         }
-
-         rc = (c - (unsigned char *) addr);
-         if (rc < sizeof(unsigned long)) {
-           ((unsigned char *) &res[count].new)[rc] = 0xf2;
-           
-         }
-         if (injectFault) {
-           text_write_ub(c, 0xf2);
-         }
-       } else if(text_read_ub(c)==0xf2) {
-         rc = (c - (unsigned char *) addr);
-         if (rc < sizeof(unsigned long)) {
-           ((unsigned char *) &res[count].new)[rc] = 0xf3;
-           
-         }
-         if (injectFault) {
-           text_write_ub(c, 0xf3);
-         }
-       } else if( (text_read_ub(c)&0xf0)==0x70 ) {
-         /* if we've jxx imm8 instruction, 
-          * incl even byte instruction, eg jo (70) to jno (71)
-          * decl odd byte instruction,  eg jnle (7f) to jle (7e)
-          */ 
-         if(text_read_ub(c)%2 == 0) { 
-           rc = (c - (unsigned char *) addr);
-           if (rc < sizeof(unsigned long)) {
-             ((unsigned char *) &res[count].new)[rc] = text_read_ub(c) + 1;
-           
-           }
+    }
 
-           if (injectFault) {
-             text_write_ub(c, text_read_ub(c)+1);
-           }
-         }  else {
+    break;
 
-           rc = (c - (unsigned char *) addr);
-           if (rc < sizeof(unsigned long)) {
-             ((unsigned char *) &res[count].new)[rc] = text_read_ub(c) - 1;
-             
-           }
+  case STOP_FAULT:
+    text_write_ub(addr, BKPT_INST);
 
-           if (injectFault) {
-             text_write_ub(c, text_read_ub(c)-1);
-           }
-         }
-       } else if(text_read_ub(c)==0x66 || text_read_ub(c)==0x67)       { 
-               /* override prefix */
-         c++;
-       } else if(text_read_ub(c++)==0xf && (text_read_ub(c)&0xf0)==0x80 ) {
-         /* if we've jxx imm16/32 instruction, 
-          * incl even byte instruction, eg jo (80) to jno (81)
-          * decl odd byte instruction,  eg jnle (8f) to jle (8e)
-          */ 
-         if(text_read_ub(c)%2 == 0) {
-           rc = (c - (unsigned char *) addr);
-           if (rc < sizeof(unsigned long)) {
-             ((unsigned char *) &res[count].new)[rc] = text_read_ub(c) + 1;
-             
-           }
-           if (injectFault) {
-             text_write_ub(c, text_read_ub(c)+1);
-           }
-         } else {
-           rc = (c - (unsigned char *) addr);
-           if (rc < sizeof(unsigned long)) {
-             ((unsigned char *) &res[count].new)[rc] = text_read_ub(c) -1;
-             
-           }
+    break;
 
-           if (injectFault) {
-             text_write_ub(c, text_read_ub(c)-1);
-           }
-         }
-       }
-      
-    }
-    PDEBUG(("%lx\n", text_read_ul(addr)));
+  default:
+    assert(0);
   }
-  return(0);
-}
-
 
-#else /* CONFIG_SWIFI */
-
-long
-sys_inject_fault(char * module_name,
-                unsigned long argFaultType,
-                unsigned long argRandomSeed,
-                unsigned long argNumFaults,
-                pswifi_result_t result_record,
-                unsigned long do_inject)
-{
-  return(0);
+  return TRUE;
 }
-
-#endif /* CONFIG_SWIFI */
diff --git a/minix/commands/swifi/random.c b/minix/commands/swifi/random.c
deleted file mode 100644 (file)
index c2da407..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*-
- * Copyright (c) 1992, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *     @(#)random.c    8.1 (Berkeley) 6/10/93
- */
-
-#include "ddb.h"
-
-static unsigned long randseed = 1;
-
-void
-srandom(seed)
-       unsigned long seed;
-{
-       randseed = seed;
-}
-
-/*
- * Pseudo-random number generator for randomizing the profiling clock,
- * and whatever else we might use it for.  The result is uniform on
- * [0, 2^31 - 1].
- */
-unsigned long
-random()
-{
-       register long x, hi, lo, t;
-
-       /*
-        * Compute x[n + 1] = (7^5 * x[n]) mod (2^31 - 1).
-        * From "Random number generators: good ones are hard to find",
-        * Park and Miller, Communications of the ACM, vol. 31, no. 10,
-        * October 1988, p. 1195.
-        */
-       x = randseed;
-       hi = x / 127773;
-       lo = x % 127773;
-       t = 16807 * lo - 2836 * hi;
-       if (t <= 0)
-               t += 0x7fffffff;
-       randseed = t;
-       return (t);
-}
diff --git a/minix/commands/swifi/swifi-2.4.18-a-patch b/minix/commands/swifi/swifi-2.4.18-a-patch
deleted file mode 100644 (file)
index 49f40df..0000000
+++ /dev/null
@@ -1,980 +0,0 @@
-diff -ruN linux/arch/i386/kernel/entry.S linux-nonooks/arch/i386/kernel/entry.S
---- linux/arch/i386/kernel/entry.S     2002-02-25 14:37:53.000000000 -0500
-+++ linux-nonooks/arch/i386/kernel/entry.S     2005-01-12 15:30:51.000000000 -0500
-@@ -635,6 +635,61 @@
-       .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for lremovexattr */
-       .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+#ifdef CONFIG_SWIFI   
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* 240 reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* 245 reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* 250 reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* 255 reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* 260 reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* 265 reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* 270 reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* 275 reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* 280 reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_ni_syscall)       /* 285 reserved for fremovexattr */
-+      .long SYMBOL_NAME(sys_inject_fault)
-+#endif /* CONFIG_SWIFI        */
-+
-       .rept NR_syscalls-(.-sys_call_table)/4
-               .long SYMBOL_NAME(sys_ni_syscall)
-       .endr
-+
-+      
-diff -ruN linux/config-swifi linux-nonooks/config-swifi
---- linux/config-swifi 1969-12-31 19:00:00.000000000 -0500
-+++ linux-nonooks/config-swifi 2005-01-12 15:10:12.000000000 -0500
-@@ -0,0 +1,911 @@
-+#
-+# Automatically generated by make menuconfig: don't edit
-+#
-+CONFIG_X86=y
-+CONFIG_ISA=y
-+# CONFIG_SBUS is not set
-+CONFIG_UID16=y
-+
-+#
-+# Code maturity level options
-+#
-+CONFIG_EXPERIMENTAL=y
-+
-+#
-+# Loadable module support
-+#
-+CONFIG_MODULES=y
-+# CONFIG_MODVERSIONS is not set
-+CONFIG_KMOD=y
-+
-+#
-+# Processor type and features
-+#
-+# CONFIG_M386 is not set
-+# CONFIG_M486 is not set
-+# CONFIG_M586 is not set
-+# CONFIG_M586TSC is not set
-+# CONFIG_M586MMX is not set
-+# CONFIG_M686 is not set
-+CONFIG_MPENTIUMIII=y
-+# CONFIG_MPENTIUM4 is not set
-+# CONFIG_MK6 is not set
-+# CONFIG_MK7 is not set
-+# CONFIG_MELAN is not set
-+# CONFIG_MCRUSOE is not set
-+# CONFIG_MWINCHIPC6 is not set
-+# CONFIG_MWINCHIP2 is not set
-+# CONFIG_MWINCHIP3D is not set
-+# CONFIG_MCYRIXIII is not set
-+CONFIG_X86_WP_WORKS_OK=y
-+CONFIG_X86_INVLPG=y
-+CONFIG_X86_CMPXCHG=y
-+CONFIG_X86_XADD=y
-+CONFIG_X86_BSWAP=y
-+CONFIG_X86_POPAD_OK=y
-+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-+CONFIG_X86_L1_CACHE_SHIFT=5
-+CONFIG_X86_TSC=y
-+CONFIG_X86_GOOD_APIC=y
-+CONFIG_X86_PGE=y
-+CONFIG_X86_USE_PPRO_CHECKSUM=y
-+# CONFIG_TOSHIBA is not set
-+# CONFIG_I8K is not set
-+CONFIG_MICROCODE=y
-+CONFIG_X86_MSR=y
-+CONFIG_X86_CPUID=y
-+CONFIG_NOHIGHMEM=y
-+# CONFIG_HIGHMEM4G is not set
-+# CONFIG_HIGHMEM64G is not set
-+# CONFIG_MATH_EMULATION is not set
-+CONFIG_MTRR=y
-+# CONFIG_SMP is not set
-+# CONFIG_X86_UP_APIC is not set
-+# CONFIG_X86_UP_IOAPIC is not set
-+
-+#
-+# General setup
-+#
-+CONFIG_NET=y
-+CONFIG_PCI=y
-+# CONFIG_PCI_GOBIOS is not set
-+# CONFIG_PCI_GODIRECT is not set
-+CONFIG_PCI_GOANY=y
-+CONFIG_PCI_BIOS=y
-+CONFIG_PCI_DIRECT=y
-+CONFIG_PCI_NAMES=y
-+CONFIG_EISA=y
-+# CONFIG_MCA is not set
-+CONFIG_HOTPLUG=y
-+
-+#
-+# PCMCIA/CardBus support
-+#
-+# CONFIG_PCMCIA is not set
-+
-+#
-+# PCI Hotplug Support
-+#
-+# CONFIG_HOTPLUG_PCI is not set
-+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
-+# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
-+CONFIG_SYSVIPC=y
-+CONFIG_BSD_PROCESS_ACCT=y
-+CONFIG_SYSCTL=y
-+CONFIG_KCORE_ELF=y
-+# CONFIG_KCORE_AOUT is not set
-+CONFIG_BINFMT_AOUT=y
-+CONFIG_BINFMT_ELF=y
-+# CONFIG_BINFMT_MISC is not set
-+CONFIG_PM=y
-+# CONFIG_ACPI is not set
-+CONFIG_APM=y
-+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-+# CONFIG_APM_DO_ENABLE is not set
-+CONFIG_APM_CPU_IDLE=y
-+# CONFIG_APM_DISPLAY_BLANK is not set
-+CONFIG_APM_RTC_IS_GMT=y
-+# CONFIG_APM_ALLOW_INTS is not set
-+# CONFIG_APM_REAL_MODE_POWER_OFF is not set
-+
-+#
-+# Memory Technology Devices (MTD)
-+#
-+# CONFIG_MTD is not set
-+
-+#
-+# Parallel port support
-+#
-+CONFIG_PARPORT=y
-+CONFIG_PARPORT_PC=y
-+CONFIG_PARPORT_PC_CML1=y
-+# CONFIG_PARPORT_SERIAL is not set
-+# CONFIG_PARPORT_PC_FIFO is not set
-+# CONFIG_PARPORT_PC_SUPERIO is not set
-+# CONFIG_PARPORT_AMIGA is not set
-+# CONFIG_PARPORT_MFC3 is not set
-+# CONFIG_PARPORT_ATARI is not set
-+# CONFIG_PARPORT_GSC is not set
-+# CONFIG_PARPORT_SUNBPP is not set
-+# CONFIG_PARPORT_OTHER is not set
-+CONFIG_PARPORT_1284=y
-+
-+#
-+# Plug and Play configuration
-+#
-+CONFIG_PNP=y
-+CONFIG_ISAPNP=y
-+
-+#
-+# Block devices
-+#
-+CONFIG_BLK_DEV_FD=y
-+# CONFIG_BLK_DEV_XD is not set
-+# CONFIG_PARIDE is not set
-+# CONFIG_BLK_CPQ_DA is not set
-+# CONFIG_BLK_CPQ_CISS_DA is not set
-+# CONFIG_BLK_DEV_DAC960 is not set
-+CONFIG_BLK_DEV_LOOP=y
-+CONFIG_BLK_DEV_NBD=y
-+# CONFIG_BLK_DEV_RAM is not set
-+# CONFIG_BLK_DEV_INITRD is not set
-+
-+#
-+# Multi-device support (RAID and LVM)
-+#
-+# CONFIG_MD is not set
-+# CONFIG_BLK_DEV_MD is not set
-+# CONFIG_MD_LINEAR is not set
-+# CONFIG_MD_RAID0 is not set
-+# CONFIG_MD_RAID1 is not set
-+# CONFIG_MD_RAID5 is not set
-+# CONFIG_MD_MULTIPATH is not set
-+# CONFIG_BLK_DEV_LVM is not set
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+CONFIG_PACKET_MMAP=y
-+CONFIG_NETLINK_DEV=y
-+CONFIG_NETFILTER=y
-+# CONFIG_NETFILTER_DEBUG is not set
-+CONFIG_FILTER=y
-+CONFIG_UNIX=y
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE is not set
-+# CONFIG_ARPD is not set
-+CONFIG_INET_ECN=y
-+CONFIG_SYN_COOKIES=y
-+
-+#
-+#   IP: Netfilter Configuration
-+#
-+# CONFIG_IP_NF_CONNTRACK is not set
-+# CONFIG_IP_NF_QUEUE is not set
-+# CONFIG_IP_NF_IPTABLES is not set
-+# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-+# CONFIG_IPV6 is not set
-+CONFIG_KHTTPD=m
-+# CONFIG_ATM is not set
-+# CONFIG_VLAN_8021Q is not set
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_DECNET is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_X25 is not set
-+# CONFIG_LAPB is not set
-+# CONFIG_LLC is not set
-+# CONFIG_NET_DIVERT is not set
-+# CONFIG_ECONET is not set
-+# CONFIG_WAN_ROUTER is not set
-+# CONFIG_NET_FASTROUTE is not set
-+# CONFIG_NET_HW_FLOWCONTROL is not set
-+
-+#
-+# QoS and/or fair queueing
-+#
-+# CONFIG_NET_SCHED is not set
-+
-+#
-+# Telephony Support
-+#
-+# CONFIG_PHONE is not set
-+# CONFIG_PHONE_IXJ is not set
-+# CONFIG_PHONE_IXJ_PCMCIA is not set
-+
-+#
-+# ATA/IDE/MFM/RLL support
-+#
-+CONFIG_IDE=y
-+
-+#
-+# IDE, ATA and ATAPI Block devices
-+#
-+CONFIG_BLK_DEV_IDE=y
-+# CONFIG_BLK_DEV_HD_IDE is not set
-+# CONFIG_BLK_DEV_HD is not set
-+CONFIG_BLK_DEV_IDEDISK=y
-+CONFIG_IDEDISK_MULTI_MODE=y
-+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-+# CONFIG_BLK_DEV_IDEDISK_WD is not set
-+# CONFIG_BLK_DEV_COMMERIAL is not set
-+# CONFIG_BLK_DEV_TIVO is not set
-+# CONFIG_BLK_DEV_IDECS is not set
-+CONFIG_BLK_DEV_IDECD=y
-+# CONFIG_BLK_DEV_IDETAPE is not set
-+# CONFIG_BLK_DEV_IDEFLOPPY is not set
-+# CONFIG_BLK_DEV_IDESCSI is not set
-+CONFIG_BLK_DEV_CMD640=y
-+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-+CONFIG_BLK_DEV_ISAPNP=y
-+CONFIG_BLK_DEV_RZ1000=y
-+CONFIG_BLK_DEV_IDEPCI=y
-+CONFIG_IDEPCI_SHARE_IRQ=y
-+CONFIG_BLK_DEV_IDEDMA_PCI=y
-+CONFIG_BLK_DEV_ADMA=y
-+# CONFIG_BLK_DEV_OFFBOARD is not set
-+CONFIG_IDEDMA_PCI_AUTO=y
-+CONFIG_BLK_DEV_IDEDMA=y
-+# CONFIG_IDEDMA_PCI_WIP is not set
-+# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set
-+CONFIG_BLK_DEV_AEC62XX=y
-+CONFIG_AEC62XX_TUNING=y
-+CONFIG_BLK_DEV_ALI15X3=y
-+# CONFIG_WDC_ALI15X3 is not set
-+CONFIG_BLK_DEV_AMD74XX=y
-+# CONFIG_AMD74XX_OVERRIDE is not set
-+CONFIG_BLK_DEV_CMD64X=y
-+CONFIG_BLK_DEV_CY82C693=y
-+CONFIG_BLK_DEV_CS5530=y
-+CONFIG_BLK_DEV_HPT34X=y
-+# CONFIG_HPT34X_AUTODMA is not set
-+CONFIG_BLK_DEV_HPT366=y
-+CONFIG_BLK_DEV_PIIX=y
-+CONFIG_PIIX_TUNING=y
-+# CONFIG_BLK_DEV_NS87415 is not set
-+# CONFIG_BLK_DEV_OPTI621 is not set
-+CONFIG_BLK_DEV_PDC202XX=y
-+# CONFIG_PDC202XX_BURST is not set
-+CONFIG_PDC202XX_FORCE=y
-+CONFIG_BLK_DEV_SVWKS=y
-+CONFIG_BLK_DEV_SIS5513=y
-+CONFIG_BLK_DEV_SLC90E66=y
-+# CONFIG_BLK_DEV_TRM290 is not set
-+CONFIG_BLK_DEV_VIA82CXXX=y
-+# CONFIG_IDE_CHIPSETS is not set
-+CONFIG_IDEDMA_AUTO=y
-+# CONFIG_IDEDMA_IVB is not set
-+# CONFIG_DMA_NONPCI is not set
-+CONFIG_BLK_DEV_IDE_MODES=y
-+# CONFIG_BLK_DEV_ATARAID is not set
-+# CONFIG_BLK_DEV_ATARAID_PDC is not set
-+# CONFIG_BLK_DEV_ATARAID_HPT is not set
-+
-+#
-+# SCSI support
-+#
-+# CONFIG_SCSI is not set
-+
-+#
-+# Fusion MPT device support
-+#
-+# CONFIG_FUSION is not set
-+# CONFIG_FUSION_BOOT is not set
-+# CONFIG_FUSION_ISENSE is not set
-+# CONFIG_FUSION_CTL is not set
-+# CONFIG_FUSION_LAN is not set
-+
-+#
-+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
-+#
-+# CONFIG_IEEE1394 is not set
-+
-+#
-+# I2O device support
-+#
-+# CONFIG_I2O is not set
-+# CONFIG_I2O_PCI is not set
-+# CONFIG_I2O_BLOCK is not set
-+# CONFIG_I2O_LAN is not set
-+# CONFIG_I2O_SCSI is not set
-+# CONFIG_I2O_PROC is not set
-+
-+#
-+# Network device support
-+#
-+CONFIG_NETDEVICES=y
-+
-+#
-+# ARCnet devices
-+#
-+# CONFIG_ARCNET is not set
-+CONFIG_DUMMY=m
-+# CONFIG_BONDING is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_ETHERTAP is not set
-+# CONFIG_NET_SB1000 is not set
-+
-+#
-+# Ethernet (10 or 100Mbit)
-+#
-+CONFIG_NET_ETHERNET=y
-+# CONFIG_SUNLANCE is not set
-+# CONFIG_HAPPYMEAL is not set
-+# CONFIG_SUNBMAC is not set
-+# CONFIG_SUNQE is not set
-+# CONFIG_SUNGEM is not set
-+CONFIG_NET_VENDOR_3COM=y
-+# CONFIG_EL1 is not set
-+# CONFIG_EL2 is not set
-+# CONFIG_ELPLUS is not set
-+# CONFIG_EL16 is not set
-+# CONFIG_EL3 is not set
-+# CONFIG_3C515 is not set
-+# CONFIG_ELMC is not set
-+# CONFIG_ELMC_II is not set
-+CONFIG_VORTEX=m
-+CONFIG_LANCE=m
-+# CONFIG_NET_VENDOR_SMC is not set
-+# CONFIG_NET_VENDOR_RACAL is not set
-+# CONFIG_AT1700 is not set
-+# CONFIG_DEPCA is not set
-+# CONFIG_HP100 is not set
-+# CONFIG_NET_ISA is not set
-+CONFIG_NET_PCI=y
-+CONFIG_PCNET32=m
-+# CONFIG_ADAPTEC_STARFIRE is not set
-+# CONFIG_AC3200 is not set
-+# CONFIG_APRICOT is not set
-+# CONFIG_CS89x0 is not set
-+CONFIG_TULIP=m
-+# CONFIG_TULIP_MWI is not set
-+# CONFIG_TULIP_MMIO is not set
-+# CONFIG_DE4X5 is not set
-+# CONFIG_DGRS is not set
-+# CONFIG_DM9102 is not set
-+CONFIG_EEPRO100=m
-+# CONFIG_LNE390 is not set
-+# CONFIG_FEALNX is not set
-+# CONFIG_NATSEMI is not set
-+# CONFIG_NE2K_PCI is not set
-+# CONFIG_NE3210 is not set
-+# CONFIG_ES3210 is not set
-+# CONFIG_8139CP is not set
-+# CONFIG_8139TOO is not set
-+# CONFIG_8139TOO_PIO is not set
-+# CONFIG_8139TOO_TUNE_TWISTER is not set
-+# CONFIG_8139TOO_8129 is not set
-+# CONFIG_8139_NEW_RX_RESET is not set
-+# CONFIG_SIS900 is not set
-+# CONFIG_EPIC100 is not set
-+# CONFIG_SUNDANCE is not set
-+# CONFIG_TLAN is not set
-+# CONFIG_VIA_RHINE is not set
-+# CONFIG_VIA_RHINE_MMIO is not set
-+# CONFIG_WINBOND_840 is not set
-+# CONFIG_NET_POCKET is not set
-+
-+#
-+# Ethernet (1000 Mbit)
-+#
-+# CONFIG_ACENIC is not set
-+# CONFIG_DL2K is not set
-+# CONFIG_MYRI_SBUS is not set
-+# CONFIG_NS83820 is not set
-+# CONFIG_HAMACHI is not set
-+# CONFIG_YELLOWFIN is not set
-+# CONFIG_SK98LIN is not set
-+# CONFIG_FDDI is not set
-+# CONFIG_HIPPI is not set
-+# CONFIG_PLIP is not set
-+# CONFIG_PPP is not set
-+# CONFIG_SLIP is not set
-+
-+#
-+# Wireless LAN (non-hamradio)
-+#
-+# CONFIG_NET_RADIO is not set
-+
-+#
-+# Token Ring devices
-+#
-+# CONFIG_TR is not set
-+# CONFIG_NET_FC is not set
-+# CONFIG_RCPCI is not set
-+# CONFIG_SHAPER is not set
-+
-+#
-+# Wan interfaces
-+#
-+# CONFIG_WAN is not set
-+
-+#
-+# Amateur Radio support
-+#
-+# CONFIG_HAMRADIO is not set
-+
-+#
-+# IrDA (infrared) support
-+#
-+# CONFIG_IRDA is not set
-+
-+#
-+# ISDN subsystem
-+#
-+# CONFIG_ISDN is not set
-+
-+#
-+# Old CD-ROM drivers (not SCSI, not IDE)
-+#
-+# CONFIG_CD_NO_IDESCSI is not set
-+
-+#
-+# Input core support
-+#
-+CONFIG_INPUT=m
-+CONFIG_INPUT_KEYBDEV=m
-+CONFIG_INPUT_MOUSEDEV=m
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-+# CONFIG_INPUT_JOYDEV is not set
-+CONFIG_INPUT_EVDEV=m
-+
-+#
-+# Character devices
-+#
-+CONFIG_VT=y
-+CONFIG_VT_CONSOLE=y
-+CONFIG_SERIAL=y
-+CONFIG_SERIAL_CONSOLE=y
-+CONFIG_SERIAL_EXTENDED=y
-+CONFIG_SERIAL_MANY_PORTS=y
-+CONFIG_SERIAL_SHARE_IRQ=y
-+# CONFIG_SERIAL_DETECT_IRQ is not set
-+CONFIG_SERIAL_MULTIPORT=y
-+# CONFIG_HUB6 is not set
-+# CONFIG_SERIAL_NONSTANDARD is not set
-+CONFIG_UNIX98_PTYS=y
-+CONFIG_UNIX98_PTY_COUNT=2048
-+CONFIG_PRINTER=m
-+CONFIG_LP_CONSOLE=y
-+CONFIG_PPDEV=y
-+
-+#
-+# I2C support
-+#
-+# CONFIG_I2C is not set
-+
-+#
-+# Mice
-+#
-+CONFIG_BUSMOUSE=m
-+CONFIG_ATIXL_BUSMOUSE=m
-+CONFIG_LOGIBUSMOUSE=m
-+CONFIG_MS_BUSMOUSE=m
-+CONFIG_MOUSE=y
-+CONFIG_PSMOUSE=y
-+CONFIG_82C710_MOUSE=m
-+CONFIG_PC110_PAD=m
-+
-+#
-+# Joysticks
-+#
-+# CONFIG_INPUT_GAMEPORT is not set
-+# CONFIG_INPUT_NS558 is not set
-+# CONFIG_INPUT_LIGHTNING is not set
-+# CONFIG_INPUT_PCIGAME is not set
-+# CONFIG_INPUT_CS461X is not set
-+# CONFIG_INPUT_EMU10K1 is not set
-+# CONFIG_INPUT_SERIO is not set
-+# CONFIG_INPUT_SERPORT is not set
-+# CONFIG_INPUT_ANALOG is not set
-+# CONFIG_INPUT_A3D is not set
-+# CONFIG_INPUT_ADI is not set
-+# CONFIG_INPUT_COBRA is not set
-+# CONFIG_INPUT_GF2K is not set
-+# CONFIG_INPUT_GRIP is not set
-+# CONFIG_INPUT_INTERACT is not set
-+# CONFIG_INPUT_TMDC is not set
-+# CONFIG_INPUT_SIDEWINDER is not set
-+# CONFIG_INPUT_IFORCE_USB is not set
-+# CONFIG_INPUT_IFORCE_232 is not set
-+# CONFIG_INPUT_WARRIOR is not set
-+# CONFIG_INPUT_MAGELLAN is not set
-+# CONFIG_INPUT_SPACEORB is not set
-+# CONFIG_INPUT_SPACEBALL is not set
-+# CONFIG_INPUT_STINGER is not set
-+# CONFIG_INPUT_DB9 is not set
-+# CONFIG_INPUT_GAMECON is not set
-+# CONFIG_INPUT_TURBOGRAFX is not set
-+# CONFIG_QIC02_TAPE is not set
-+
-+#
-+# Watchdog Cards
-+#
-+# CONFIG_WATCHDOG is not set
-+CONFIG_INTEL_RNG=m
-+# CONFIG_NVRAM is not set
-+CONFIG_RTC=y
-+CONFIG_DTLK=y
-+# CONFIG_R3964 is not set
-+# CONFIG_APPLICOM is not set
-+# CONFIG_SONYPI is not set
-+
-+#
-+# Ftape, the floppy tape device driver
-+#
-+# CONFIG_FTAPE is not set
-+CONFIG_AGP=m
-+CONFIG_AGP_INTEL=y
-+CONFIG_AGP_I810=y
-+CONFIG_AGP_VIA=y
-+CONFIG_AGP_AMD=y
-+CONFIG_AGP_SIS=y
-+CONFIG_AGP_ALI=y
-+CONFIG_AGP_SWORKS=y
-+CONFIG_DRM=y
-+# CONFIG_DRM_OLD is not set
-+CONFIG_DRM_NEW=y
-+CONFIG_DRM_TDFX=y
-+CONFIG_DRM_R128=m
-+CONFIG_DRM_RADEON=m
-+CONFIG_DRM_I810=m
-+CONFIG_DRM_MGA=m
-+# CONFIG_DRM_SIS is not set
-+# CONFIG_MWAVE is not set
-+
-+#
-+# Multimedia devices
-+#
-+# CONFIG_VIDEO_DEV is not set
-+
-+#
-+# File systems
-+#
-+CONFIG_QUOTA=y
-+CONFIG_AUTOFS_FS=y
-+CONFIG_AUTOFS4_FS=y
-+CONFIG_REISERFS_FS=m
-+# CONFIG_REISERFS_CHECK is not set
-+CONFIG_REISERFS_PROC_INFO=y
-+# CONFIG_ADFS_FS is not set
-+# CONFIG_ADFS_FS_RW is not set
-+# CONFIG_AFFS_FS is not set
-+# CONFIG_HFS_FS is not set
-+# CONFIG_BFS_FS is not set
-+CONFIG_EXT3_FS=y
-+CONFIG_JBD=y
-+# CONFIG_JBD_DEBUG is not set
-+CONFIG_FAT_FS=m
-+CONFIG_MSDOS_FS=m
-+# CONFIG_UMSDOS_FS is not set
-+CONFIG_VFAT_FS=m
-+# CONFIG_EFS_FS is not set
-+# CONFIG_JFFS_FS is not set
-+# CONFIG_JFFS2_FS is not set
-+# CONFIG_CRAMFS is not set
-+CONFIG_TMPFS=y
-+CONFIG_RAMFS=m
-+CONFIG_ISO9660_FS=y
-+CONFIG_JOLIET=y
-+CONFIG_ZISOFS=y
-+# CONFIG_MINIX_FS is not set
-+# CONFIG_VXFS_FS is not set
-+# CONFIG_NTFS_FS is not set
-+# CONFIG_NTFS_RW is not set
-+# CONFIG_HPFS_FS is not set
-+CONFIG_PROC_FS=y
-+# CONFIG_DEVFS_FS is not set
-+# CONFIG_DEVFS_MOUNT is not set
-+# CONFIG_DEVFS_DEBUG is not set
-+CONFIG_DEVPTS_FS=y
-+# CONFIG_QNX4FS_FS is not set
-+# CONFIG_QNX4FS_RW is not set
-+# CONFIG_ROMFS_FS is not set
-+CONFIG_EXT2_FS=y
-+# CONFIG_SYSV_FS is not set
-+# CONFIG_UDF_FS is not set
-+# CONFIG_UDF_RW is not set
-+# CONFIG_UFS_FS is not set
-+# CONFIG_UFS_FS_WRITE is not set
-+
-+#
-+# Network File Systems
-+#
-+# CONFIG_CODA_FS is not set
-+# CONFIG_INTERMEZZO_FS is not set
-+CONFIG_NFS_FS=y
-+CONFIG_NFS_V3=y
-+# CONFIG_ROOT_NFS is not set
-+CONFIG_NFSD=y
-+CONFIG_NFSD_V3=y
-+CONFIG_SUNRPC=y
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=y
-+CONFIG_SMB_FS=m
-+# CONFIG_SMB_NLS_DEFAULT is not set
-+# CONFIG_NCP_FS is not set
-+# CONFIG_NCPFS_PACKET_SIGNING is not set
-+# CONFIG_NCPFS_IOCTL_LOCKING is not set
-+# CONFIG_NCPFS_STRONG is not set
-+# CONFIG_NCPFS_NFS_NS is not set
-+# CONFIG_NCPFS_OS2_NS is not set
-+# CONFIG_NCPFS_SMALLDOS is not set
-+# CONFIG_NCPFS_NLS is not set
-+# CONFIG_NCPFS_EXTRAS is not set
-+CONFIG_ZISOFS_FS=y
-+CONFIG_ZLIB_FS_INFLATE=y
-+
-+#
-+# Partition Types
-+#
-+CONFIG_PARTITION_ADVANCED=y
-+# CONFIG_ACORN_PARTITION is not set
-+# CONFIG_OSF_PARTITION is not set
-+# CONFIG_AMIGA_PARTITION is not set
-+# CONFIG_ATARI_PARTITION is not set
-+# CONFIG_MAC_PARTITION is not set
-+CONFIG_MSDOS_PARTITION=y
-+CONFIG_BSD_DISKLABEL=y
-+# CONFIG_MINIX_SUBPARTITION is not set
-+# CONFIG_SOLARIS_X86_PARTITION is not set
-+# CONFIG_UNIXWARE_DISKLABEL is not set
-+# CONFIG_LDM_PARTITION is not set
-+# CONFIG_SGI_PARTITION is not set
-+# CONFIG_ULTRIX_PARTITION is not set
-+# CONFIG_SUN_PARTITION is not set
-+CONFIG_SMB_NLS=y
-+CONFIG_NLS=y
-+
-+#
-+# Native Language Support
-+#
-+CONFIG_NLS_DEFAULT="iso8859-1"
-+CONFIG_NLS_CODEPAGE_437=m
-+CONFIG_NLS_CODEPAGE_737=m
-+CONFIG_NLS_CODEPAGE_775=m
-+CONFIG_NLS_CODEPAGE_850=m
-+CONFIG_NLS_CODEPAGE_852=m
-+CONFIG_NLS_CODEPAGE_855=m
-+CONFIG_NLS_CODEPAGE_857=m
-+CONFIG_NLS_CODEPAGE_860=m
-+CONFIG_NLS_CODEPAGE_861=m
-+CONFIG_NLS_CODEPAGE_862=m
-+CONFIG_NLS_CODEPAGE_863=m
-+CONFIG_NLS_CODEPAGE_864=m
-+CONFIG_NLS_CODEPAGE_865=m
-+CONFIG_NLS_CODEPAGE_866=m
-+CONFIG_NLS_CODEPAGE_869=m
-+CONFIG_NLS_CODEPAGE_936=m
-+CONFIG_NLS_CODEPAGE_950=m
-+CONFIG_NLS_CODEPAGE_932=m
-+CONFIG_NLS_CODEPAGE_949=m
-+CONFIG_NLS_CODEPAGE_874=m
-+CONFIG_NLS_ISO8859_8=m
-+CONFIG_NLS_CODEPAGE_1250=m
-+CONFIG_NLS_CODEPAGE_1251=m
-+CONFIG_NLS_ISO8859_1=m
-+CONFIG_NLS_ISO8859_2=m
-+CONFIG_NLS_ISO8859_3=m
-+CONFIG_NLS_ISO8859_4=m
-+CONFIG_NLS_ISO8859_5=m
-+CONFIG_NLS_ISO8859_6=m
-+CONFIG_NLS_ISO8859_7=m
-+CONFIG_NLS_ISO8859_9=m
-+CONFIG_NLS_ISO8859_13=m
-+CONFIG_NLS_ISO8859_14=m
-+CONFIG_NLS_ISO8859_15=m
-+CONFIG_NLS_KOI8_R=m
-+CONFIG_NLS_KOI8_U=m
-+CONFIG_NLS_UTF8=m
-+
-+#
-+# Console drivers
-+#
-+CONFIG_VGA_CONSOLE=y
-+CONFIG_VIDEO_SELECT=y
-+CONFIG_MDA_CONSOLE=m
-+
-+#
-+# Frame-buffer support
-+#
-+CONFIG_FB=y
-+CONFIG_DUMMY_CONSOLE=y
-+# CONFIG_FB_RIVA is not set
-+# CONFIG_FB_CLGEN is not set
-+# CONFIG_FB_PM2 is not set
-+# CONFIG_FB_CYBER2000 is not set
-+CONFIG_FB_VESA=y
-+CONFIG_FB_VGA16=m
-+# CONFIG_FB_HGA is not set
-+CONFIG_VIDEO_SELECT=y
-+CONFIG_FB_MATROX=m
-+CONFIG_FB_MATROX_MILLENIUM=y
-+CONFIG_FB_MATROX_MYSTIQUE=y
-+CONFIG_FB_MATROX_G100=y
-+# CONFIG_FB_MATROX_G450 is not set
-+CONFIG_FB_MATROX_MULTIHEAD=y
-+CONFIG_FB_ATY=m
-+CONFIG_FB_ATY_GX=y
-+CONFIG_FB_ATY_CT=y
-+CONFIG_FB_RADEON=m
-+CONFIG_FB_ATY128=m
-+# CONFIG_FB_SIS is not set
-+# CONFIG_FB_3DFX is not set
-+# CONFIG_FB_VOODOO1 is not set
-+# CONFIG_FB_TRIDENT is not set
-+# CONFIG_FB_VIRTUAL is not set
-+# CONFIG_FBCON_ADVANCED is not set
-+CONFIG_FBCON_CFB8=y
-+CONFIG_FBCON_CFB16=y
-+CONFIG_FBCON_CFB24=y
-+CONFIG_FBCON_CFB32=y
-+CONFIG_FBCON_VGA_PLANES=m
-+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-+# CONFIG_FBCON_FONTS is not set
-+CONFIG_FONT_8x8=y
-+CONFIG_FONT_8x16=y
-+
-+#
-+# Sound
-+#
-+CONFIG_SOUND=m
-+# CONFIG_SOUND_BT878 is not set
-+# CONFIG_SOUND_CMPCI is not set
-+CONFIG_SOUND_EMU10K1=m
-+# CONFIG_MIDI_EMU10K1 is not set
-+# CONFIG_SOUND_FUSION is not set
-+# CONFIG_SOUND_CS4281 is not set
-+# CONFIG_SOUND_ES1370 is not set
-+CONFIG_SOUND_ES1371=m
-+# CONFIG_SOUND_ESSSOLO1 is not set
-+# CONFIG_SOUND_MAESTRO is not set
-+# CONFIG_SOUND_MAESTRO3 is not set
-+CONFIG_SOUND_ICH=m
-+# CONFIG_SOUND_RME96XX is not set
-+# CONFIG_SOUND_SONICVIBES is not set
-+# CONFIG_SOUND_TRIDENT is not set
-+# CONFIG_SOUND_MSNDCLAS is not set
-+# CONFIG_SOUND_MSNDPIN is not set
-+# CONFIG_SOUND_VIA82CXXX is not set
-+# CONFIG_MIDI_VIA82CXXX is not set
-+CONFIG_SOUND_OSS=m
-+# CONFIG_SOUND_TRACEINIT is not set
-+CONFIG_SOUND_DMAP=y
-+# CONFIG_SOUND_AD1816 is not set
-+# CONFIG_SOUND_SGALAXY is not set
-+# CONFIG_SOUND_ADLIB is not set
-+# CONFIG_SOUND_ACI_MIXER is not set
-+CONFIG_SOUND_CS4232=m
-+# CONFIG_SOUND_SSCAPE is not set
-+# CONFIG_SOUND_GUS is not set
-+# CONFIG_SOUND_VMIDI is not set
-+# CONFIG_SOUND_TRIX is not set
-+# CONFIG_SOUND_MSS is not set
-+# CONFIG_SOUND_MPU401 is not set
-+# CONFIG_SOUND_NM256 is not set
-+# CONFIG_SOUND_MAD16 is not set
-+# CONFIG_SOUND_PAS is not set
-+# CONFIG_PAS_JOYSTICK is not set
-+# CONFIG_SOUND_PSS is not set
-+CONFIG_SOUND_SB=m
-+# CONFIG_SOUND_AWE32_SYNTH is not set
-+# CONFIG_SOUND_WAVEFRONT is not set
-+# CONFIG_SOUND_MAUI is not set
-+# CONFIG_SOUND_YM3812 is not set
-+# CONFIG_SOUND_OPL3SA1 is not set
-+# CONFIG_SOUND_OPL3SA2 is not set
-+# CONFIG_SOUND_YMFPCI is not set
-+# CONFIG_SOUND_YMFPCI_LEGACY is not set
-+# CONFIG_SOUND_UART6850 is not set
-+# CONFIG_SOUND_AEDSP16 is not set
-+# CONFIG_SOUND_TVMIXER is not set
-+
-+#
-+# USB support
-+#
-+CONFIG_USB=y
-+# CONFIG_USB_DEBUG is not set
-+CONFIG_USB_DEVICEFS=y
-+# CONFIG_USB_BANDWIDTH is not set
-+CONFIG_USB_LONG_TIMEOUT=y
-+CONFIG_USB_UHCI=m
-+CONFIG_USB_UHCI_ALT=m
-+CONFIG_USB_OHCI=m
-+# CONFIG_USB_AUDIO is not set
-+CONFIG_USB_BLUETOOTH=y
-+# CONFIG_USB_STORAGE is not set
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+# CONFIG_USB_STORAGE_DATAFAB is not set
-+# CONFIG_USB_STORAGE_FREECOM is not set
-+# CONFIG_USB_STORAGE_ISD200 is not set
-+# CONFIG_USB_STORAGE_DPCM is not set
-+# CONFIG_USB_STORAGE_HP8200e is not set
-+# CONFIG_USB_STORAGE_SDDR09 is not set
-+# CONFIG_USB_STORAGE_JUMPSHOT is not set
-+# CONFIG_USB_ACM is not set
-+# CONFIG_USB_PRINTER is not set
-+CONFIG_USB_HID=m
-+CONFIG_USB_HIDDEV=y
-+# CONFIG_USB_KBD is not set
-+# CONFIG_USB_MOUSE is not set
-+CONFIG_USB_WACOM=m
-+# CONFIG_USB_DC2XX is not set
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_SCANNER is not set
-+# CONFIG_USB_MICROTEK is not set
-+# CONFIG_USB_HPUSBSCSI is not set
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_CDCETHER is not set
-+# CONFIG_USB_USBNET is not set
-+# CONFIG_USB_USS720 is not set
-+
-+#
-+# USB Serial Converter support
-+#
-+# CONFIG_USB_SERIAL is not set
-+# CONFIG_USB_SERIAL_GENERIC is not set
-+# CONFIG_USB_SERIAL_BELKIN is not set
-+# CONFIG_USB_SERIAL_WHITEHEAT is not set
-+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-+# CONFIG_USB_SERIAL_EMPEG is not set
-+# CONFIG_USB_SERIAL_FTDI_SIO is not set
-+# CONFIG_USB_SERIAL_VISOR is not set
-+# CONFIG_USB_SERIAL_IPAQ is not set
-+# CONFIG_USB_SERIAL_IR is not set
-+# CONFIG_USB_SERIAL_EDGEPORT is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-+# CONFIG_USB_SERIAL_KEYSPAN is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-+# CONFIG_USB_SERIAL_MCT_U232 is not set
-+# CONFIG_USB_SERIAL_KLSI is not set
-+# CONFIG_USB_SERIAL_PL2303 is not set
-+# CONFIG_USB_SERIAL_CYBERJACK is not set
-+# CONFIG_USB_SERIAL_XIRCOM is not set
-+# CONFIG_USB_SERIAL_OMNINET is not set
-+# CONFIG_USB_RIO500 is not set
-+
-+#
-+# Bluetooth support
-+#
-+# CONFIG_BLUEZ is not set
-+
-+#
-+# Kernel hacking
-+#
-+CONFIG_DEBUG_KERNEL=y
-+# CONFIG_DEBUG_HIGHMEM is not set
-+# CONFIG_DEBUG_SLAB is not set
-+# CONFIG_DEBUG_IOVIRT is not set
-+CONFIG_MAGIC_SYSRQ=y
-+# CONFIG_DEBUG_SPINLOCK is not set
-+CONFIG_DEBUG_BUGVERBOSE=y
-+# CONFIG_KDB is not set
-+# CONFIG_KDB_MODULES is not set
-+CONFIG_KALLSYMS=y
-+CONFIG_FRAME_POINTER=y
-+CONFIG_SWIFI=y
-+CONFIG_NOOKS=y
diff --git a/minix/commands/swifi/swifi-ksyms.c b/minix/commands/swifi/swifi-ksyms.c
deleted file mode 100644 (file)
index f580924..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * swifi-ksyms.c -- exported symbols for wrappers od system functions
- *
- * Copyright (C) 2003 Mike Swift
- *
- * The source code in this file can be freely used, adapted,
- * and redistributed in source or binary form, so long as an
- * acknowledgment appears in derived source files.  
- * No warranty is attached;
- * we cannot take responsibility for errors or fitness for use.
- *
- */
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include "swifi.h"
-
-
-EXPORT_SYMBOL(sys_inject_fault);
-EXPORT_SYMBOL(swifi_memmove_fn);
-EXPORT_SYMBOL(swifi_memcpy_fn);
-EXPORT_SYMBOL(memmove_fn);
-EXPORT_SYMBOL(memcpy_fn);
-EXPORT_SYMBOL(swifi_kfree);
-EXPORT_SYMBOL(swifi_vfree);
-EXPORT_SYMBOL(swifi_kmalloc);
-EXPORT_SYMBOL(swifi___vmalloc);
-EXPORT_SYMBOL(swifi___generic_copy_from_user);
-EXPORT_SYMBOL(swifi___generic_copy_to_user);
-
-
diff --git a/minix/commands/swifi/swifi-user.h b/minix/commands/swifi/swifi-user.h
deleted file mode 100644 (file)
index 995112d..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef _SWIFI_USER_H
-#define _SWIFI_USER_H
-
-
-#define TEXT_FAULT     0
-#define STACK_FAULT    1
-#define HEAP_FAULT     2
-#define INIT_FAULT      3
-#define NOP_FAULT       4
-#define DST_FAULT       5
-#define SRC_FAULT       6
-#define BRANCH_FAULT    7
-#define PTR_FAULT       8
-#define FREE_FAULT      9      
-#define BCOPY_FAULT     10
-#define SYNC_FAULT      11
-#define LOOP_FAULT      12
-#define MEM_LEAK_FAULT  13
-#define INTERFACE_FAULT 14
-#define DIRECT_FAULT   15
-#define DIRECT_FAULT1  16
-#define STATS           17
-#define WP_FAULT       19
-#define PANIC_FAULT    20
-#define WHILE1_FAULT   21
-#define DEBUGGER_FAULT 22
-#define CPU_RESET_FAULT        23
-#define PAGE_REG_DUMP  24
-#define COW_FAULT      25
-#define IRQ_FAULT       26
-#define ALLOC_FAULT     27
-#define DISK_TEST              100
-
-
-#define SWIFI_MAX_FAULTS 1000
-
-typedef struct swifi_result {
-  unsigned long address;
-  unsigned long old;
-  unsigned long new;
-} swifi_result_t, *pswifi_result_t;
-
-long 
-sys_inject_fault(char * module,
-                unsigned long argFaultType,
-                unsigned long argRandomSeed,
-                unsigned long argNumFaults,
-                pswifi_result_t result_record,
-                unsigned long argInjectFault);
-
-#endif /* _SWIFI_USER_H */
-
index 82103bf4ff76e048a6f929b58615e29a0e182443..4958fd70f25dce5caca6c2cc5d51e879d6a377df 100644 (file)
@@ -1,64 +1,25 @@
-#ifndef _LINUX_SWIFI_H
-#define _LINUX_SWIFI_H
+#ifndef _SWIFI_H
+#define _SWIFI_H
 
 #include <stdlib.h>
 
-#include "swifi-user.h"
-
-long
-swifi_inject_fault(char * nook_name,
-                  unsigned long faultType,
-                  unsigned long randSeed,
-                  unsigned long numFaults,
-                  void * results,
-                  unsigned long do_inject);
-
-
-long 
-sys_inject_fault(char * module,
-                unsigned long argFaultType,
-                unsigned long argRandomSeed,
-                unsigned long argNumFaults,
-                pswifi_result_t result_record,
-                unsigned long argInjectFault);
-
-void
-swifi_kfree(const void *addr);
-
+#define TEXT_FAULT     0
+#define INIT_FAULT      3
+#define NOP_FAULT       4
+#define DST_FAULT       5
+#define SRC_FAULT       6
+#define BRANCH_FAULT    7
+#define PTR_FAULT       8
+#define LOOP_FAULT      12
+#define INTERFACE_FAULT 14
+#define IRQ_FAULT       26
+#define STOP_FAULT      50
+#define RANDOM_FAULT    99
 
 void
-swifi_vfree(void *addr);
-
-
-void *
-swifi_memmove_fn(void *to, void *from, size_t len);
-
-
-void *
-swifi_memcpy_fn(void *to, void *from, size_t len);
-
-
-void *
-memmove_fn(void *to, void *from, size_t len);
-
-void *
-memcpy_fn(void *to, void *from, size_t len);
-
-unsigned long
-swifi___generic_copy_from_user (void *kaddr, void *udaddr, unsigned long len);
-
-unsigned long  
-swifi___generic_copy_to_user(void *udaddr, void *kaddr, unsigned long len);
-
-
-void *
-swifi_kmalloc(size_t size, int flags);
-
-
-#if 0
-void *
-swifi___vmalloc(unsigned long size, int gfp_mask, pgprot_t prot);
-#endif
-
-#endif /* _LINUX_SWIFI_H */
+swifi_inject_fault(char * module,
+                unsigned long faultType,
+                unsigned long randomSeed,
+                unsigned long numFaults);
 
+#endif /* _SWIFI_H */
index e0a7234dd146b457ec3df3c224cf6bf35a320a18..6c41262ab6370a35a757fadc738c2f03525ec716 100644 (file)
@@ -5,7 +5,7 @@
  *
  * The source code in this file can be freely used, adapted,
  * and redistributed in source or binary form, so long as an
- * acknowledgment appears in derived source files.  
+ * acknowledgment appears in derived source files.
  * No warranty is attached;
  * we cannot take responsibility for errors or fitness for use.
  *
 #include <sys/types.h>
 #include <stdlib.h>
 #include <stdio.h>
-#if 0
-#include <asm/unistd.h>
-#endif
 #include <string.h>
 #include <errno.h>
 
-#define swifi_inject_fault sys_inject_fault
-
-#include "swifi-user.h"
+#include "swifi.h"
 #include "extra.h"
 
+void
+usage(char *name)
+{
+  printf("Usage: %s -f module_name pid fault-type fault-count seed\n", name);
 
-#if 0
-_syscall6(long, swifi_inject_fault, 
-         char *, module_name,
-         unsigned long, faultType,
-         unsigned long, randSeed,
-         unsigned long, numFaults,
-         void *, result,
-         unsigned long, do_inject);
-#endif
+  exit(EXIT_FAILURE);
+}
 
 int
 main(int argc, char * argv[])
 {
   char * module_name = NULL;
   int i;
-  long result = 0;
   unsigned int cmd = 0;
   unsigned long arg = 0;
   unsigned long seed = 157;
-  swifi_result_t * res = NULL;
 
   if (argc < 2) {
-    goto Usage;
+    usage(argv[0]);
   }
 
   for (i = 1; i < argc; i++ ) {
     if (strcmp(argv[i], "-f") == 0) {
       if (argc <= i+5) {
-       goto Usage;
+        usage(argv[0]);
       }
       module_name = victim_exe = argv[++i];
       sscanf(argv[++i],"%u", &victim_pid);
@@ -63,61 +53,15 @@ main(int argc, char * argv[])
       sscanf(argv[++i],"%lu", &seed);
     } else {
       printf("Unknown command %s\n", argv[i]);
-      goto Usage;
+      usage(argv[0]);
     }
   }
-  size_t ressize = arg * sizeof(swifi_result_t);
-  res = malloc(ressize);
-  if (res == NULL) {
-    printf("Out of memory\n");
-    goto Cleanup;
-  }
-
-  memset(res, 0, ressize);
-
-  /*
-  // Find out where the faults will be injected
-  */
-  
-  result = swifi_inject_fault(module_name, 
-                             cmd,         /* fault type */
-                             seed,           /* random seed */
-                             arg,         /* numFaults */
-                             res,
-                             0);  /* don't inject now */
-  
-  for (i = 0; (i < arg) && (res[i].address != 0) ; i++) {
-    printf("Changed 0x%lx from 0x%lx to 0x%lx\n",
-          res[i].address,
-          res[i].old,
-          res[i].new);
-  }
-  
-  /*
-  // do the injection
-  */
-  
 
-  result = swifi_inject_fault(module_name, 
-                             cmd,         /* fault type */
-                             seed,           /* random seed */
-                             arg,         /* numFaults */
-                             res,
-                             1);  /* do inject now */
+  /* Do the injection. */
+  swifi_inject_fault(module_name,
+                    cmd,          /* fault type */
+                    seed,         /* random seed */
+                    arg);         /* numFaults */
 
-  printf("swifi_inject_fault returned %ld (%d)\n", result,errno);
-
-
-
- Cleanup:
-  if (res != NULL) {
-    free(res);
-  }
-  return(0);
-
- Usage:
-  printf("Usage: %s -f module_name pid fault-type fault-count seed\n", argv[0]);
-  goto Cleanup;
+  return EXIT_SUCCESS;
 }
-
-
similarity index 64%
rename from minix/commands/swifi/do_swifi
rename to minix/commands/swifi/tests/do_swifi
index 3616c90874a8b0baf10636390fd560578be2cfb2..680559066264b4c7cbd0c4e7cc7925b92c682995 100644 (file)
@@ -1,4 +1,4 @@
 #!/bin/sh
 pid=`ps ax | grep fxp | grep usr.sbin | sed 's,^[      ]*,,;s,[        ].*,,`
 echo "pid = $pid"
-./swifi -f /usr/build/drivers/fxp/fxp $pid 26 100 4
+swifi -f /usr/build/drivers/fxp/fxp $pid 26 100 4
similarity index 65%
rename from minix/commands/swifi/do_swifi_bug1
rename to minix/commands/swifi/tests/do_swifi_bug1
index bd5c825f44653ee931580ee963d22665a8bbb8de..750a884dade2fded6d1648f9548fdb84402e8f9e 100644 (file)
@@ -1,4 +1,4 @@
 #!/bin/sh
 pid=`ps ax | grep fxp | grep usr.sbin | sed 's,^[      ]*,,;s,[        ].*,,`
 echo "pid = $pid"
-./swifi -f /usr/build/drivers/fxp/fxp $pid 8 100 4
+swifi -f /usr/build/drivers/fxp/fxp $pid 8 100 4
similarity index 98%
rename from minix/commands/swifi/rnd.c
rename to minix/commands/swifi/tests/rnd.c
index 4412e2ff24f43e0fa9d4078fa409181320aceca9..41a7fac8c931ca8170dc793c3e3d3a5f4a7f7680 100644 (file)
@@ -4,8 +4,6 @@ rnd.c
 Generate random numbers
 */
 
-#define _POSIX_SOURCE
-
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
similarity index 96%
rename from minix/commands/swifi/run_swifi
rename to minix/commands/swifi/tests/run_swifi
index 8d7fbcb7040fb5817a4c9b77de5102f2b4d08cf9..08e1bc95feeb84a03ca39fd9fd10dc1a4337ed7c 100644 (file)
@@ -27,7 +27,7 @@ do_one()
                sleep 10
        done
        echo pid = $pid
-       ./swifi -f $EXE $pid $1 $2 $3 >/tmp/out
+       swifi -f $EXE $pid $1 $2 $3 >/tmp/out
        sleep 1
        kill -0 $pid &&
                echo "driver survived, params: test $1, count $2, seed $3" ||
similarity index 91%
rename from minix/commands/swifi/run_swifi-x
rename to minix/commands/swifi/tests/run_swifi-x
index 14b0934442fe6b5184522c1d0d2b130778f6e639..211d186f9e6fe7632498437f2dbbba0841371dcb 100644 (file)
@@ -10,7 +10,7 @@ do_one()
                sleep 1
        done
        echo pid = $pid
-       ./swifi -f /usr/build/drivers/dp8390/dp8390 $pid $1 $2 $3 >/tmp/out
+       swifi -f /usr/build/drivers/dp8390/dp8390 $pid $1 $2 $3 >/tmp/out
        sleep 5
        kill -0 $pid &&
                echo "driver failed to die, params: test $1, count $2, seed $3"
similarity index 97%
rename from minix/commands/swifi/run_t1
rename to minix/commands/swifi/tests/run_t1
index ebffbdc054e1f4b5959996eda46d5185644d8490..c4b22424f75c9420ea0974e243593cb821706265 100755 (executable)
@@ -26,7 +26,7 @@ do_one()
                sleep 10
        done
        echo pid = $pid
-       ./swifi -f $EXE $pid $1 $2 $3 >/tmp/out
+       swifi -f $EXE $pid $1 $2 $3 >/tmp/out
        sleep 1
        kill -0 $pid &&
                echo "driver failed to die, params: test $1, count $2, seed $3"
@@ -94,7 +94,7 @@ text)         type_arg=0
 ;;
 nop)           type_arg=4
 ;;
-random)                
+random)
 ;;
 *)
        usage
similarity index 86%
rename from minix/commands/swifi/run_t1a
rename to minix/commands/swifi/tests/run_t1a
index efa06655eb8fd9f4803b2e0deb87c90da624a136..06984c0f42b146574b0926a00af11abdbb4e663e 100755 (executable)
@@ -15,7 +15,7 @@ mv $LOGFILE $LOGFILE.prev
 kill -1 `ps ax | grep syslogd | grep -v grep |
        sed 's,^[        ]*,,;s,[        ].*,,'`
 
-./run_t1 $count $type `expr $run \* 1000` 2>&1 | 
+./run_t1 $count $type `expr $run \* 1000` 2>&1 |
        tee results/1.$type.$run.out
 
 cp $LOGFILE results/1.$type.$run.log
similarity index 97%
rename from minix/commands/swifi/run_t2
rename to minix/commands/swifi/tests/run_t2
index 9a2408642a31c74b0a8bfbe1fe76ca271eeb3a08..757b2191ce627042249a08f9ce3b71fb4928d9e4 100755 (executable)
@@ -27,10 +27,10 @@ do_one()
                sleep 10
        done
        echo pid = $pid
-       ./swifi -f $EXE $pid $1 $2 $3 >/tmp/out
+       swifi -f $EXE $pid $1 $2 $3 >/tmp/out
        sleep 1
        fault_blocks=`expr $fault_blocks + 1`
-       if kill -0 $pid 
+       if kill -0 $pid
        then
                if [ $dont_connect -eq 0 ]
                then
@@ -114,7 +114,7 @@ text)               type_arg=0
 ;;
 nop)           type_arg=4
 ;;
-random)                
+random)
 ;;
 *)
        usage
similarity index 86%
rename from minix/commands/swifi/run_t2a
rename to minix/commands/swifi/tests/run_t2a
index 8af4b0691bac39d981308c66da8a822023eba3dd..81f2cfb341eba03564fdc1b9cdf77d851781c208 100755 (executable)
@@ -15,7 +15,7 @@ mv $LOGFILE $LOGFILE.prev
 kill -1 `ps ax | grep syslogd | grep -v grep |
        sed 's,^[        ]*,,;s,[        ].*,,'`
 
-./run_t2 $count $type `expr $run \* 1000` 2>&1 | 
+./run_t2 $count $type `expr $run \* 1000` 2>&1 |
        tee results/2.$type.$run.out
 
 cp $LOGFILE results/2.$type.$run.log
similarity index 96%
rename from minix/commands/swifi/socket.c
rename to minix/commands/swifi/tests/socket.c
index bebcc0e8262d63cc0a7a5ae8af943ecc8528b0a2..87e5c1a8b04f4a1cd0d065037a0ad762bf3d7474 100644 (file)
@@ -6,8 +6,6 @@ Created:        Feb 2001 by Philip Homburg <philip@f-mnx.phicoh.com>
 Open a TCP connection
 */
 
-#define _POSIX_C_SOURCE 2
-
 #include <errno.h>
 #include <fcntl.h>
 #include <stdarg.h>
@@ -28,6 +26,7 @@ Open a TCP connection
 #include <net/gen/socket.h>
 #include <net/gen/tcp.h>
 #include <net/gen/tcp_io.h>
+#include <arpa/inet.h>
 
 #define BUF_SIZE       10240
 
@@ -118,7 +117,7 @@ static void do_conn(char *hostname, char *portname)
        nwio_tcpcl_t tcpcl;
        nwio_tcpopt_t tcpopt;
 
-       if (!inet_aton(hostname, &addr))
+       if (!inet_aton(hostname, (struct in_addr *)&addr))
        {
                he= gethostbyname(hostname);
                if (he == NULL)
@@ -159,7 +158,8 @@ static void do_conn(char *hostname, char *portname)
        tcpcl.nwtcl_flags= 0;
        if (ioctl(tcpfd, NWIOTCPCONN, &tcpcl) == -1)
        {
-               fatal("unable to connect to %s:%u: %s", inet_ntoa(addr),
+               fatal("unable to connect to %s:%u: %s",
+                       inet_ntoa(*(struct in_addr *)&addr),
                        ntohs(tcpconf.nwtc_remport), strerror(errno));
        }
 
@@ -207,7 +207,7 @@ static void fullduplex(void)
                                fatal("error reading from TCP conn.: %s",
                                        strerror(errno));
                        }
-                       s= r; 
+                       s= r;
                        for (o= 0; o<s; o += r)
                        {
                                r= write(1, buf+o, s-o);
@@ -246,7 +246,7 @@ static void fullduplex(void)
                        fatal("error reading from stdin: %s",
                                strerror(s_errno));
                }
-               s= r; 
+               s= r;
                for (o= 0; o<s; o += r)
                {
                        r= write(tcpfd, buf+o, s-o);