|
|
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: * /usr/include/sys/uproc.h ! 8: * ! 9: * The user process area. ! 10: * ! 11: * Revised: Wed May 26 16:45:05 1993 CDT ! 12: */ ! 13: ! 14: #ifndef __SYS_UPROC_H__ ! 15: #define __SYS_UPROC_H__ ! 16: ! 17: #include <common/feature.h> ! 18: #include <common/_time.h> ! 19: #include <kernel/sigproc.h> ! 20: #if _I386 ! 21: #include <kernel/reg.h> ! 22: #include <kernel/param.h> ! 23: #include <ieeefp.h> ! 24: #else ! 25: #include <kernel/machine.h> ! 26: #include <kernel/const.h> ! 27: #endif ! 28: #include <sys/types.h> ! 29: #include <dirent.h> ! 30: #include <sys/io.h> ! 31: #include <sys/proc.h> ! 32: ! 33: /* ! 34: * NIGEL: This is a quick hack; we have removed the definition of the old ! 35: * "struct direct" from anywhere that user code can see. We are still using ! 36: * this for the kernel pending development of proper layering in the file- ! 37: * system interface. ! 38: */ ! 39: ! 40: #if ! DIRSIZ ! 41: # define DIRSIZ 14 ! 42: #endif ! 43: ! 44: struct direct { ! 45: ino_t d_ino; ! 46: char d_name [DIRSIZ]; ! 47: }; ! 48: ! 49: ! 50: /* ! 51: * User process structure. ! 52: * ! 53: * Remember to update UPROC_VERSION whenever you change this struct. ! 54: * ! 55: * U_OFFSET is the byte offset of uproc within segment SIUSERP. ! 56: * See also the definition of "u" at start of as.s. ! 57: */ ! 58: #define U_OFFSET 0xB00 ! 59: #define U_COMM_LEN 10 ! 60: #define U_SLEEP_LEN 10 ! 61: ! 62: typedef struct uproc { ! 63: #if _I386 ! 64: /* Magic number UPROC_VERSION identifies this uproc struct. */ ! 65: #define UPROC_VERSION 0x0107 ! 66: unsigned short u_version; /* Version number for uproc struct */ ! 67: #endif /* _I386 */ ! 68: int u_error; /* Error number (must be first) */ ! 69: char u_flag; /* Flags (for accounting) */ ! 70: int u_uid; /* User id */ ! 71: int u_gid; /* Group id */ ! 72: int u_ruid; /* Real user id */ ! 73: int u_rgid; /* Real group id */ ! 74: int u_euid; /* Effective user id */ ! 75: int u_egid; /* Effective group id */ ! 76: unsigned u_umask; /* Mask for file creation */ ! 77: struct inode *u_cdir; /* Current working directory */ ! 78: struct inode *u_rdir; /* Current root directory */ ! 79: struct __tagged_fd ! 80: * u_filep[NOFILE]; /* Open files */ ! 81: struct sr u_segl[NUSEG]; /* User segment descriptions */ ! 82: ! 83: __sigaction_t u_sigact [NSIG];/* Signal action information */ ! 84: ! 85: /* ! 86: * System working area. ! 87: */ ! 88: struct seg *u_sege[NUSEG]; /* Exec segment descriptors */ ! 89: MPROTO u_sproto; /* User prototype */ ! 90: MCON u_syscon; /* System context save */ ! 91: MENV u_sigenv; /* Signal return */ ! 92: MGEN u_sysgen; /* General purpose area */ ! 93: #if 0 ! 94: int u_args [MSACOUNT]; ! 95: struct io u_io; /* User area I/O template */ ! 96: struct direct u_direct; /* Directory name */ ! 97: #endif ! 98: #if ! _I386 ! 99: int u_args [__DIVIDE_ROUNDUP_CONST (MSASIZE, sizeof (int)]; ! 100: #endif ! 101: ! 102: /* ! 103: * Set by ftoi. ! 104: */ ! 105: ! 106: ino_t u_cdirn; /* Child inode number */ ! 107: struct inode *u_cdiri; /* Child inode pointer */ ! 108: struct inode *u_pdiri; /* Parent inode pointer */ ! 109: ! 110: /* ! 111: * Accounting fields. ! 112: */ ! 113: char u_comm[U_COMM_LEN]; /* Command name */ ! 114: #if _I386 ! 115: char u_sleep[U_SLEEP_LEN]; /* Reason for sleeping */ ! 116: #endif ! 117: time_t u_btime; /* Beginning time of process */ ! 118: int u_memuse; /* Average memory usage */ ! 119: long u_block; /* Count of disk blocks */ ! 120: ! 121: /* ! 122: * Profiler fields. ! 123: */ ! 124: caddr_t u_ppc; /* Profile pc from clock */ ! 125: caddr_t u_pbase; /* Profiler base */ ! 126: caddr_t u_pbend; /* Profiler base end */ ! 127: #if _I386 ! 128: off_t u_pofft; /* Offset from base */ ! 129: off_t u_pscale; /* Scaling factor */ ! 130: #else ! 131: vaddr_t u_pofft; /* Offset from base */ ! 132: vaddr_t u_pscale; /* Scaling factor */ ! 133: #endif ! 134: ! 135: /* ! 136: * Miscellaneous things. ! 137: */ ! 138: int u_argc; /* Argument count (for ps) */ ! 139: unsigned u_argp; /* Offset of argv[0] (for ps) */ ! 140: int u_signo; /* Signal number (for debugger) */ ! 141: #if _I386 ! 142: #if 0 ! 143: int *u_regl; ! 144: #endif ! 145: int u_rval2; ! 146: __sigfunc_t u_sigreturn; ! 147: union _fpcontext u_ndpCon; /* ndp state */ ! 148: int u_ndpFlags; ! 149: int u_bpfmax; /* max blocks per file */ ! 150: ! 151: char u_nigel [32]; /* for STREAMS */ ! 152: #endif ! 153: } UPROC; ! 154: ! 155: #endif /* ! defined (__SYS_UPROC_H__) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.