⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nuser.h

📁 著名的AT&T UNIX v6 源码
💻 H
字号:
#include "../h/pcb.h"/* * The user structure. * One allocated per process. * Contains all per process data * that doesn't need to be referenced * while the process is swapped. * The user block is USIZE*512 bytes * long; resides at virtual kernel * loc 80020000; contains the system * stack per user; is cross referenced * with the proc structure for the * same process. */ #define	EXCLOSE 01 struct	user{	struct pcb u_pcb;		/* pcb, save area when exchanging stacks */	int u_ptable[(MAXUMEM+127)/128];	/* click nums of user page table */	label_t u_rsav;	char	u_segflg;		/* IO flag: 0:user D; 1:system; 2:user I */	char	u_error;		/* return error code */	short	u_uid;			/* effective user id */	short	u_gid;			/* effective group id */	short	u_ruid;			/* real user id */	short	u_rgid;			/* real group id */	struct proc *u_procp;		/* pointer to proc structure */	int	*u_ap;			/* pointer to arglist */	union {				/* syscall return values */		struct	{			int	r_val1;			int	r_val2;		};		off_t	r_off;		time_t	r_time;	} u_r;	caddr_t	u_base;			/* base address for IO */	unsigned int u_count;		/* bytes remaining for IO */	off_t	u_offset;		/* offset in file for IO */	struct inode *u_cdir;		/* pointer to inode of current directory */	struct inode *u_rdir;		/* root directory of current process */	char	u_dbuf[DIRSIZ];		/* current pathname component */	caddr_t	u_dirp;			/* pathname pointer */	struct direct u_dent;		/* current directory entry */	struct inode *u_pdir;		/* inode of parent directory of dirp */	struct file *u_ofile[NOFILE];	/* pointers to file structures of open files */	char	u_pofile[NOFILE];	/* per-process flags of open files */	int	u_arg[5];		/* arguments to current system call */	unsigned u_tsize;		/* text size (clicks) */	unsigned u_dsize;		/* data size (clicks) */	unsigned u_ssize;		/* stack size (clicks) */	label_t	u_qsav;			/* label variable for quits and interrupts */	label_t u_ssav;			/* label variable for swapping */	int	u_signal[NSIG];		/* disposition of signals */	time_t	u_utime;		/* this process user time */	time_t	u_stime;		/* this process system time */	time_t	u_cutime;		/* sum of childs' utimes */	time_t	u_cstime;		/* sum of childs' stimes */	int	*u_ar0;			/* address of users saved R0 */	struct {			/* profile arguments */		short	*pr_base;	/* buffer base */		unsigned pr_size;	/* buffer size */		unsigned pr_off;	/* pc offset */		unsigned pr_scale;	/* pc scaling */	} u_prof;	char	u_intflg;		/* catch intr from sys */	char	u_sep;			/* flag for I and D separation */	struct tty *u_ttyp;		/* controlling tty pointer */	dev_t	u_ttyd;			/* controlling tty dev */	struct {			/* header of executable file */		int	ux_mag;		/* magic number */		unsigned ux_tsize;	/* text size */		unsigned ux_dsize;	/* data size */		unsigned ux_bsize;	/* bss size */		unsigned ux_ssize;	/* symbol table size */		unsigned ux_entloc;	/* entry location */		unsigned ux_unused;		unsigned ux_relflg;	} u_exdata;	char	u_comm[DIRSIZ];	time_t	u_start;	char	u_acflag;	short	u_fpflag;		/* unused now, will be later */	short	u_cmask;		/* mask for file creation */	int	u_stack[1];					/* kernel stack per user					 * extends from u + USIZE*64					 * backward not to reah here					 */}; /* u_error codes */#define	EPERM	1#define	ENOENT	2#define	ESRCH	3#define	EINTR	4#define	EIO	5#define	ENXIO	6#define	E2BIG	7#define	ENOEXEC	8#define	EBADF	9#define	ECHILD	10#define	EAGAIN	11#define	ENOMEM	12#define	EACCES	13#define	EFAULT	14#define	ENOTBLK	15#define	EBUSY	16#define	EEXIST	17#define	EXDEV	18#define	ENODEV	19#define	ENOTDIR	20#define	EISDIR	21#define	EINVAL	22#define	ENFILE	23#define	EMFILE	24#define	ENOTTY	25#define	ETXTBSY	26#define	EFBIG	27#define	ENOSPC	28#define	ESPIPE	29#define	EROFS	30#define	EMLINK	31#define	EPIPE	32#define EDOM	33#define	ERANGE	34

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -