1: /*
2: * The user structure.
3: * One allocated per process.
4: * Contains all per process data
5: * that doesn't need to be referenced
6: * while the process is swapped.
7: * The user block is USIZE*64 bytes
8: * long; resides at virtual kernel
9: * loc 140000; contains the system
10: * stack per user; is cross referenced
11: * with the proc structure for the
12: * same process.
13: */
14:
15: #define EXCLOSE 01
16:
17: struct user
18: {
19: label_t u_rsav; /* save info when exchanging stacks */
20: int u_fper; /* FP error register */
21: int u_fpsaved; /* FP regs saved for this proc */
22: struct {
23: int u_fpsr; /* FP status register */
24: double u_fpregs[6]; /* FP registers */
25: } u_fps;
26: char u_segflg; /* IO flag: 0:user D; 1:system; 2:user I */
27: char u_error; /* return error code */
28: short u_uid; /* effective user id */
29: short u_gid; /* effective group id */
30: short u_ruid; /* real user id */
31: short u_rgid; /* real group id */
32: struct proc *u_procp; /* pointer to proc structure */
33: int *u_ap; /* pointer to arglist */
34: union { /* syscall return values */
35: struct {
36: int r_val1;
37: int r_val2;
38: };
39: off_t r_off;
40: time_t r_time;
41: } u_r;
42: caddr_t u_base; /* base address for IO */
43: unsigned int u_count; /* bytes remaining for IO */
44: off_t u_offset; /* offset in file for IO */
45: struct inode *u_cdir; /* pointer to inode of current directory */
46: struct inode *u_rdir; /* root directory of current process */
47: char u_dbuf[DIRSIZ]; /* current pathname component */
48: caddr_t u_dirp; /* pathname pointer */
49: struct direct u_dent; /* current directory entry */
50: struct inode *u_pdir; /* inode of parent directory of dirp */
51: int u_uisa[16]; /* prototype of segmentation addresses */
52: int u_uisd[16]; /* prototype of segmentation descriptors */
53: struct file *u_ofile[NOFILE]; /* pointers to file structures of open files */
54: char u_pofile[NOFILE]; /* per-process flags of open files */
55: int u_arg[5]; /* arguments to current system call */
56: unsigned u_tsize; /* text size (clicks) */
57: unsigned u_dsize; /* data size (clicks) */
58: unsigned u_ssize; /* stack size (clicks) */
59: label_t u_qsav; /* label variable for quits and interrupts */
60: label_t u_ssav; /* label variable for swapping */
61: int u_signal[NSIG]; /* disposition of signals */
62: time_t u_utime; /* this process user time */
63: time_t u_stime; /* this process system time */
64: time_t u_cutime; /* sum of childs' utimes */
65: time_t u_cstime; /* sum of childs' stimes */
66: int *u_ar0; /* address of users saved R0 */
67: struct { /* profile arguments */
68: short *pr_base; /* buffer base */
69: unsigned pr_size; /* buffer size */
70: unsigned pr_off; /* pc offset */
71: unsigned pr_scale; /* pc scaling */
72: } u_prof;
73: char u_intflg; /* catch intr from sys */
74: char u_sep; /* flag for I and D separation */
75: struct tty *u_ttyp; /* controlling tty pointer */
76: dev_t u_ttyd; /* controlling tty dev */
77: struct { /* header of executable file */
78: int ux_mag; /* magic number */
79: unsigned ux_tsize; /* text size */
80: unsigned ux_dsize; /* data size */
81: unsigned ux_bsize; /* bss size */
82: unsigned ux_ssize; /* symbol table size */
83: unsigned ux_entloc; /* entry location */
84: unsigned ux_unused;
85: unsigned ux_relflg;
86: } u_exdata;
87: char u_comm[DIRSIZ];
88: time_t u_start;
89: char u_acflag;
90: short u_fpflag; /* unused now, will be later */
91: short u_cmask; /* mask for file creation */
92: int u_stack[1];
93: /* kernel stack per user
94: * extends from u + USIZE*64
95: * backward not to reach here
96: */
97: };
98:
99: extern struct user u;
100:
101: /* u_error codes */
102: #define EPERM 1
103: #define ENOENT 2
104: #define ESRCH 3
105: #define EINTR 4
106: #define EIO 5
107: #define ENXIO 6
108: #define E2BIG 7
109: #define ENOEXEC 8
110: #define EBADF 9
111: #define ECHILD 10
112: #define EAGAIN 11
113: #define ENOMEM 12
114: #define EACCES 13
115: #define EFAULT 14
116: #define ENOTBLK 15
117: #define EBUSY 16
118: #define EEXIST 17
119: #define EXDEV 18
120: #define ENODEV 19
121: #define ENOTDIR 20
122: #define EISDIR 21
123: #define EINVAL 22
124: #define ENFILE 23
125: #define EMFILE 24
126: #define ENOTTY 25
127: #define ETXTBSY 26
128: #define EFBIG 27
129: #define ENOSPC 28
130: #define ESPIPE 29
131: #define EROFS 30
132: #define EMLINK 31
133: #define EPIPE 32
134: #define EDOM 33
135: #define ERANGE 34
Defined struct's
user
defined in line
17; used 8 times
Defined macros
EDOM
defined in line
134;
never used
EIO
defined in line
106; used 7 times
ENXIO
defined in line
107; used 32 times
- in /usr/sys/dev/cat.c line
35
- in /usr/sys/dev/dc.c line
106
- in /usr/sys/dev/dh.c line
88
- in /usr/sys/dev/dn.c line
37
- in /usr/sys/dev/du.c line
64
- in /usr/sys/dev/dz.c line
54
- in /usr/sys/dev/ht.c line
93,
101,
153
- in /usr/sys/dev/kl.c line
48
- in /usr/sys/dev/mem.c line
36,
65
- in /usr/sys/dev/mx1.c line
203,
456,
487
- in /usr/sys/dev/mx2.c line
73,
229,
315,
371,
467,
611,
631
- in /usr/sys/dev/pk1.c line
106
- in /usr/sys/dev/rl.c line
67
- in /usr/sys/dev/sys.c line
15
- in /usr/sys/dev/tm.c line
65,
76-80(2)
- in /usr/sys/dev/tty.c line
195
- in /usr/sys/dev/vp.c line
60
- in /usr/sys/sys/fio.c line
128
- in /usr/sys/sys/sys3.c line
252
Usage of this include