67 lines
986 B
C
67 lines
986 B
C
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,
|
|
|
|
Pagesize = 1024, /* need not relate to kernel */
|
|
};
|
|
|
|
struct Data {
|
|
ulong len;
|
|
char data[1];
|
|
};
|
|
|
|
struct Seg {
|
|
char* name;
|
|
uvlong offset;
|
|
uvlong len;
|
|
Page** pg;
|
|
ulong npg;
|
|
};
|
|
|
|
struct Page {
|
|
Page* link;
|
|
ulong len;
|
|
char* data;
|
|
|
|
/* when page is written, these hold the ptr to it */
|
|
int written;
|
|
int type;
|
|
ulong pid;
|
|
uvlong offset;
|
|
};
|
|
|
|
struct Proc {
|
|
Proc *link;
|
|
long pid;
|
|
Data* d[Npfile];
|
|
Seg** seg; /* memory segments */
|
|
int nseg;
|
|
Seg* text; /* text file */
|
|
};
|
|
|
|
extern char *pfile[Npfile];
|
|
|
|
Proc* snap(long pid, int usetext);
|
|
void* emalloc(ulong);
|
|
void* erealloc(void*, ulong);
|
|
char* estrdup(char*);
|
|
void writesnap(Biobuf*, Proc*);
|
|
Page* datapage(char *p, long len);
|
|
Proc* readsnap(Biobuf *b);
|
|
Page* findpage(Proc *plist, long pid, int type, uvlong off);
|
|
|
|
int debug;
|