Annotation of 3BSD/sys/h/user.h, revision 1.1.1.1

1.1       root        1: /*     user.h  2.1     1/5/80  */
                      2: 
                      3: #ifdef KERNEL
                      4: #include "../h/pcb.h"
                      5: #include "../h/dmap.h"
                      6: #else
                      7: #include <sys/pcb.h>
                      8: #include <sys/dmap.h>
                      9: #endif
                     10: /*
                     11:  * The user structure.
                     12:  * One allocated per process.
                     13:  * Contains all per process data
                     14:  * that doesn't need to be referenced
                     15:  * while the process is swapped.
                     16:  * The user block is UPAGES*512 bytes
                     17:  * long; resides at virtual kernel
                     18:  * loc 80040000; contains the system
                     19:  * stack per user; is cross referenced
                     20:  * with the proc structure for the
                     21:  * same process.
                     22:  */
                     23:  
                     24: #define        EXCLOSE 01
                     25:  
                     26: struct user
                     27: {
                     28:        struct  pcb u_pcb;              /* pcb, save area when exchanging stacks */
                     29:        label_t u_rsav;
                     30:        char    u_segflg;               /* IO flag: 0:user D; 1:system; 2:user I */
                     31:        char    u_error;                /* return error code */
                     32:        short   u_uid;                  /* effective user id */
                     33:        short   u_gid;                  /* effective group id */
                     34:        short   u_ruid;                 /* real user id */
                     35:        short   u_rgid;                 /* real group id */
                     36:        struct  proc *u_procp;          /* pointer to proc structure */
                     37:        int     *u_ap;                  /* pointer to arglist */
                     38:        union {                         /* syscall return values */
                     39:                struct  {
                     40:                        int     r_val1;
                     41:                        int     r_val2;
                     42:                };
                     43:                off_t   r_off;
                     44:                time_t  r_time;
                     45:        } u_r;
                     46:        caddr_t u_base;                 /* base address for IO */
                     47:        unsigned int u_count;           /* bytes remaining for IO */
                     48:        off_t   u_offset;               /* offset in file for IO */
                     49:        struct  inode *u_cdir;          /* pointer to inode of current directory */
                     50:        struct  inode *u_rdir;          /* root directory of current process */
                     51:        char    u_dbuf[DIRSIZ];         /* current pathname component */
                     52:        caddr_t u_dirp;                 /* pathname pointer */
                     53:        struct  direct u_dent;          /* current directory entry */
                     54:        struct  inode *u_pdir;          /* inode of parent directory of dirp */
                     55:        struct  file *u_ofile[NOFILE];  /* pointers to file structures of open files */
                     56:        char    u_pofile[NOFILE];       /* per-process flags of open files */
                     57:        int     u_arg[5];               /* arguments to current system call */
                     58:        label_t u_qsav;                 /* label variable for quits and interrupts */
                     59:        label_t u_ssav;                 /* label variable for swapping */
                     60:        int     u_signal[NSIG];         /* disposition of signals */
                     61:        time_t  u_utime;                /* this process user time */
                     62:        time_t  u_stime;                /* this process system time */
                     63:        time_t  u_cutime;               /* sum of childs' utimes */
                     64:        time_t  u_cstime;               /* sum of childs' stimes */
                     65:        int     *u_ar0;                 /* address of users saved R0 */
                     66:        struct uprof {                  /* profile arguments */
                     67:                short   *pr_base;       /* buffer base */
                     68:                unsigned pr_size;       /* buffer size */
                     69:                unsigned pr_off;        /* pc offset */
                     70:                unsigned pr_scale;      /* pc scaling */
                     71:        } u_prof;
                     72:        char    u_intflg;               /* catch intr from sys */
                     73:        char    u_sep;                  /* flag for I and D separation */
                     74:        struct  tty *u_ttyp;            /* controlling tty pointer */
                     75:        dev_t   u_ttyd;                 /* controlling tty dev */
                     76:        struct {                        /* header of executable file */
                     77:                int     ux_mag;         /* magic number */
                     78:                unsigned ux_tsize;      /* text size */
                     79:                unsigned ux_dsize;      /* data size */
                     80:                unsigned ux_bsize;      /* bss size */
                     81:                unsigned ux_ssize;      /* symbol table size */
                     82:                unsigned ux_entloc;     /* entry location */
                     83:                unsigned ux_unused;
                     84:                unsigned ux_relflg;
                     85:        } u_exdata;
                     86:        char    u_comm[DIRSIZ];
                     87:        time_t  u_start;
                     88:        char    u_acflag;
                     89:        short   u_fpflag;               /* unused now, will be later */
                     90:        short   u_cmask;                /* mask for file creation */
                     91:        size_t  u_tsize;                /* text size (clicks) */
                     92:        size_t  u_dsize;                /* data size (clicks) */
                     93:        size_t  u_ssize;                /* stack size (clicks) */
                     94:        int     u_nswap;                /* no times swapped */
                     95:        int     u_majorflt;             /* number of major faults */
                     96:        int     u_cnswap;               /* no times children swapped */
                     97:        int     u_cmajorflt;            /* no major faults in child */
                     98:        int     u_averss;               /* time average of resident set size */
                     99:        int     u_minorflt;             /* number of minor faults */
                    100:        struct  dmap u_dmap;            /* disk map for data segment */
                    101:        struct  dmap u_smap;            /* disk map for stack segment */
                    102:        struct  dmap u_cdmap, u_csmap;  /* shadows of u_dmap, u_smap, for
                    103:                                           use of parent during fork */
                    104:        int     u_ustklim;              /* max stack growth */
                    105:        char    u_uwantcore;            /* dump core even if large */
                    106:        time_t  u_outime;               /* user time at last sample */
                    107:        size_t  u_odsize;
                    108:        size_t  u_ossize;
                    109:        size_t  u_vrpages[NOFILE];      /* number vread pages hanging on fd */
                    110:        int     u_stack[1];
                    111: 
                    112:                                        /*
                    113:                                         * kernel stack per user
                    114:                                         * extends from u + UPAGES*512
                    115:                                         * backward not to reach here
                    116:                                         */
                    117: };
                    118: 
                    119: /* u_error codes */
                    120: #define        EPERM   1
                    121: #define        ENOENT  2
                    122: #define        ESRCH   3
                    123: #define        EINTR   4
                    124: #define        EIO     5
                    125: #define        ENXIO   6
                    126: #define        E2BIG   7
                    127: #define        ENOEXEC 8
                    128: #define        EBADF   9
                    129: #define        ECHILD  10
                    130: #define        EAGAIN  11
                    131: #define        ENOMEM  12
                    132: #define        EACCES  13
                    133: #define        EFAULT  14
                    134: #define        ENOTBLK 15
                    135: #define        EBUSY   16
                    136: #define        EEXIST  17
                    137: #define        EXDEV   18
                    138: #define        ENODEV  19
                    139: #define        ENOTDIR 20
                    140: #define        EISDIR  21
                    141: #define        EINVAL  22
                    142: #define        ENFILE  23
                    143: #define        EMFILE  24
                    144: #define        ENOTTY  25
                    145: #define        ETXTBSY 26
                    146: #define        EFBIG   27
                    147: #define        ENOSPC  28
                    148: #define        ESPIPE  29
                    149: #define        EROFS   30
                    150: #define        EMLINK  31
                    151: #define        EPIPE   32
                    152: #define        EDOM    33
                    153: #define        ERANGE  34
                    154: 
                    155: #ifdef KERNEL
                    156: extern struct user u;
                    157: extern struct user swaputl;
                    158: extern struct user forkutl;
                    159: extern struct user xswaputl;
                    160: extern struct user xswap2utl;
                    161: extern struct user pushutl;
                    162: extern struct user vfutl;
                    163: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.