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

E2BIG defined in line 108; used 1 times
EACCES defined in line 114; used 3 times
EAGAIN defined in line 112; used 1 times
EBADF defined in line 110; used 3 times
EBUSY defined in line 117; used 5 times
ECHILD defined in line 111; used 1 times
EDOM defined in line 134; never used
EEXIST defined in line 118; used 3 times
EFBIG defined in line 128; used 2 times
EINTR defined in line 105; used 1 times
EIO defined in line 106; used 7 times
EISDIR defined in line 122; used 1 times
EMFILE defined in line 125; used 1 times
EMLINK defined in line 132; never used
ENFILE defined in line 124; used 2 times
ENODEV defined in line 120; used 1 times
ENOENT defined in line 103; used 2 times
ENOEXEC defined in line 109; used 2 times
ENOMEM defined in line 113; used 5 times
ENOSPC defined in line 129; used 2 times
ENOTBLK defined in line 116; used 1 times
ENOTDIR defined in line 121; used 3 times
ENOTTY defined in line 126; used 6 times
EPERM defined in line 102; used 1 times
EPIPE defined in line 133; used 1 times
ERANGE defined in line 135; never used
EROFS defined in line 131; used 1 times
ESPIPE defined in line 130; used 1 times
ESRCH defined in line 104; used 2 times
ETXTBSY defined in line 127; used 3 times
EXCLOSE defined in line 15; used 4 times
EXDEV defined in line 119; used 1 times

Usage of this include

Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 965
Valid CSS Valid XHTML 1.0 Strict