Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

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;
        int     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;