|  | /* Copyright (c) 2002, 2003 William Josephson */ | 
|  |  | 
|  | enum { | 
|  | CoremapMagic	= 0xba5eba11, | 
|  | CoremapMax	= 128, | 
|  | }; | 
|  | #undef MAXCOMLEN | 
|  | #define MAXCOMLEN 16 | 
|  | #define PRSTATUS_VERSION	1	/* Current version of prstatus_t */ | 
|  | #define PRPSINFO_VERSION	1	/* Current version of prpsinfo_t */ | 
|  | #define PRARGSZ			80	/* Maximum argument bytes saved */ | 
|  |  | 
|  |  | 
|  | typedef struct Coremap Coremap; | 
|  | typedef struct CoremapItem CoremapItem; | 
|  | typedef struct CoremapHeader CoremapHeader; | 
|  | typedef struct ElfNote ElfNote; | 
|  | typedef struct Reg386 Reg386; | 
|  | typedef struct PrStatus386 PrStatus386; | 
|  | typedef struct PrPsinfo PrPsinfo; | 
|  |  | 
|  | struct CoremapHeader { | 
|  | u32int	magic; | 
|  | u32int	counter; | 
|  | u32int	maxelem; | 
|  | }; | 
|  |  | 
|  | struct CoremapItem { | 
|  | u32int	address; | 
|  | u32int	size; | 
|  | }; | 
|  |  | 
|  | struct Coremap { | 
|  | CoremapHeader	header; | 
|  | CoremapItem	map[CoremapMax]; | 
|  | }; | 
|  |  | 
|  | struct ElfNote { | 
|  | u32int	namesz; | 
|  | u32int	descsz; | 
|  | u32int	type; | 
|  | char	*name; | 
|  | uchar	*desc; | 
|  | u32int	offset;	/* in-memory only */ | 
|  | }; | 
|  |  | 
|  | enum | 
|  | { | 
|  | NotePrStatus = 1, | 
|  | NotePrFpreg = 2, | 
|  | NotePrPsinfo = 3, | 
|  | NotePrTaskstruct = 4, | 
|  | NotePrAuxv = 6, | 
|  | NotePrXfpreg = 0x46e62b7f,	/* according to gdb */ | 
|  | }; | 
|  | #if 0 | 
|  | struct Reg386 | 
|  | { | 
|  | u32int	fs; | 
|  | u32int	es; | 
|  | u32int	ds; | 
|  | u32int	edi; | 
|  | u32int	esi; | 
|  | u32int	ebp; | 
|  | u32int	isp; | 
|  | u32int	ebx; | 
|  | u32int	edx; | 
|  | u32int	ecx; | 
|  | u32int	eax; | 
|  | u32int	trapno; | 
|  | u32int	err; | 
|  | u32int	eip; | 
|  | u32int	cs; | 
|  | u32int	eflags; | 
|  | u32int	esp; | 
|  | u32int	ss; | 
|  | u32int	gs; | 
|  | }; | 
|  | #endif | 
|  |  | 
|  | struct Reg386 | 
|  | { | 
|  | u32int	ebx; | 
|  | u32int	ecx; | 
|  | u32int	edx; | 
|  | u32int	esi; | 
|  | u32int	edi; | 
|  | u32int	ebp; | 
|  | u32int	eax; | 
|  | u32int	ds; | 
|  | u32int	es; | 
|  | u32int	fs; | 
|  | u32int	gs; | 
|  | u32int	origeax; | 
|  | u32int	eip; | 
|  | u32int	cs; | 
|  | u32int	eflags; | 
|  | u32int	esp; | 
|  | u32int	ss; | 
|  | }; | 
|  |  | 
|  | #if 0 | 
|  | struct PrStatus386 | 
|  | { | 
|  | u32int		version;	/* Version number of struct (1) */ | 
|  | u32int		statussz;	/* sizeof(prstatus_t) (1) */ | 
|  | u32int		gregsetsz;	/* sizeof(gregset_t) (1) */ | 
|  | u32int		fpregsetsz;	/* sizeof(fpregset_t) (1) */ | 
|  | int			osreldate;	/* Kernel version (1) */ | 
|  | int			cursig;	/* Current signal (1) */ | 
|  | pid_t		pid;		/* Process ID (1) */ | 
|  | Reg386		reg;		/* General purpose registers (1) */ | 
|  | }; | 
|  | #endif | 
|  |  | 
|  | struct PrPsinfo | 
|  | { | 
|  | int		version;		/* Version number of struct (1) */ | 
|  | u32int	psinfosz;		/* sizeof(prpsinfo_t) (1) */ | 
|  | char	fname[MAXCOMLEN+1];	/* Command name, null terminated (1) */ | 
|  | char	psargs[PRARGSZ+1];	/* Arguments, null terminated (1) */ | 
|  | }; | 
|  |  | 
|  | struct PrStatus386 | 
|  | { | 
|  | u32int	signo; | 
|  | u32int	code; | 
|  | u32int	errno; | 
|  | u32int	cursig; | 
|  | u32int	sigpend; | 
|  | u32int	sighold; | 
|  | u32int	pid; | 
|  | u32int	ppid; | 
|  | u32int	pgrp; | 
|  | u32int	sid; | 
|  | u32int	utime[2]; | 
|  | u32int	stime[2]; | 
|  | u32int	cutime[2]; | 
|  | u32int	cstime[2]; | 
|  | Reg386	reg; | 
|  | u32int	fpvalid; | 
|  | }; |