|
|
1.1 ! root 1: #include <string.h> ! 2: #include <sys/param.h> ! 3: #include <sys/stat.h> ! 4: #include <sys/user.h> ! 5: #include <sys/proc.h> ! 6: #include <sys/reg.h> ! 7: #include <sys/pioctl.h> ! 8: #include <sys/pte.h> ! 9: #include <sys/vm.h> ! 10: ! 11: #define UBASE (long)USRSTACK ! 12: #define NSTACK 8192 ! 13: ! 14: char *malloc(); ! 15: #define Malloc(type,n) (type *)malloc((n)*sizeof(type)) ! 16: ! 17: #define Kread(addr, destp) ((addr) && kread(addr, (char *)destp, sizeof(*(destp)))) ! 18: ! 19: #define min(a,b) ((a) <= (b) ? (a) : (b)) ! 20: #define max(a,b) ((a) >= (b) ? (a) : (b)) ! 21: #define minmax(x,a,b) min(b,max(a,x)) ! 22: ! 23: #define ENTRYSIZ DIRSIZ ! 24: ! 25: typedef struct Entry { ! 26: struct Entry *next; ! 27: unsigned int e_val; ! 28: char e_name[ENTRYSIZ]; ! 29: } Entry; ! 30: ! 31: typedef struct List { ! 32: struct List *next; ! 33: int nentry; ! 34: struct Entry *begin; ! 35: } List; ! 36: ! 37: typedef struct Select { ! 38: long flag; ! 39: char *id; ! 40: dev_t dev; ino_t ino; ! 41: } Select; ! 42: ! 43: #define SELTTY 1 ! 44: #define SELXFL 2 ! 45: #define SELFIL 4 ! 46: ! 47: typedef struct Psline { ! 48: int weight; ! 49: char *string; ! 50: } Psline; ! 51: ! 52: int Pslcomp(); ! 53: char *printp(), *fdprint(), *iprint(); ! 54: char *gettty(), *getfs(), *getuname(), *getargs(), *memcpy(); ! 55: char *lookdir(); ! 56: List *devlist, *prlist, *getdir(); ! 57: Select *selbeg, *selend; ! 58: int Fflag, fflag, hflag, lflag, Nflag, nflag, Tflag, uflag; ! 59: int aflag, rflag, tflag, xflag; ! 60: int mypid, myuid; ! 61: int drum, memory; ! 62: char *drumf, *memf, *nlistf; ! 63: ! 64: char *progname; ! 65: ! 66: long lseek(); ! 67: ! 68: /* ! 69: * data-fetching functions ! 70: */ ! 71: extern struct ftab { ! 72: int (*f_proc)(); /* fetch a particular proc entry */ ! 73: List *(*f_prlist)(); /* fetch list of all processes */ ! 74: char *(*f_uarea)(); /* fetch user block */ ! 75: int (*f_stack)(); /* fetch top of stack seg, for arguments */ ! 76: int (*f_kread)(); /* read kernel memory */ ! 77: int (*f_init)(); /* init, open files */ ! 78: } ftab[]; ! 79: int mode; /* index into ftab */ ! 80: ! 81: #define getproc(s, pp) (*ftab[mode].f_proc)(s, pp) ! 82: #define getprlist() (*ftab[mode].f_prlist)() ! 83: #define getuarea(f, p, u) (*ftab[mode].f_uarea)(f, p, u) ! 84: #define getstack(f, p, u, s) (*ftab[mode].f_stack)(f, p, u, s) ! 85: #define kread(a, b, s) (*ftab[mode].f_kread)(a, b, s) ! 86: #define openfiles() (*ftab[mode].f_init)();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.