added subroutine setfile to make changing input files easy;
[unix-history] / usr / src / bin / csh / proc.h
CommitLineData
0b076053
BJ
1/* proc.h 4.1 %G% */
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 */
15struct 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
68struct process proclist; /* list head of all processes */
69bool pnoprocesses; /* pchild found nothing to wait for */
70
71struct process *pholdjob; /* one level stack of current jobs */
72
73struct process *pcurrjob; /* current job */
74struct process *pcurrent; /* current job in table */
75struct process *pprevious; /* previous job in table */
76
77short pmaxindex; /* current maximum job index */
78
79bool timesdone; /* shtimes buffer full ? */
80
81int psigint();
82struct process *pgetcurr();
83struct process *plookup();
84struct process *pfind();