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();

Defined variables

pcurrent defined in line 76; used 13 times
pcurrjob defined in line 75; used 22 times
pholdjob defined in line 73; used 4 times
pmaxindex defined in line 79; used 7 times
pprevious defined in line 77; used 12 times
proclist defined in line 70; used 14 times

Defined struct's

process defined in line 21; used 94 times

Defined macros

AMPERSAND defined in line 64; used 2 times
AREASON defined in line 68; used 4 times
FANCY defined in line 65; used 3 times
JOBDIR defined in line 67; used 3 times
NAME defined in line 62; used 7 times
NUMBER defined in line 61; used 6 times
PAEXITED defined in line 41; used 3 times
PALLSTATES defined in line 44; used 1 times
PAWAITED defined in line 47; never used
PDIAG defined in line 50; used 2 times
PDUMPED defined in line 49; used 2 times
PFOREGND defined in line 48; used 7 times
PINTERRUPTED defined in line 53; used 4 times
PMAXLEN defined in line 58; used 4 times
PNEEDNOTE defined in line 55; used 5 times
PNEXITED defined in line 40; used 2 times
PNOTIFY defined in line 45; used 2 times
PNULL defined in line 57; used 15 times
PPOU defined in line 51; used 2 times
PPTIME defined in line 54; used 9 times
PREPORTED defined in line 52; used 3 times
PRUNNING defined in line 38; used 17 times
PSIGNALED defined in line 42; used 5 times
PSTOPPED defined in line 39; used 22 times
PTIME defined in line 46; used 6 times
REASON defined in line 63; used 8 times
SHELLDIR defined in line 66; used 2 times

Usage of this include

Last modified: 1985-06-06
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1298
Valid CSS Valid XHTML 1.0 Strict