Annotation of 43BSDTahoe/ucb/pascal/pdx/process/process.rep, revision 1.1

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)

unix.superglobalmegacorp.com

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