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