File:  [CSRG BSD Unix] / 43BSDReno / pgrm / pascal / pdx / process / process.rep
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:12:57 2018 UTC (8 years, 1 month ago) by root
Branches: MAIN, BSD
CVS tags: HEAD, BSD43reno
BSD 4.3reno

/*
 * Copyright (c) 1982 Regents of the University of California.
 * All rights reserved.  The Berkeley software License Agreement
 * specifies the terms and conditions for redistribution.
 *
 *	@(#)process.rep	5.4 (Berkeley) 1/3/88
 */

/*
 * This file defines the representation of a process.
 * It is MACHINE DEPENDENT.
 */

#define STOPPED 0177
#define FINISHED 0

#ifdef vax
#define NREG 12			/* maximum number of saved registers */
#endif
#ifdef tahoe
#define	NREG 13
#endif
#ifdef mc68000
#define NREG 14			/* maximum number of saved registers */
#endif
#define CSIZE 101		/* size of instruction cache */

/*
 * Cache-ing of instruction segment is done to reduce the number
 * of calls to ptrace.
 */

typedef struct {
	WORD addr;
	WORD val;
} CACHEWORD;

/*
 * This structure holds the information we need from the user structure.
 */

struct process {
	int pid;		/* process being traced */
	WORD reg[NREG];		/* process's registers */
#ifdef tahoe
	WORD fp, sp, pc;	/* special registers */
#else
	WORD ap, fp, sp, pc;	/* special registers */
#endif
	WORD oreg[NREG];	/* registers when process last stopped */
	WORD oap, ofp, osp, opc;/* special registers when process stopped */
	int status;		/* either STOPPED or FINISHED */
	int signo;		/* signal that stopped process */
	int exitval;		/* return value from exit() */
	long sigset;		/* bit array of traced signals */
	CACHEWORD word[CSIZE];	/* text segment cache */
};

/*
 * Process manipulation routines local to this module.
 */

int pstart();			/* start up a process */
int pcont();			/* continue execution */
int pstep();			/* single step */
int pio();			/* process memory move */
int psigtrace();		/* catch/don't catch a signal */
int unsetsigtraces();		/* don't catch any signals */

/*
 * These definitions are for the arguments to "pio".
 */

typedef enum { PREAD, PWRITE } PIO_OP;
typedef enum { TEXTSEG, DATASEG } PIO_SEG;

/* macros for things that used to be functions */

#define	iread(buf, addr, nbytes)	dread(buf, addr+ENDOFF, nbytes)
#define	iwrite(buf, addr, nbytes)	dwrite(buf, addr+ENDOFF, nbytes)
#define	dread(buf, addr, nbytes)	drdwr(PREAD, buf, addr, nbytes)
#define	dwrite(buf, addr, nbytes)	drdwr(PWRITE, buf, addr, nbytes)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.