Annotation of 40BSD/cmd/csh/sh.proc.h, revision 1.1.1.1

1.1       root        1: /* sh.proc.h 4.1 10/9/80 */
                      2: 
                      3: /*
                      4:  * C shell - process structure declarations
                      5:  */
                      6: 
                      7: /*
                      8:  * Structure for each process the shell knows about:
                      9:  *     allocated and filled by pcreate.
                     10:  *     flushed by pflush; freeing always happens at top level
                     11:  *         so the interrupt level has less to worry about.
                     12:  *     processes are related to "friends" when in a pipeline;
                     13:  *         p_friends links makes a circular list of such jobs
                     14:  */
                     15: struct process {
                     16:        struct  process *p_next;        /* next in global "proclist" */
                     17:        struct  process *p_friends;     /* next in job list (or self) */
                     18:        struct  directory *p_cwd;       /* cwd of the job (only in head) */
                     19:        short   unsigned p_flags;       /* various job status flags */
                     20:        char    p_reason;               /* reason for entering this state */
                     21:        char    p_index;                /* shorthand job index */
                     22:        short   p_pid;
                     23:        short   p_jobid;                /* pid of job leader */
                     24:        /* if a job is stopped/background p_jobid gives its pgrp */
                     25:        time_t  p_btime;                /* begin time */
                     26:        time_t  p_etime;                /* end time */
                     27:        long    p_stime;                /* system cpu time */
                     28:        long    p_utime;                /* user cpu time */
                     29: #ifdef VMUNIX
                     30:        struct  vtimes p_vtimes;
                     31: #endif
                     32:        char    *p_command;             /* first PMAXLEN chars of command */
                     33: };
                     34: 
                     35: /* flag values for p_flags */
                     36: #define        PRUNNING        (1<<0)          /* running */
                     37: #define        PSTOPPED        (1<<1)          /* stopped */
                     38: #define        PNEXITED        (1<<2)          /* normally exited */
                     39: #define        PAEXITED        (1<<3)          /* abnormally exited */
                     40: #define        PSIGNALED       (1<<4)          /* terminated by a signal != SIGINT */
                     41: 
                     42: #define        PALLSTATES      (PRUNNING|PSTOPPED|PNEXITED|PAEXITED|PSIGNALED|PINTERRUPTED)
                     43: #define        PNOTIFY         (1<<5)          /* notify async when done */
                     44: #define        PTIME           (1<<6)          /* job times should be printed */
                     45: #define        PAWAITED        (1<<7)          /* top level is waiting for it */
                     46: #define        PFOREGND        (1<<8)          /* started in shells pgrp */
                     47: #define        PDUMPED         (1<<9)          /* process dumped core */
                     48: #define        PDIAG           (1<<10)         /* diagnostic output also piped out */
                     49: #define        PPOU            (1<<11)         /* piped output */
                     50: #define        PREPORTED       (1<<12)         /* status has been reported */
                     51: #define        PINTERRUPTED    (1<<13)         /* job stopped via interrupt signal */
                     52: #define        PPTIME          (1<<14)         /* time individual process */
                     53: #define        PNEEDNOTE       (1<<15)         /* notify as soon as practical */
                     54: 
                     55: #define        PNULL           (struct process *)0
                     56: #define        PMAXLEN         80
                     57: 
                     58: /* defines for arguments to pprint */
                     59: #define        NUMBER          01
                     60: #define        NAME            02
                     61: #define        REASON          04
                     62: #define        AMPERSAND       010
                     63: #define        FANCY           020
                     64: #define        SHELLDIR        040             /* print shell's dir if not the same */
                     65: #define        JOBDIR          0100            /* print job's dir if not the same */
                     66: #define        AREASON         0200
                     67: 
                     68: struct process proclist;               /* list head of all processes */
                     69: bool   pnoprocesses;                   /* pchild found nothing to wait for */
                     70: 
                     71: struct process *pholdjob;              /* one level stack of current jobs */
                     72: 
                     73: struct process *pcurrjob;              /* current job */
                     74: struct process *pcurrent;              /* current job in table */
                     75: struct process *pprevious;             /* previous job in table */
                     76: 
                     77: short  pmaxindex;                      /* current maximum job index */
                     78: 
                     79: bool   timesdone;                      /* shtimes buffer full ? */
                     80: 
                     81: int    psigint();
                     82: struct process *pgetcurr();
                     83: struct process *plookup();
                     84: struct process *pfind();

unix.superglobalmegacorp.com

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