/* * lots of this junk is extra -- please remove */ typedef struct Data Data; typedef struct Page Page; typedef struct Proc Proc; typedef struct Seg Seg; enum { Psegment = 0, Pfd, Pfpregs, Pkregs, Pnoteid, Pns, Pproc, Pregs, Pstatus, Npfile, /* last one loaded by default */ Pmem, Pagesize = 1024, /* need not relate to kernel */ }; struct Data { ulong len; char data[1]; }; struct Seg { char* name; uvlong offset; uvlong len; Page** pg; int npg; }; struct Page { Page* link; ulong len; ulong sum; uchar pfile; uchar written; char type; /* when page is written, these hold the ptr to it */ ulong pid; uvlong offset; char data[]; }; struct Proc { Proc *link; long pid; Data* d[Npfile]; Seg** seg; /* memory segments */ int nseg; Seg* text; /* text file */ }; Proc* snapw(Biobuf*, long); void* emalloc(ulong); void* erealloc(void*, ulong); char* estrdup(char*); int aoeopen(int); long aoepread(int, void*, long, vlong); void aoeclose(int); #define dprint(...) if(debug) fprint(2, _VA_ARGS_) extern int pfile[]; extern int shelf; int debug;