xref: /plan9/sys/src/cmd/snap/snap.h (revision 50e5f38d649a06ef8aef42696e09b6c4c5964957)
17dd7cddfSDavid du Colombier typedef struct Data	Data;
27dd7cddfSDavid du Colombier typedef struct Page	Page;
37dd7cddfSDavid du Colombier typedef struct Proc	Proc;
47dd7cddfSDavid du Colombier typedef struct Seg	Seg;
57dd7cddfSDavid du Colombier 
67dd7cddfSDavid du Colombier enum {
77dd7cddfSDavid du Colombier 	Psegment = 0,
87dd7cddfSDavid du Colombier 	Pfd,
97dd7cddfSDavid du Colombier 	Pfpregs,
107dd7cddfSDavid du Colombier 	Pkregs,
117dd7cddfSDavid du Colombier 	Pnoteid,
127dd7cddfSDavid du Colombier 	Pns,
137dd7cddfSDavid du Colombier 	Pproc,
147dd7cddfSDavid du Colombier 	Pregs,
157dd7cddfSDavid du Colombier 	Pstatus,
167dd7cddfSDavid du Colombier 	Npfile,
177dd7cddfSDavid du Colombier 
187dd7cddfSDavid du Colombier 	Pagesize = 1024,	/* need not relate to kernel */
197dd7cddfSDavid du Colombier };
207dd7cddfSDavid du Colombier 
217dd7cddfSDavid du Colombier struct Data {
227dd7cddfSDavid du Colombier 	ulong len;
237dd7cddfSDavid du Colombier 	char data[1];
247dd7cddfSDavid du Colombier };
257dd7cddfSDavid du Colombier 
267dd7cddfSDavid du Colombier struct Seg {
277dd7cddfSDavid du Colombier 	char*	name;
28*50e5f38dSDavid du Colombier 	uvlong	offset;
29*50e5f38dSDavid du Colombier 	uvlong	 len;
307dd7cddfSDavid du Colombier 	Page**	pg;
317dd7cddfSDavid du Colombier 	int	npg;
327dd7cddfSDavid du Colombier };
337dd7cddfSDavid du Colombier 
347dd7cddfSDavid du Colombier struct Page {
357dd7cddfSDavid du Colombier 	Page*	link;
367dd7cddfSDavid du Colombier 	ulong	len;
377dd7cddfSDavid du Colombier 	char*	data;
387dd7cddfSDavid du Colombier 
397dd7cddfSDavid du Colombier 	/* when page is written, these hold the ptr to it */
407dd7cddfSDavid du Colombier 	int	written;
417dd7cddfSDavid du Colombier 	int	type;
427dd7cddfSDavid du Colombier 	ulong	pid;
43*50e5f38dSDavid du Colombier 	uvlong	offset;
447dd7cddfSDavid du Colombier };
457dd7cddfSDavid du Colombier 
467dd7cddfSDavid du Colombier struct Proc {
477dd7cddfSDavid du Colombier 	Proc *link;
487dd7cddfSDavid du Colombier 	long	pid;
497dd7cddfSDavid du Colombier 	Data*	d[Npfile];
507dd7cddfSDavid du Colombier 	Seg**	seg;	/* memory segments */
517dd7cddfSDavid du Colombier 	int	nseg;
527dd7cddfSDavid du Colombier 	Seg*	text;	/* text file */
537dd7cddfSDavid du Colombier };
547dd7cddfSDavid du Colombier 
557dd7cddfSDavid du Colombier extern char *pfile[Npfile];
567dd7cddfSDavid du Colombier 
577dd7cddfSDavid du Colombier Proc*	snap(long pid, int usetext);
587dd7cddfSDavid du Colombier void*	emalloc(ulong);
597dd7cddfSDavid du Colombier void*	erealloc(void*, ulong);
607dd7cddfSDavid du Colombier char*	estrdup(char*);
617dd7cddfSDavid du Colombier void	writesnap(Biobuf*, Proc*);
627dd7cddfSDavid du Colombier Page*	datapage(char *p, long len);
637dd7cddfSDavid du Colombier Proc*	readsnap(Biobuf *b);
64*50e5f38dSDavid du Colombier Page*	findpage(Proc *plist, long pid, int type, uvlong off);
659a747e4fSDavid du Colombier 
669a747e4fSDavid du Colombier int	debug;
67