Unmodified source of the software fault injection utility
This commit is contained in:
parent
58f428a704
commit
659ab96c1f
15 changed files with 4846 additions and 0 deletions
|
@ -195,6 +195,7 @@ int main(int ac, char** av)
|
|||
continue;
|
||||
}
|
||||
#endif
|
||||
fprintf(stderr, "stat: buffer at %p\n", &sbuf);
|
||||
if (!sym) err= stat(av[i], &sbuf);
|
||||
if (sym || (err != 0 && errno == ENOENT)) {
|
||||
err= lstat(av[i], &sbuf);
|
||||
|
@ -244,6 +245,7 @@ int main(int ac, char** av)
|
|||
printf("%s: %s\n", av[i], sbuf);
|
||||
continue;
|
||||
}
|
||||
fprintf(stderr, "stat: buffer at %p\n", &sbuf);
|
||||
if (!sym) err= stat(av[i], &sbuf);
|
||||
if (sym || (err != 0 && errno == ENOENT)) err= lstat(av[i], &sbuf);
|
||||
if (err != -1) {
|
||||
|
|
25
commands/swifi/Makefile
Normal file
25
commands/swifi/Makefile
Normal file
|
@ -0,0 +1,25 @@
|
|||
#
|
||||
# Makefile for the nooks.
|
||||
#
|
||||
# Note! Dependencies are done automagically by 'make dep', which also
|
||||
# removes any old dependencies. DON'T put your own dependencies here
|
||||
# unless it's something special (ie not a .c file).
|
||||
#
|
||||
# Note 2! The CFLAGS definitions are now in the main makefile...
|
||||
|
||||
O_TARGET := swifi.o
|
||||
|
||||
# All of the (potential) objects that export symbols.
|
||||
# This list comes from 'grep -l EXPORT_SYMBOL *.[hc]'.
|
||||
|
||||
export-objs = swifi-ksyms.o
|
||||
|
||||
obj-$(CONFIG_SWIFI) += db_sym.o db_disasm.o db_access.o \
|
||||
random.o fault_model.o swifi-ksyms.o
|
||||
|
||||
# db_interface.o
|
||||
|
||||
include $(TOPDIR)/Rules.make
|
||||
|
||||
fastdep:
|
||||
|
90
commands/swifi/db_access.c
Normal file
90
commands/swifi/db_access.c
Normal file
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*
|
||||
* $Id: db_access.c,v 1.1 2003/01/15 21:50:58 mikesw Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: David B. Golub, Carnegie Mellon University
|
||||
* Date: 7/90
|
||||
*/
|
||||
#include "ddb.h"
|
||||
#include "db_access.h"
|
||||
|
||||
/*
|
||||
* Access unaligned data items on aligned (longword)
|
||||
* boundaries.
|
||||
*/
|
||||
|
||||
static unsigned db_extend[] = { /* table for sign-extending */
|
||||
0,
|
||||
0xFFFFFF80U,
|
||||
0xFFFF8000U,
|
||||
0xFF800000U
|
||||
};
|
||||
|
||||
void
|
||||
db_read_bytes(addr, size, data)
|
||||
vm_offset_t addr;
|
||||
register int size;
|
||||
register char *data;
|
||||
{
|
||||
register char *src;
|
||||
|
||||
src = (char *)addr;
|
||||
while (--size >= 0)
|
||||
*data++ = *src++;
|
||||
|
||||
}
|
||||
|
||||
db_expr_t
|
||||
db_get_value(addr, size, is_signed)
|
||||
db_addr_t addr;
|
||||
register int size;
|
||||
boolean_t is_signed;
|
||||
{
|
||||
char data[sizeof(int)];
|
||||
register db_expr_t value;
|
||||
register int i;
|
||||
|
||||
db_read_bytes(addr, size, data);
|
||||
|
||||
value = 0;
|
||||
#if BYTE_MSF
|
||||
for (i = 0; i < size; i++)
|
||||
#else /* BYTE_LSF */
|
||||
for (i = size - 1; i >= 0; i--)
|
||||
#endif
|
||||
{
|
||||
value = (value << 8) + (data[i] & 0xFF);
|
||||
}
|
||||
|
||||
if (size < 4) {
|
||||
if (is_signed && (value & db_extend[size]) != 0)
|
||||
value |= db_extend[size];
|
||||
}
|
||||
return (value);
|
||||
}
|
||||
|
43
commands/swifi/db_access.h
Normal file
43
commands/swifi/db_access.h
Normal file
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*
|
||||
* $Id: db_access.h,v 1.1 2003/01/15 21:51:24 mikesw Exp $
|
||||
*/
|
||||
|
||||
#ifndef _DDB_DB_ACCESS_H_
|
||||
#define _DDB_DB_ACCESS_H_
|
||||
|
||||
/*
|
||||
* Author: David B. Golub, Carnegie Mellon University
|
||||
* Date: 7/90
|
||||
*/
|
||||
/*
|
||||
* Data access functions for debugger.
|
||||
*/
|
||||
db_expr_t db_get_value __P((db_addr_t addr, int size,
|
||||
boolean_t is_signed));
|
||||
void db_put_value __P((db_addr_t addr, int size, db_expr_t value));
|
||||
|
||||
#endif /* !_DDB_DB_ACCESS_H_ */
|
1333
commands/swifi/db_disasm.c
Normal file
1333
commands/swifi/db_disasm.c
Normal file
File diff suppressed because it is too large
Load diff
99
commands/swifi/db_machdep.h
Normal file
99
commands/swifi/db_machdep.h
Normal file
|
@ -0,0 +1,99 @@
|
|||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*
|
||||
* $Id: db_machdep.h,v 1.1 2003/01/15 21:51:24 mikesw Exp $
|
||||
*/
|
||||
|
||||
#ifndef _MACHINE_DB_MACHDEP_H_
|
||||
#define _MACHINE_DB_MACHDEP_H_
|
||||
|
||||
//#include <machine/frame.h>
|
||||
//#include <machine/psl.h>
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
#define i386_saved_state trapframe
|
||||
|
||||
typedef vm_offset_t db_addr_t; /* address - unsigned */
|
||||
typedef int db_expr_t; /* expression - signed */
|
||||
|
||||
typedef struct i386_saved_state db_regs_t;
|
||||
extern db_regs_t ddb_regs; /* register state */
|
||||
#define DDB_REGS (&ddb_regs)
|
||||
|
||||
#define PC_REGS(regs) (((regs)->tf_cs & 0xfffc) == 0x08 \
|
||||
? (db_addr_t)(regs)->tf_eip : 0)
|
||||
|
||||
#define BKPT_INST 0xcc /* breakpoint instruction */
|
||||
#define BKPT_SIZE (1) /* size of breakpoint inst */
|
||||
#define BKPT_SET(inst) (BKPT_INST)
|
||||
|
||||
#define FIXUP_PC_AFTER_BREAK ddb_regs.tf_eip -= 1;
|
||||
|
||||
#define db_clear_single_step(regs) ((regs)->tf_eflags &= ~PSL_T)
|
||||
#define db_set_single_step(regs) ((regs)->tf_eflags |= PSL_T)
|
||||
|
||||
#define IS_BREAKPOINT_TRAP(type, code) ((type) == T_BPTFLT)
|
||||
/*
|
||||
* Watchpoints are not supported. The debug exception type is in %dr6
|
||||
* and not yet in the args to this macro.
|
||||
*/
|
||||
#define IS_WATCHPOINT_TRAP(type, code) 0
|
||||
|
||||
#define I_CALL 0xe8
|
||||
#define I_CALLI 0xff
|
||||
#define I_RET 0xc3
|
||||
#define I_IRET 0xcf
|
||||
|
||||
#define inst_trap_return(ins) (((ins)&0xff) == I_IRET)
|
||||
#define inst_return(ins) (((ins)&0xff) == I_RET)
|
||||
#define inst_call(ins) (((ins)&0xff) == I_CALL || \
|
||||
(((ins)&0xff) == I_CALLI && \
|
||||
((ins)&0x3800) == 0x1000))
|
||||
#define inst_load(ins) 0
|
||||
#define inst_store(ins) 0
|
||||
|
||||
/*
|
||||
* There no interesting addresses below _kstack = 0xefbfe000. There
|
||||
* are small absolute values for GUPROF, but we don't want to see them.
|
||||
* Treat "negative" addresses below _kstack as non-small to allow for
|
||||
* future reductions of _kstack and to avoid sign extension problems.
|
||||
*
|
||||
* There is one interesting symbol above -db_maxoff = 0xffff0000,
|
||||
* namely _APTD = 0xfffff000. Accepting this would mess up the
|
||||
* printing of small negative offsets. The next largest symbol is
|
||||
* _APTmap = 0xffc00000. Accepting this is OK (unless db_maxoff is
|
||||
* set to >= 0x400000 - (max stack offset)).
|
||||
*/
|
||||
#define DB_SMALL_VALUE_MAX 0x7fffffff
|
||||
#define DB_SMALL_VALUE_MIN (-0x400001)
|
||||
|
||||
#endif /* !_MACHINE_DB_MACHDEP_H_ */
|
583
commands/swifi/db_sym.c
Normal file
583
commands/swifi/db_sym.c
Normal file
|
@ -0,0 +1,583 @@
|
|||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*
|
||||
* $Id: db_sym.c,v 1.2 2003/01/16 01:06:09 mikesw Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: David B. Golub, Carnegie Mellon University
|
||||
* Date: 7/90
|
||||
*/
|
||||
//#include <sys/param.h>
|
||||
//#include <sys/systm.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/kallsyms.h>
|
||||
#include "ddb.h"
|
||||
#include "db_sym.h"
|
||||
#include "swifi.h"
|
||||
|
||||
/*
|
||||
* Multiple symbol tables
|
||||
*/
|
||||
#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;
|
||||
|
||||
/* NWT: fault injection routine only.
|
||||
* figure out start of function address given an address (off) in kernel text.
|
||||
* name = function name
|
||||
* value = function address
|
||||
* d = difference between off and function address
|
||||
* input is the desired address off and fault type
|
||||
* returns closest instruction address (if found), NULL otherwise
|
||||
*/
|
||||
unsigned long
|
||||
find_faulty_instr(db_expr_t off, int type, int *instr_len)
|
||||
{
|
||||
db_expr_t d;
|
||||
char *name;
|
||||
db_expr_t value, cur_value, prev_value = 0;
|
||||
int verbose=0, found=0;
|
||||
const char * mod_name = NULL;
|
||||
unsigned long mod_start;
|
||||
unsigned long mod_end;
|
||||
const char * sec_name = NULL;
|
||||
unsigned long sec_start;
|
||||
unsigned long sec_end;
|
||||
const char * sym_name = NULL;
|
||||
unsigned long sym_start;
|
||||
unsigned long sym_end;
|
||||
|
||||
|
||||
*instr_len = 0;
|
||||
if (kallsyms_address_to_symbol(off,
|
||||
&mod_name, &mod_start, &mod_end,
|
||||
&sec_name, &sec_start, &sec_end,
|
||||
&sym_name, &sym_start, &sym_end) == 0) {
|
||||
return(0);
|
||||
}
|
||||
|
||||
value = (db_expr_t) sym_start;
|
||||
d = off - sym_start;
|
||||
name = (char *) sym_name;
|
||||
|
||||
if (name == 0) {
|
||||
value = off;
|
||||
}
|
||||
|
||||
if (value >= DB_SMALL_VALUE_MIN && value <= DB_SMALL_VALUE_MAX) {
|
||||
printk("0x%x", off);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (name == 0 || d >= db_maxoff) {
|
||||
printk("0x%x", off);
|
||||
return 0 ;
|
||||
}
|
||||
/* 2) backup to start of function (SOF)
|
||||
* 3) delineate instruction boundaries, find instruction length too.
|
||||
*/
|
||||
|
||||
if(verbose) {
|
||||
printk("function %s", sym_name);
|
||||
}
|
||||
|
||||
/* 4) skip instructions until we get to our faulty address */
|
||||
cur_value = value;
|
||||
while(cur_value < sec_end) {
|
||||
if(verbose) {
|
||||
// db_printsym(cur_value, DB_STGY_PROC);
|
||||
// printk(":\t");
|
||||
}
|
||||
prev_value=cur_value;
|
||||
modAddr=0;
|
||||
if(verbose) {
|
||||
//cur_value=db_disasm(prev_value, FALSE);
|
||||
} else {
|
||||
cur_value=my_disasm(prev_value, FALSE);
|
||||
}
|
||||
|
||||
/* 4a) bail out if instruction is leave (0xc9) */
|
||||
if(cur_value-prev_value == 1) {
|
||||
unsigned char *c;
|
||||
c=(char *) prev_value;
|
||||
if(*c==0xc9) {
|
||||
if(verbose) printk("bailing out as we hit a leave\n");
|
||||
found=0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* 5a) init fault: from SOF, look for movl $X, -Y(%ebp),
|
||||
* (C645Fxxx or C745Fxxx) and replace with nop.
|
||||
*/
|
||||
if(type==INIT_FAULT) {
|
||||
unsigned char *c;
|
||||
c=(char *) prev_value;
|
||||
|
||||
if(*c==0x66 || *c==0x67)
|
||||
c++; /* override prefix */
|
||||
|
||||
if(*c==0xC6 || *c==0xC7)
|
||||
c++; /* movb or movl imm */
|
||||
else
|
||||
continue;
|
||||
|
||||
if(*c==0x45)
|
||||
c++; /* [ebp] */
|
||||
else
|
||||
continue;
|
||||
|
||||
if(*c & 0x80)
|
||||
found=1; /* negative displacement */
|
||||
else
|
||||
continue;
|
||||
|
||||
found=1;
|
||||
break;
|
||||
} else if(type==NOP_FAULT) {
|
||||
/* 5b) nop*: replace instruction with nop */
|
||||
if(cur_value> off) {
|
||||
found=1;
|
||||
break;
|
||||
}
|
||||
} else if(type==DST_FAULT || type==SRC_FAULT) {
|
||||
/* 5c) dst/src: flip bits in mod/rm, sib, disp or imm fields */
|
||||
if(cur_value>off && (cur_value-prev_value) > 1) {
|
||||
found=1;
|
||||
break;
|
||||
}
|
||||
} else if(type==BRANCH_FAULT || type==LOOP_FAULT) {
|
||||
/* 5e) brc*: search forward utnil we hit a Jxx or rep (F3 or F2).
|
||||
* replace instr with nop.
|
||||
*/
|
||||
unsigned char *c;
|
||||
|
||||
c=(char *) prev_value;
|
||||
|
||||
/* look for repX prefix */
|
||||
|
||||
if(*c==0xf3 || *c==0xf2) {
|
||||
if(verbose)
|
||||
printk("found repX prefix\n");
|
||||
/* take out repX prefix only */
|
||||
found=1;
|
||||
cur_value=prev_value+1;
|
||||
break;
|
||||
} else if( ((*c)&0xf0)==0x70 || (*c>=0xe0 && *c<=0xe2) ) {
|
||||
/* look for jXX 8 (7X), loop,jcx (e0-3), jXX 16/32 (0f 8X) */
|
||||
found=1;
|
||||
if(verbose)
|
||||
printk("found jXX rel8, loop or jcx\n");
|
||||
break;
|
||||
} else if(*c==0x66 || *c==0x67) { /* override prefix */
|
||||
c++;
|
||||
} else if(*(c++)==0xf && ((*c)&0xf0)==0x80 ) {
|
||||
found=1; /* 0x0f 0x8X */
|
||||
if(verbose) printk("found branch!\n");
|
||||
break;
|
||||
}
|
||||
} else if(type==PTR_FAULT) {
|
||||
/* 5f) ptr: if instruction has regmodrm byte (i_has_modrm),
|
||||
* and mod field has address ([eyy]dispxx), eyy!=ebp
|
||||
* flip 1 bit in lower byte (0x0f) or any bit in following
|
||||
* bytes (sib, imm or disp).
|
||||
*/
|
||||
if(cur_value>off && modAddr) {
|
||||
unsigned char *c;
|
||||
c=(char *) modAddr;
|
||||
if( (*c)>0x3f && (*c)<0xc0 && (((*c)&7)!=5) ) {
|
||||
found=1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if(type==INTERFACE_FAULT) {
|
||||
/* 5f) i/f: look for movl XX(ebp), reg or movb XX(ebp), reg,
|
||||
* where XX is positive. replace instr with nop.
|
||||
* movl=0x8a, movb=0x8b, mod=01XXX101 (disp8[ebp]), disp>0
|
||||
*/
|
||||
unsigned char *c;
|
||||
c=(char *) prev_value;
|
||||
if( *c==0x8a || *c==0x8b) {
|
||||
c++;
|
||||
if( ((*(c++))&0xc7)==0x45 && ((*c)&0x80)==0 ) {
|
||||
/* 75% chance that we'll choose the next arg */
|
||||
if(random()&0x3) {
|
||||
found=1;
|
||||
break;
|
||||
} else {
|
||||
if(verbose) printk("skipped...\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}else if(type==IRQ_FAULT) {
|
||||
/* 5g) i/f: look for push reg or offset(reg) / popf,
|
||||
* where XX is positive. replace instr with nop.
|
||||
* movl=0x8a, movb=0x8b, mod=01XXX101 (disp8[ebp]), disp>0
|
||||
*/
|
||||
unsigned char *c;
|
||||
c=(char *) prev_value;
|
||||
if (((*c & 0xf8) == 0x50) ||
|
||||
(*c == 0xff)) {
|
||||
if (*c == 0xff) {
|
||||
c++;
|
||||
//
|
||||
// Look for push x(ebp)
|
||||
if ((*c & 0x78) != 0x70) {
|
||||
continue;
|
||||
}
|
||||
//
|
||||
// Skip the offset
|
||||
//
|
||||
c++;
|
||||
}
|
||||
c++;
|
||||
if (*c == 0x9d) {
|
||||
//
|
||||
// Increment cur_value to include the
|
||||
// popf instruction
|
||||
//
|
||||
cur_value++;
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
/* if we're doing nop fault, then we're done.
|
||||
*/
|
||||
if(found) {
|
||||
*instr_len=cur_value-prev_value;
|
||||
off=prev_value;
|
||||
if(1 || verbose) {
|
||||
printk("%s", name);
|
||||
if (d) printk("+0x%x", d);
|
||||
printk(" @ %x, ", value);
|
||||
printk("instr @ %x, len=%d, ", off, *instr_len);
|
||||
// db_disasm(prev_value, FALSE);
|
||||
}
|
||||
return off;
|
||||
} else {
|
||||
if(verbose) printk("cannot locate instruction in function\n");
|
||||
*instr_len=0;
|
||||
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
|
118
commands/swifi/db_sym.h
Normal file
118
commands/swifi/db_sym.h
Normal file
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*
|
||||
* $Id: db_sym.h,v 1.1 2003/01/15 21:51:24 mikesw Exp $
|
||||
*/
|
||||
|
||||
#ifndef _DDB_DB_SYM_H_
|
||||
#define _DDB_DB_SYM_H_
|
||||
|
||||
#define db_printf printk
|
||||
|
||||
/*
|
||||
* Author: Alessandro Forin, Carnegie Mellon University
|
||||
* Date: 8/90
|
||||
*/
|
||||
|
||||
/*
|
||||
* This module can handle multiple symbol tables
|
||||
*/
|
||||
typedef struct {
|
||||
char *name; /* symtab name */
|
||||
char *start; /* symtab location */
|
||||
char *end;
|
||||
char *private; /* optional machdep pointer */
|
||||
} db_symtab_t;
|
||||
|
||||
extern db_symtab_t *db_last_symtab; /* where last symbol was found */
|
||||
|
||||
/*
|
||||
* Symbol representation is specific to the symtab style:
|
||||
* BSD compilers use dbx' nlist, other compilers might use
|
||||
* a different one
|
||||
*/
|
||||
typedef char * db_sym_t; /* opaque handle on symbols */
|
||||
#define DB_SYM_NULL ((db_sym_t)0)
|
||||
|
||||
/*
|
||||
* Non-stripped symbol tables will have duplicates, for instance
|
||||
* the same string could match a parameter name, a local var, a
|
||||
* global var, etc.
|
||||
* We are most concern with the following matches.
|
||||
*/
|
||||
typedef int db_strategy_t; /* search strategy */
|
||||
|
||||
#define DB_STGY_ANY 0 /* anything goes */
|
||||
#define DB_STGY_XTRN 1 /* only external symbols */
|
||||
#define DB_STGY_PROC 2 /* only procedures */
|
||||
|
||||
extern boolean_t db_qualify_ambiguous_names;
|
||||
/* if TRUE, check across symbol tables
|
||||
* for multiple occurrences of a name.
|
||||
* Might slow down quite a bit */
|
||||
|
||||
/*
|
||||
* Functions exported by the symtable module
|
||||
*/
|
||||
void db_add_symbol_table __P((char *, char *, char *, char *));
|
||||
/* extend the list of symbol tables */
|
||||
|
||||
db_sym_t db_search_symbol __P((db_addr_t, db_strategy_t, db_expr_t *));
|
||||
/* find symbol given value */
|
||||
|
||||
void db_symbol_values __P((db_sym_t, char **, db_expr_t *));
|
||||
/* return name and value of symbol */
|
||||
|
||||
#define db_find_sym_and_offset(val,namep,offp) \
|
||||
db_symbol_values(db_search_symbol(val,DB_STGY_ANY,offp),namep,0)
|
||||
/* find name&value given approx val */
|
||||
|
||||
#define db_find_xtrn_sym_and_offset(val,namep,offp) \
|
||||
db_symbol_values(db_search_symbol(val,DB_STGY_XTRN,offp),namep,0)
|
||||
/* ditto, but no locals */
|
||||
|
||||
int db_eqname __P((char *, char *, char));
|
||||
/* strcmp, modulo leading char */
|
||||
|
||||
void db_printsym __P((db_expr_t, db_strategy_t));
|
||||
/* print closest symbol to a value */
|
||||
|
||||
int db_sym_numargs __P((db_sym_t, int *, char **));
|
||||
|
||||
boolean_t X_db_line_at_pc __P((db_symtab_t *symtab, db_sym_t cursym,
|
||||
char **filename, int *linenum,
|
||||
db_expr_t off));
|
||||
db_sym_t X_db_lookup __P((db_symtab_t *stab, char *symstr));
|
||||
db_sym_t X_db_search_symbol __P((db_symtab_t *symtab, db_addr_t off,
|
||||
db_strategy_t strategy,
|
||||
db_expr_t *diffp));
|
||||
int X_db_sym_numargs __P((db_symtab_t *, db_sym_t, int *,
|
||||
char **));
|
||||
void X_db_symbol_values __P((db_sym_t sym, char **namep,
|
||||
db_expr_t *valuep));
|
||||
unsigned long
|
||||
find_faulty_instr(db_expr_t off, int type, int *instr_len);
|
||||
|
||||
#endif /* !_DDB_DB_SYM_H_ */
|
161
commands/swifi/ddb.h
Normal file
161
commands/swifi/ddb.h
Normal file
|
@ -0,0 +1,161 @@
|
|||
/*-
|
||||
* Copyright (c) 1993, Garrett A. Wollman.
|
||||
* Copyright (c) 1993, University of Vermont and State Agricultural College.
|
||||
* 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. 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 AUTHOR 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 AUTHOR 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.
|
||||
*
|
||||
* $Id: ddb.h,v 1.1 2003/01/15 21:51:24 mikesw Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
* Necessary declarations for the `ddb' kernel debugger.
|
||||
*/
|
||||
|
||||
#ifndef _DDB_DDB_H_
|
||||
#define _DDB_DDB_H_
|
||||
|
||||
#define __P(protos) protos
|
||||
typedef int boolean_t;
|
||||
typedef unsigned long vm_offset_t;
|
||||
unsigned long random __P((void));
|
||||
void srandom __P((unsigned long));
|
||||
|
||||
#include "db_machdep.h" /* type definitions */
|
||||
|
||||
typedef void db_cmdfcn_t __P((db_expr_t addr, boolean_t have_addr,
|
||||
db_expr_t count, char *modif));
|
||||
|
||||
#define DB_COMMAND(cmd_name, func_name) \
|
||||
DB_SET(cmd_name, func_name, db_cmd_set)
|
||||
#define DB_SHOW_COMMAND(cmd_name, func_name) \
|
||||
DB_SET(cmd_name, func_name, db_show_cmd_set)
|
||||
|
||||
#define DB_SET(cmd_name, func_name, set) \
|
||||
static db_cmdfcn_t func_name; \
|
||||
\
|
||||
static const struct command __CONCAT(func_name,_cmd) = { \
|
||||
__STRING(cmd_name), \
|
||||
func_name, \
|
||||
0, \
|
||||
0, \
|
||||
}; \
|
||||
TEXT_SET(set, __CONCAT(func_name,_cmd)); \
|
||||
\
|
||||
static void \
|
||||
func_name(addr, have_addr, count, modif) \
|
||||
db_expr_t addr; \
|
||||
boolean_t have_addr; \
|
||||
db_expr_t count; \
|
||||
char *modif;
|
||||
|
||||
extern char *esym;
|
||||
extern unsigned int db_maxoff;
|
||||
extern int db_indent;
|
||||
extern int db_inst_count;
|
||||
extern int db_load_count;
|
||||
extern int db_store_count;
|
||||
extern int db_radix;
|
||||
extern int db_max_width;
|
||||
extern int db_tab_stop_width;
|
||||
|
||||
struct vm_map;
|
||||
|
||||
void cnpollc __P((int));
|
||||
void db_check_interrupt __P((void));
|
||||
void db_clear_watchpoints __P((void));
|
||||
db_addr_t db_disasm __P((db_addr_t loc, boolean_t altfmt));
|
||||
/* instruction disassembler */
|
||||
//void db_error __P((char *s));
|
||||
#define db_error printk
|
||||
int db_expression __P((db_expr_t *valuep));
|
||||
int db_get_variable __P((db_expr_t *valuep));
|
||||
void db_iprintf __P((const char *,...));
|
||||
struct vm_map *db_map_addr __P((vm_offset_t));
|
||||
boolean_t db_map_current __P((struct vm_map *));
|
||||
boolean_t db_map_equal __P((struct vm_map *, struct vm_map *));
|
||||
void db_print_loc_and_inst __P((db_addr_t loc));
|
||||
void db_printf __P((const char *fmt, ...));
|
||||
void db_read_bytes __P((vm_offset_t addr, int size, char *data));
|
||||
/* machine-dependent */
|
||||
int db_readline __P((char *lstart, int lsize));
|
||||
void db_restart_at_pc __P((boolean_t watchpt));
|
||||
void db_set_watchpoints __P((void));
|
||||
void db_skip_to_eol __P((void));
|
||||
boolean_t db_stop_at_pc __P((boolean_t *is_breakpoint));
|
||||
#define db_strcpy strcpy
|
||||
void db_trap __P((int type, int code));
|
||||
int db_value_of_name __P((char *name, db_expr_t *valuep));
|
||||
void db_write_bytes __P((vm_offset_t addr, int size, char *data));
|
||||
/* machine-dependent */
|
||||
void kdb_init __P((void));
|
||||
void kdbprintf __P((const char *fmt, ...));
|
||||
|
||||
db_cmdfcn_t db_breakpoint_cmd;
|
||||
db_cmdfcn_t db_continue_cmd;
|
||||
db_cmdfcn_t db_delete_cmd;
|
||||
db_cmdfcn_t db_deletewatch_cmd;
|
||||
db_cmdfcn_t db_examine_cmd;
|
||||
db_cmdfcn_t db_listbreak_cmd;
|
||||
db_cmdfcn_t db_listwatch_cmd;
|
||||
db_cmdfcn_t db_print_cmd;
|
||||
db_cmdfcn_t db_ps;
|
||||
db_cmdfcn_t db_search_cmd;
|
||||
db_cmdfcn_t db_set_cmd;
|
||||
db_cmdfcn_t db_show_regs;
|
||||
db_cmdfcn_t db_single_step_cmd;
|
||||
db_cmdfcn_t db_stack_trace_cmd;
|
||||
db_cmdfcn_t db_trace_until_call_cmd;
|
||||
db_cmdfcn_t db_trace_until_matching_cmd;
|
||||
db_cmdfcn_t db_watchpoint_cmd;
|
||||
db_cmdfcn_t db_write_cmd;
|
||||
|
||||
#if 0
|
||||
db_cmdfcn_t db_help_cmd;
|
||||
db_cmdfcn_t db_show_all_threads;
|
||||
db_cmdfcn_t db_show_one_thread;
|
||||
db_cmdfcn_t ipc_port_print;
|
||||
db_cmdfcn_t vm_page_print;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Command table.
|
||||
*/
|
||||
struct command {
|
||||
char * name; /* command name */
|
||||
db_cmdfcn_t *fcn; /* function to call */
|
||||
int flag; /* extra info: */
|
||||
#define CS_OWN 0x1 /* non-standard syntax */
|
||||
#define CS_MORE 0x2 /* standard syntax, but may have other words
|
||||
* at end */
|
||||
#define CS_SET_DOT 0x100 /* set dot after command */
|
||||
struct command *more; /* another level of command */
|
||||
};
|
||||
|
||||
db_addr_t
|
||||
my_disasm(db_addr_t loc,
|
||||
boolean_t altfmt);
|
||||
|
||||
#endif /* !_DDB_DDB_H_ */
|
1201
commands/swifi/fault_model.c
Normal file
1201
commands/swifi/fault_model.c
Normal file
File diff suppressed because it is too large
Load diff
72
commands/swifi/random.c
Normal file
72
commands/swifi/random.c
Normal file
|
@ -0,0 +1,72 @@
|
|||
/*-
|
||||
* 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
|
||||
* $Id: random.c,v 1.1 2003/01/15 21:50:59 mikesw Exp $
|
||||
*/
|
||||
|
||||
#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);
|
||||
}
|
980
commands/swifi/swifi-2.4.18-a-patch
Normal file
980
commands/swifi/swifi-2.4.18-a-patch
Normal file
|
@ -0,0 +1,980 @@
|
|||
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
|
32
commands/swifi/swifi-ksyms.c
Normal file
32
commands/swifi/swifi-ksyms.c
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* 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);
|
||||
|
||||
|
46
commands/swifi/swifi-user.h
Normal file
46
commands/swifi/swifi-user.h
Normal file
|
@ -0,0 +1,46 @@
|
|||
#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;
|
||||
|
||||
|
||||
|
||||
#endif // _SWIFI_USER_H
|
||||
|
61
commands/swifi/swifi.h
Normal file
61
commands/swifi/swifi.h
Normal file
|
@ -0,0 +1,61 @@
|
|||
#ifndef _LINUX_SWIFI_H
|
||||
#define _LINUX_SWIFI_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);
|
||||
|
||||
|
||||
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);
|
||||
|
||||
|
||||
void *
|
||||
swifi___vmalloc(unsigned long size, int gfp_mask, pgprot_t prot);
|
||||
|
||||
|
||||
#endif // _LINUX_SWIFI_H
|
||||
|
Loading…
Reference in a new issue