|
|
1.1 root 1: /* (-lgl
2: * COHERENT Version 3.0
3: * Copyright (c) 1982, 1990 by Mark Williams Company.
4: * All rights reserved. May not be copied without permission.
5: -lgl) */
6: /*
7: * The user process area.
8: */
9:
10: #ifndef UPROC_H
11: #define UPROC_H UPROC_H
12:
13: #include <sys/param.h>
14: #include <sys/types.h>
15: #include <sys/machine.h>
16: #include <sys/dir.h>
17: #include <sys/io.h>
18: #include <sys/proc.h>
19: #include <signal.h>
20:
21: /*
22: * Open segment structure.
23: */
24: typedef struct sr {
25: int sr_flag; /* Flags for this reference */
26: vaddr_t sr_base; /* Virtual address base */
27: vaddr_t sr_size; /* Mapped in window size */
28: struct seg *sr_segp; /* Segment pointer */
29: } SR;
30:
31: /*
32: * Flags (sr_flag).
33: */
34: #define SRFPMAP 01 /* Segment is mapped in process */
35: #define SRFDUMP 02 /* Dump segment */
36: #define SRFDATA 04 /* Data segment */
37:
38: /*
39: * User process structure.
40: */
41: typedef struct uproc {
42: char u_error; /* Error number (must be first) */
43: char u_flag; /* Flags (for accounting) */
44: int u_uid; /* User id */
45: int u_gid; /* Group id */
46: int u_ruid; /* Real user id */
47: int u_rgid; /* Real group id */
48: unsigned u_umask; /* Mask for file creation */
49: struct inode *u_cdir; /* Current working directory */
50: struct inode *u_rdir; /* Current root directory */
51: struct fd *u_filep[NUFILE]; /* Open files */
52: struct sr u_segl[NUSEG]; /* User segment descriptions */
53: int (*u_sfunc[NSIG])(); /* Signal functions */
54:
55: /*
56: * System working area.
57: */
58: struct seg *u_sege[NUSEG]; /* Exec segment descriptors */
59: MPROTO u_sproto; /* User prototype */
60: MCON u_syscon; /* System context save */
61: MENV u_sigenv; /* Signal return */
62: MGEN u_sysgen; /* General purpose area */
63: int u_args[(MSASIZE*sizeof(char)+sizeof(int)-1)/sizeof(int)];
64: struct io u_io; /* User area I/O template */
65:
66: /*
67: * Set by ftoi.
68: */
69: ino_t u_cdirn; /* Child inode number */
70: struct inode *u_cdiri; /* Child inode pointer */
71: struct inode *u_pdiri; /* Parent inode pointer */
72: struct direct u_direct; /* Directory name */
73:
74: /*
75: * Accounting fields.
76: */
77: char u_comm[10]; /* Command name */
78: time_t u_btime; /* Beginning time of process */
79: int u_memuse; /* Average memory usage */
80: long u_block; /* Count of disk blocks */
81:
82: /*
83: * Profiler fields.
84: */
85: vaddr_t u_ppc; /* Profile pc from clock */
86: vaddr_t u_pbase; /* Profiler base */
87: vaddr_t u_pbend; /* Profiler base end */
88: vaddr_t u_pofft; /* Offset from base */
89: vaddr_t u_pscale; /* Scaling factor */
90:
91: /*
92: * Miscellaneous things.
93: */
94: int u_argc; /* Argument count (for ps) */
95: unsigned u_argp; /* Offset of argv[0] (for ps) */
96: int u_signo; /* Signal number (for debugger) */
97: } UPROC;
98:
99: #ifdef KERNEL
100: /*
101: * Current user area.
102: */
103: extern UPROC u;
104:
105: #endif
106:
107: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.