|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1982 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: * ! 6: * @(#)process.rep 5.4 (Berkeley) 1/3/88 ! 7: */ ! 8: ! 9: /* ! 10: * This file defines the representation of a process. ! 11: * It is MACHINE DEPENDENT. ! 12: */ ! 13: ! 14: #define STOPPED 0177 ! 15: #define FINISHED 0 ! 16: ! 17: #ifdef vax ! 18: #define NREG 12 /* maximum number of saved registers */ ! 19: #endif ! 20: #ifdef tahoe ! 21: #define NREG 13 ! 22: #endif ! 23: #ifdef mc68000 ! 24: #define NREG 14 /* maximum number of saved registers */ ! 25: #endif ! 26: #define CSIZE 101 /* size of instruction cache */ ! 27: ! 28: /* ! 29: * Cache-ing of instruction segment is done to reduce the number ! 30: * of calls to ptrace. ! 31: */ ! 32: ! 33: typedef struct { ! 34: WORD addr; ! 35: WORD val; ! 36: } CACHEWORD; ! 37: ! 38: /* ! 39: * This structure holds the information we need from the user structure. ! 40: */ ! 41: ! 42: struct process { ! 43: int pid; /* process being traced */ ! 44: WORD reg[NREG]; /* process's registers */ ! 45: #ifdef tahoe ! 46: WORD fp, sp, pc; /* special registers */ ! 47: #else ! 48: WORD ap, fp, sp, pc; /* special registers */ ! 49: #endif ! 50: WORD oreg[NREG]; /* registers when process last stopped */ ! 51: WORD oap, ofp, osp, opc;/* special registers when process stopped */ ! 52: int status; /* either STOPPED or FINISHED */ ! 53: int signo; /* signal that stopped process */ ! 54: int exitval; /* return value from exit() */ ! 55: long sigset; /* bit array of traced signals */ ! 56: CACHEWORD word[CSIZE]; /* text segment cache */ ! 57: }; ! 58: ! 59: /* ! 60: * Process manipulation routines local to this module. ! 61: */ ! 62: ! 63: int pstart(); /* start up a process */ ! 64: int pcont(); /* continue execution */ ! 65: int pstep(); /* single step */ ! 66: int pio(); /* process memory move */ ! 67: int psigtrace(); /* catch/don't catch a signal */ ! 68: int unsetsigtraces(); /* don't catch any signals */ ! 69: ! 70: /* ! 71: * These definitions are for the arguments to "pio". ! 72: */ ! 73: ! 74: typedef enum { PREAD, PWRITE } PIO_OP; ! 75: typedef enum { TEXTSEG, DATASEG } PIO_SEG; ! 76: ! 77: /* macros for things that used to be functions */ ! 78: ! 79: #define iread(buf, addr, nbytes) dread(buf, addr+ENDOFF, nbytes) ! 80: #define iwrite(buf, addr, nbytes) dwrite(buf, addr+ENDOFF, nbytes) ! 81: #define dread(buf, addr, nbytes) drdwr(PREAD, buf, addr, nbytes) ! 82: #define dwrite(buf, addr, nbytes) drdwr(PWRITE, buf, addr, nbytes)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.