Annotation of xinu/h/proc.h, revision 1.1

1.1     ! root        1: /* proc.h - isbadpid */
        !             2: 
        !             3: /* process table declarations and defined constants                    */
        !             4: 
        !             5: #ifndef        NPROC                           /* set the number of processes  */
        !             6: #define        NPROC           100             /*  allowed if not already done */
        !             7: #endif
        !             8: 
        !             9: /* process state constants */
        !            10: 
        !            11: #define        PRCURR          '\001'          /* process is currently running */
        !            12: #define        PRFREE          '\002'          /* process slot is free         */
        !            13: #define        PRREADY         '\003'          /* process is on ready queue    */
        !            14: #define        PRRECV          '\004'          /* process waiting for message  */
        !            15: #define        PRSLEEP         '\005'          /* process is sleeping          */
        !            16: #define        PRSUSP          '\006'          /* process is suspended         */
        !            17: #define        PRWAIT          '\007'          /* process is on semaphore queue*/
        !            18: #define        PRTRECV         '\010'          /* process is timing a receive  */
        !            19: 
        !            20: /* miscellaneous process definitions */
        !            21: 
        !            22: #define        PNREGS          24              /* size of saved register area  */
        !            23: #define        PNRETPOP        4               /* number of registers RET pops,*/
        !            24:                                        /*  other than PC               */
        !            25: #define        PNMLEN          8               /* length of process "name"     */
        !            26: #define        NULLPROC        0               /* id of the null process; it   */
        !            27:                                        /*  is always eligible to run   */
        !            28: #define        BADPID          -1              /* used when invalid pid needed */
        !            29: 
        !            30: #define        isbadpid(x)     (x<=0 || x>=NPROC)
        !            31: 
        !            32: /* process table entry */
        !            33: 
        !            34: struct pentry  {
        !            35:        int     pregs[PNREGS];          /* process save area corresponding
        !            36:                                           to VAX Process Control Block, e.g.:
        !            37:                                             pregs[?]     register function
        !            38:                                           -----------  --------------------
        !            39:                                                0       kernel stack pointer
        !            40:                                                1       executive stack ptr
        !            41:                                                2       supervisor stack ptr
        !            42:                                                3       user stack pointer
        !            43:                                                4       general register R0
        !            44:                                                5-14    general regs R1-R10
        !            45:                                                15      general register R11
        !            46:                                                16      argument pointer (R12)
        !            47:                                                17      frame pointer (R13)
        !            48:                                                18      program counter (R15)
        !            49:                                                19      processor status lword
        !            50:                                                20      P0BR
        !            51:                                                21      P0LR
        !            52:                                                22      P1BR
        !            53:                                                23      P1LR            */
        !            54:        char    pstate;                 /* process state: PRCURR, etc.  */
        !            55:        short   pprio;                  /* process priority             */
        !            56:        int     psem;                   /* semaphore if process waiting */
        !            57:        int     pmsg;                   /* message sent to this process */
        !            58:        Bool    phasmsg;                /* True iff pmsg is valid       */
        !            59:        int     pbase;                  /* base of run time stack       */
        !            60:        int     pstklen;                /* stack length in bytes        */
        !            61:        int     plimit;                 /* lowest extent of stack       */
        !            62:        char    pname[PNMLEN];          /* process name                 */
        !            63:        short   pargs;                  /* initial number of arguments  */
        !            64:        int     paddr;                  /* initial code address         */
        !            65:        short   pnxtkin;                /* next-of-kin notified of death*/
        !            66:        short   pdevs[2];               /* devices to close upon exit   */
        !            67: };
        !            68: 
        !            69: extern struct  pentry proctab[];
        !            70: extern int     numproc;                /* currently active processes   */
        !            71: extern int     nextproc;               /* search point for free slot   */
        !            72: extern int     currpid;                /* currently executing process  */

unix.superglobalmegacorp.com

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