Annotation of xinu/h/proc.h, revision 1.1.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.