home *** CD-ROM | disk | FTP | other *** search
- /*
- * The user structure.
- * One allocated per process.
- * Contains all per process data
- * that doesn't need to be referenced
- * while the process is swapped.
- * The user block is USIZE*64 bytes
- * long; resides at virtual kernel
- * loc 140000; contains the system
- * stack per user; is cross referenced
- * with the proc structure for the
- * same process.
- */
- struct user
- {
- int u_rsav[2]; /* save r5,r6 when exchanging stacks */
- int u_fsav[25]; /* save fp registers */
- /* rsav and fsav must be first in structure */
- char u_segflg; /* flag for IO; user or kernel space */
- char u_error; /* return error code */
- char u_uid; /* effective user id */
- char u_gid; /* effective group id */
- char u_ruid; /* real user id */
- char u_rgid; /* real group id */
- int u_procp; /* pointer to proc structure */
- char *u_base; /* base address for IO */
- char *u_count; /* bytes remaining for IO */
- char *u_offset[2]; /* offset in file for IO */
- int *u_cdir; /* pointer to inode of current directory */
- char u_dbuf[DIRSIZ]; /* current pathname component */
- char *u_dirp; /* current pointer to inode */
- struct { /* current directory entry */
- int u_ino;
- char u_name[DIRSIZ];
- } u_dent;
- int *u_pdir; /* inode of parent directory of dirp */
- int u_uisa[16]; /* prototype of segmentation addresses */
- int u_uisd[16]; /* prototype of segmentation descriptors */
- int u_ofile[NOFILE]; /* pointers to file structures of open files */
- int u_arg[5]; /* arguments to current system call */
- int u_tsize; /* text size (*64) */
- int u_dsize; /* data size (*64) */
- int u_ssize; /* stack size (*64) */
- int u_sep; /* flag for I and D separation */
- int u_qsav[2]; /* label variable for quits and interrupts */
- int u_ssav[2]; /* label variable for swapping */
- int u_signal[NSIG]; /* disposition of signals */
- int u_utime; /* this process user time */
- int u_stime; /* this process system time */
- int u_cutime[2]; /* sum of childs' utimes */
- int u_cstime[2]; /* sum of childs' stimes */
- int *u_ar0; /* address of users saved R0 */
- int u_prof[4]; /* profile arguments */
- char u_intflg; /* catch intr from sys */
- /* kernel stack per user
- * extends from u + USIZE*64
- * backward not to reach here
- */
- } u;
-
- /* u_error codes */
- #define EFAULT 106
- #define EPERM 1
- #define ENOENT 2
- #define ESRCH 3
- #define EINTR 4
- #define EIO 5
- #define ENXIO 6
- #define E2BIG 7
- #define ENOEXEC 8
- #define EBADF 9
- #define ECHILD 10
- #define EAGAIN 11
- #define ENOMEM 12
- #define EACCES 13
- #define ENOTBLK 15
- #define EBUSY 16
- #define EEXIST 17
- #define EXDEV 18
- #define ENODEV 19
- #define ENOTDIR 20
- #define EISDIR 21
- #define EINVAL 22
- #define ENFILE 23
- #define EMFILE 24
- #define ENOTTY 25
- #define ETXTBSY 26
- #define EFBIG 27
- #define ENOSPC 28
- #define ESPIPE 29
- #define EROFS 30
- #define EMLINK 31
- #define EPIPE 32
-