|
|
1.1 root 1: /* (-lgl
2: * COHERENT Version 4.0
3: * Copyright (c) 1982, 1992 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/dir.h>
16: #include <sys/io.h>
17: #include <sys/proc.h>
18: #include <signal.h>
19:
20: #ifdef _I386
21: #include <sys/reg.h>
22: #else
23: #include <sys/machine.h>
24: #endif
25: /*
26: * Open segment structure.
27: */
28: typedef struct sr {
29: int sr_flag; /* Flags for this reference */
30: vaddr_t sr_base; /* Virtual address base */
31: #ifdef _I386
32: off_t sr_size; /* Mapped in window size */
33: #else
34: vaddr_t sr_size; /* Mapped in window size */
35: #endif
36: struct seg *sr_segp; /* Segment pointer */
37: } SR;
38:
39: /*
40: * Flags (sr_flag).
41: */
42: #define SRFPMAP 01 /* Segment is mapped in process */
43: #define SRFDUMP 02 /* Dump segment */
44: #define SRFDATA 04 /* Data segment */
45:
46: /*
47: * User process structure.
48: *
49: * Remember to update UPROC_VERSION whenever you change this struct.
50: */
51: typedef struct uproc {
52: #ifdef _I386
53: /* Magic number UPROC_VERSION identifies this uproc struct. */
54: #define UPROC_VERSION 0x0101
55: unsigned short u_version; /* Version number for uproc struct */
56: #endif /* _I386 */
57: char u_error; /* Error number (must be first) */
58: char u_flag; /* Flags (for accounting) */
59: int u_uid; /* User id */
60: int u_gid; /* Group id */
61: int u_ruid; /* Real user id */
62: int u_rgid; /* Real group id */
63: unsigned u_umask; /* Mask for file creation */
64: struct inode *u_cdir; /* Current working directory */
65: struct inode *u_rdir; /* Current root directory */
66: struct fd *u_filep[NUFILE]; /* Open files */
67: struct sr u_segl[NUSEG]; /* User segment descriptions */
68: #ifdef _I386
69: int (*u_sfunc[MAXSIG])(); /* Signal functions */
70: #else
71: int (*u_sfunc[NSIG])(); /* Signal functions */
72: #endif
73:
74: /*
75: * System working area.
76: */
77: struct seg *u_sege[NUSEG]; /* Exec segment descriptors */
78: MPROTO u_sproto; /* User prototype */
79: MCON u_syscon; /* System context save */
80: MENV u_sigenv; /* Signal return */
81: MGEN u_sysgen; /* General purpose area */
82: #ifdef _I386
83: int u_args[MSACOUNT];
84: #else
85: int u_args[(MSASIZE*sizeof(char)+sizeof(int)-1)/sizeof(int)];
86: #endif
87: struct io u_io; /* User area I/O template */
88:
89: /*
90: * Set by ftoi.
91: */
92: ino_t u_cdirn; /* Child inode number */
93: struct inode *u_cdiri; /* Child inode pointer */
94: struct inode *u_pdiri; /* Parent inode pointer */
95: struct direct u_direct; /* Directory name */
96:
97: /*
98: * Accounting fields.
99: */
100: char u_comm[10]; /* Command name */
101: #ifdef _I386
102: char u_sleep[10]; /* Reason for sleeping */
103: #endif
104: time_t u_btime; /* Beginning time of process */
105: int u_memuse; /* Average memory usage */
106: long u_block; /* Count of disk blocks */
107:
108: /*
109: * Profiler fields.
110: */
111: vaddr_t u_ppc; /* Profile pc from clock */
112: vaddr_t u_pbase; /* Profiler base */
113: vaddr_t u_pbend; /* Profiler base end */
114: #ifdef _I386
115: off_t u_pofft; /* Offset from base */
116: off_t u_pscale; /* Scaling factor */
117: #else
118: vaddr_t u_pofft; /* Offset from base */
119: vaddr_t u_pscale; /* Scaling factor */
120: #endif
121:
122: /*
123: * Miscellaneous things.
124: */
125: int u_argc; /* Argument count (for ps) */
126: unsigned u_argp; /* Offset of argv[0] (for ps) */
127: int u_signo; /* Signal number (for debugger) */
128: #ifdef _I386
129: int *u_regl;
130: int u_rval2;
131: void (*u_sigreturn)();
132: #endif
133: } UPROC;
134:
135: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.