Home  | Linux-2.6.18  | FreeBSD-8.0  | NetBSD-5.99.15  | OpenBSD-4.6  | Hurd-0.3  | OpenSolaris  | 4.3 BSD  | UNIX V7 

root/h/user.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   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

/* [previous][next][first][last][top][bottom][index][help] */