|
|
1.1 ! root 1: /* (-lgl ! 2: * COHERENT Version 4.0 ! 3: * Copyright (c) 1982, 1992 by Mark Williams Company. ! 4: * All rights reserved. May not be copied without permission. ! 5: -lgl) */ ! 6: /* ! 7: * The user process area. ! 8: */ ! 9: ! 10: #ifndef UPROC_H ! 11: #define UPROC_H UPROC_H ! 12: ! 13: #include <sys/param.h> ! 14: #include <sys/types.h> ! 15: #include <dirent.h> ! 16: #include <sys/io.h> ! 17: #include <sys/proc.h> ! 18: #include <signal.h> ! 19: ! 20: #ifdef _I386 ! 21: #include <sys/reg.h> ! 22: #include <ieeefp.h> ! 23: #else ! 24: #include <sys/machine.h> ! 25: #endif ! 26: /* ! 27: * Open segment structure. ! 28: */ ! 29: typedef struct sr { ! 30: int sr_flag; /* Flags for this reference */ ! 31: vaddr_t sr_base; /* Virtual address base */ ! 32: #ifdef _I386 ! 33: off_t sr_size; /* Mapped in window size */ ! 34: #else ! 35: vaddr_t sr_size; /* Mapped in window size */ ! 36: #endif ! 37: struct seg *sr_segp; /* Segment pointer */ ! 38: } SR; ! 39: ! 40: /* ! 41: * Flags (sr_flag). ! 42: */ ! 43: #define SRFPMAP 01 /* Segment is mapped in process */ ! 44: #define SRFDUMP 02 /* Dump segment */ ! 45: #define SRFDATA 04 /* Data segment */ ! 46: ! 47: /* ! 48: * User process structure. ! 49: * ! 50: * Remember to update UPROC_VERSION whenever you change this struct. ! 51: * ! 52: * U_OFFSET is the byte offset of uproc within segment SIUSERP. ! 53: * See also the definition of "u" at start of as.s. ! 54: */ ! 55: #define U_OFFSET 0xC00 ! 56: #define U_COMM_LEN 10 ! 57: ! 58: typedef struct uproc { ! 59: #ifdef _I386 ! 60: /* Magic number UPROC_VERSION identifies this uproc struct. */ ! 61: #define UPROC_VERSION 0x0104 ! 62: unsigned short u_version; /* Version number for uproc struct */ ! 63: #endif /* _I386 */ ! 64: char u_error; /* Error number (must be first) */ ! 65: char u_flag; /* Flags (for accounting) */ ! 66: int u_uid; /* User id */ ! 67: int u_gid; /* Group id */ ! 68: int u_ruid; /* Real user id */ ! 69: int u_rgid; /* Real group id */ ! 70: int u_euid; /* Effective user id */ ! 71: int u_egid; /* Effective group id */ ! 72: unsigned u_umask; /* Mask for file creation */ ! 73: struct inode *u_cdir; /* Current working directory */ ! 74: struct inode *u_rdir; /* Current root directory */ ! 75: struct fd *u_filep[NOFILE]; /* Open files */ ! 76: struct sr u_segl[NUSEG]; /* User segment descriptions */ ! 77: #ifdef _I386 ! 78: int (*u_sfunc[MAXSIG])(); /* Signal functions */ ! 79: #else ! 80: int (*u_sfunc[NSIG])(); /* Signal functions */ ! 81: #endif ! 82: ! 83: /* ! 84: * System working area. ! 85: */ ! 86: struct seg *u_sege[NUSEG]; /* Exec segment descriptors */ ! 87: MPROTO u_sproto; /* User prototype */ ! 88: MCON u_syscon; /* System context save */ ! 89: MENV u_sigenv; /* Signal return */ ! 90: MGEN u_sysgen; /* General purpose area */ ! 91: #ifdef _I386 ! 92: int u_args[MSACOUNT]; ! 93: #else ! 94: int u_args[(MSASIZE*sizeof(char)+sizeof(int)-1)/sizeof(int)]; ! 95: #endif ! 96: struct io u_io; /* User area I/O template */ ! 97: ! 98: /* ! 99: * Set by ftoi. ! 100: */ ! 101: ino_t u_cdirn; /* Child inode number */ ! 102: struct inode *u_cdiri; /* Child inode pointer */ ! 103: struct inode *u_pdiri; /* Parent inode pointer */ ! 104: struct direct u_direct; /* Directory name */ ! 105: ! 106: /* ! 107: * Accounting fields. ! 108: */ ! 109: char u_comm[U_COMM_LEN]; /* Command name */ ! 110: #ifdef _I386 ! 111: char u_sleep[10]; /* Reason for sleeping */ ! 112: #endif ! 113: time_t u_btime; /* Beginning time of process */ ! 114: int u_memuse; /* Average memory usage */ ! 115: long u_block; /* Count of disk blocks */ ! 116: ! 117: /* ! 118: * Profiler fields. ! 119: */ ! 120: vaddr_t u_ppc; /* Profile pc from clock */ ! 121: vaddr_t u_pbase; /* Profiler base */ ! 122: vaddr_t u_pbend; /* Profiler base end */ ! 123: #ifdef _I386 ! 124: off_t u_pofft; /* Offset from base */ ! 125: off_t u_pscale; /* Scaling factor */ ! 126: #else ! 127: vaddr_t u_pofft; /* Offset from base */ ! 128: vaddr_t u_pscale; /* Scaling factor */ ! 129: #endif ! 130: ! 131: /* ! 132: * Miscellaneous things. ! 133: */ ! 134: int u_argc; /* Argument count (for ps) */ ! 135: unsigned u_argp; /* Offset of argv[0] (for ps) */ ! 136: int u_signo; /* Signal number (for debugger) */ ! 137: #ifdef _I386 ! 138: int *u_regl; ! 139: int u_rval2; ! 140: void (*u_sigreturn)(); ! 141: struct _fpstate u_ndpCon; /* ndp state */ ! 142: int u_ndpFlags; ! 143: #endif ! 144: } UPROC; ! 145: ! 146: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.