- struct proc *u_procp; /* pointer to proc structure */
- int *u_ar0; /* address of users saved R0 */
- char u_comm[MAXCOMLEN + 1];
-
-/* syscall parameters, results and catches */
- int u_arg[8]; /* arguments to current system call */
- int *u_ap; /* pointer to arglist */
- label_t u_qsave; /* for non-local gotos on interrupts */
- union { /* syscall return values */
- struct {
- int R_val1;
- int R_val2;
- } u_rv;
-#define r_val1 u_rv.R_val1
-#define r_val2 u_rv.R_val2
- off_t r_off;
- time_t r_time;
- } u_r;
- char u_error; /* return error code */
- char u_eosys; /* special action on end of syscall */
-
-/* 1.1 - processes and protection */
- uid_t u_uid; /* effective user id */
- uid_t u_ruid; /* real user id */
- gid_t u_gid; /* effective group id */
- gid_t u_rgid; /* real group id */
- gid_t u_groups[NGROUPS]; /* groups, 0 terminated */
-
-/* 1.2 - memory management */
- size_t u_tsize; /* text size (clicks) */
- size_t u_dsize; /* data size (clicks) */
- size_t u_ssize; /* stack size (clicks) */
- struct dmap u_dmap; /* disk map for data segment */
- struct dmap u_smap; /* disk map for stack segment */
- struct dmap u_cdmap, u_csmap; /* shadows of u_dmap, u_smap, for
- use of parent during fork */
- label_t u_ssave; /* label variable for swapping */
- size_t u_odsize, u_ossize; /* for (clumsy) expansion swaps */
- time_t u_outime; /* user time at last sample */
-
-/* 1.3 - signal management */
- int (*u_signal[NSIG])(); /* disposition of signals */
- int u_sigmask[NSIG]; /* signals to be blocked */
- int u_sigonstack; /* signals to take on sigstack */
- int u_sigintr; /* signals that interrupt syscalls */
- int u_oldmask; /* saved mask from before sigpause */
- int u_code; /* ``code'' to trap */
- struct sigstack u_sigstack; /* sp & on stack state variable */
-#define u_onstack u_sigstack.ss_onstack
-#define u_sigsp u_sigstack.ss_sp
-
-/* 1.4 - descriptor management */
- struct file *u_ofile[NOFILE]; /* file structures for open files */
- char u_pofile[NOFILE]; /* per-process flags of open files */
- int u_lastfile; /* high-water mark of u_ofile */
-#define UF_EXCLOSE 0x1 /* auto-close on exec */
-#define UF_MAPPED 0x2 /* mapped from device */
- struct inode *u_cdir; /* current directory */
- struct inode *u_rdir; /* root directory of current process */
- struct tty *u_ttyp; /* controlling tty pointer */
- dev_t u_ttyd; /* controlling tty dev */
- short u_cmask; /* mask for file creation */