|
|
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: * /usr/include/sys/uproc.h
8: *
9: * The user process area.
10: *
11: * Revised: Wed May 26 16:45:05 1993 CDT
12: */
13:
14: #ifndef __SYS_UPROC_H__
15: #define __SYS_UPROC_H__
16:
17: #include <common/feature.h>
18: #include <common/_time.h>
19: #include <kernel/sigproc.h>
20: #if _I386
21: #include <kernel/reg.h>
22: #include <kernel/param.h>
23: #include <ieeefp.h>
24: #else
25: #include <kernel/machine.h>
26: #include <kernel/const.h>
27: #endif
28: #include <sys/types.h>
29: #include <dirent.h>
30: #include <sys/io.h>
31: #include <sys/proc.h>
32:
33: /*
34: * NIGEL: This is a quick hack; we have removed the definition of the old
35: * "struct direct" from anywhere that user code can see. We are still using
36: * this for the kernel pending development of proper layering in the file-
37: * system interface.
38: */
39:
40: #if ! DIRSIZ
41: # define DIRSIZ 14
42: #endif
43:
44: struct direct {
45: ino_t d_ino;
46: char d_name [DIRSIZ];
47: };
48:
49:
50: /*
51: * User process structure.
52: *
53: * Remember to update UPROC_VERSION whenever you change this struct.
54: *
55: * U_OFFSET is the byte offset of uproc within segment SIUSERP.
56: * See also the definition of "u" at start of as.s.
57: */
58: #define U_OFFSET 0xB00
59: #define U_COMM_LEN 10
60: #define U_SLEEP_LEN 10
61:
62: typedef struct uproc {
63: #if _I386
64: /* Magic number UPROC_VERSION identifies this uproc struct. */
65: #define UPROC_VERSION 0x0107
66: unsigned short u_version; /* Version number for uproc struct */
67: #endif /* _I386 */
68: int u_error; /* Error number (must be first) */
69: char u_flag; /* Flags (for accounting) */
70: int u_uid; /* User id */
71: int u_gid; /* Group id */
72: int u_ruid; /* Real user id */
73: int u_rgid; /* Real group id */
74: int u_euid; /* Effective user id */
75: int u_egid; /* Effective group id */
76: unsigned u_umask; /* Mask for file creation */
77: struct inode *u_cdir; /* Current working directory */
78: struct inode *u_rdir; /* Current root directory */
79: struct __tagged_fd
80: * u_filep[NOFILE]; /* Open files */
81: struct sr u_segl[NUSEG]; /* User segment descriptions */
82:
83: __sigaction_t u_sigact [NSIG];/* Signal action information */
84:
85: /*
86: * System working area.
87: */
88: struct seg *u_sege[NUSEG]; /* Exec segment descriptors */
89: MPROTO u_sproto; /* User prototype */
90: MCON u_syscon; /* System context save */
91: MENV u_sigenv; /* Signal return */
92: MGEN u_sysgen; /* General purpose area */
93: #if 0
94: int u_args [MSACOUNT];
95: struct io u_io; /* User area I/O template */
96: struct direct u_direct; /* Directory name */
97: #endif
98: #if ! _I386
99: int u_args [__DIVIDE_ROUNDUP_CONST (MSASIZE, sizeof (int)];
100: #endif
101:
102: /*
103: * Set by ftoi.
104: */
105:
106: ino_t u_cdirn; /* Child inode number */
107: struct inode *u_cdiri; /* Child inode pointer */
108: struct inode *u_pdiri; /* Parent inode pointer */
109:
110: /*
111: * Accounting fields.
112: */
113: char u_comm[U_COMM_LEN]; /* Command name */
114: #if _I386
115: char u_sleep[U_SLEEP_LEN]; /* Reason for sleeping */
116: #endif
117: time_t u_btime; /* Beginning time of process */
118: int u_memuse; /* Average memory usage */
119: long u_block; /* Count of disk blocks */
120:
121: /*
122: * Profiler fields.
123: */
124: caddr_t u_ppc; /* Profile pc from clock */
125: caddr_t u_pbase; /* Profiler base */
126: caddr_t u_pbend; /* Profiler base end */
127: #if _I386
128: off_t u_pofft; /* Offset from base */
129: off_t u_pscale; /* Scaling factor */
130: #else
131: vaddr_t u_pofft; /* Offset from base */
132: vaddr_t u_pscale; /* Scaling factor */
133: #endif
134:
135: /*
136: * Miscellaneous things.
137: */
138: int u_argc; /* Argument count (for ps) */
139: unsigned u_argp; /* Offset of argv[0] (for ps) */
140: int u_signo; /* Signal number (for debugger) */
141: #if _I386
142: #if 0
143: int *u_regl;
144: #endif
145: int u_rval2;
146: __sigfunc_t u_sigreturn;
147: union _fpcontext u_ndpCon; /* ndp state */
148: int u_ndpFlags;
149: int u_bpfmax; /* max blocks per file */
150:
151: char u_nigel [32]; /* for STREAMS */
152: #endif
153: } UPROC;
154:
155: #endif /* ! defined (__SYS_UPROC_H__) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.