- int u_arg[5]; /* arguments to current system call */
- label_t u_qsav; /* for non-local gotos on interrupts */
- char u_segflg; /* 0:user D; 1:system; 2:user I */
- char u_error; /* return error code */
- short u_uid; /* effective user id */
- short u_gid; /* effective group id */
- int u_grps[NGRPS/(sizeof(int)*8)];
- /* group bit array */
- short u_ruid; /* real user id */
- short u_rgid; /* real group id */
- struct proc *u_procp; /* pointer to proc structure */
- int *u_ap; /* pointer to arglist */
- 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;
- caddr_t u_base; /* base address for IO */
- unsigned int u_count; /* bytes remaining for IO */
- off_t u_offset; /* offset in file for IO */
- struct inode *u_cdir; /* pointer to inode of current directory */
- struct inode *u_rdir; /* root directory of current process */
- caddr_t u_dirp; /* pathname pointer */
- struct direct u_dent; /* current directory entry */
- struct inode *u_pdir; /* inode of parent directory of dirp */
- struct file *u_ofile[NOFILE]; /* pointers to file structures of open files */
- char u_pofile[NOFILE]; /* per-process flags of open files */
-#define EXCLOSE 01 /* auto-close on exec */
- label_t u_ssav; /* label variable for swapping */
- int (*u_signal[NSIG])(); /* disposition of signals */
- int u_code; /* ``code'' to trap */
-/* on SIGILL code passes compatibility mode fault address */
-/* on SIGFPE code passes more specific kind of floating point fault */
- int *u_ar0; /* address of users saved R0 */
- struct uprof { /* profile arguments */
- short *pr_base; /* buffer base */
- unsigned pr_size; /* buffer size */
- unsigned pr_off; /* pc offset */
- unsigned pr_scale; /* pc scaling */
- } u_prof;
- char u_eosys; /* special action on end of syscall */
- char u_sep; /* flag for I and D separation */
- struct tty *u_ttyp; /* controlling tty pointer */
- dev_t u_ttyd; /* controlling tty dev */
- union {
- struct { /* header of executable file */
- int Ux_mag; /* magic number */
- unsigned Ux_tsize; /* text size */
- unsigned Ux_dsize; /* data size */
- unsigned Ux_bsize; /* bss size */
- unsigned Ux_ssize; /* symbol table size */
- unsigned Ux_entloc; /* entry location */
- unsigned Ux_unused;
- unsigned Ux_relflg;
- } Ux_A;
- char ux_shell[SHSIZE]; /* #! and name of interpreter */
- } u_exdata;
-#define ux_mag Ux_A.Ux_mag
-#define ux_tsize Ux_A.Ux_tsize
-#define ux_dsize Ux_A.Ux_dsize
-#define ux_bsize Ux_A.Ux_bsize
-#define ux_ssize Ux_A.Ux_ssize
-#define ux_entloc Ux_A.Ux_entloc
-#define ux_unused Ux_A.Ux_unused
-#define ux_relflg Ux_A.Ux_relflg