Annotation of 43BSD/bin/csh/sh.proc.h, revision 1.1.1.1

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