BSD 4_3_Net_2 release
[unix-history] / usr / src / usr.bin / pascal / pdx / process / process.rep
/*-
* Copyright (c) 1982 The Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)process.rep 5.5 (Berkeley) 4/16/91
*/
/*
* 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)