plan 9 kernel history: overview | file list | diff list

1991/0906/pc/dat.h (diff list | history)

1991/0906/sys/src/9/pc/dat.h:1,1931991/0916/sys/src/9/pc/dat.h:1,193 (short | long | prev | next)
1991/0612    
typedef struct Conf	Conf; 
1991/0702    
typedef struct FPsave	FPsave; 
1991/0612    
typedef struct Label	Label; 
typedef struct Lock	Lock; 
typedef struct MMU	MMU; 
typedef struct Mach	Mach; 
1991/0717    
typedef struct Page	Page; 
1991/0612    
typedef struct PMMU	PMMU; 
1991/0703    
typedef struct Segdesc	Segdesc; 
1991/0612    
typedef struct Ureg	Ureg; 
typedef struct User	User; 
 
#define	MACHP(n)	(n==0? &mach0 : *(Mach**)0) 
 
extern	Mach	mach0; 
extern  void	(*kprofp)(ulong); 
 
/* 
 *  parameters for sysproc.c 
 */ 
#define AOUT_MAGIC	I_MAGIC 
 
struct Lock 
{ 
1991/0703    
	ulong	key; 
1991/0612    
	ulong	pc; 
}; 
 
struct Label 
{ 
	ulong	sp; 
	ulong	pc; 
}; 
 
1991/0711    
 
/* 
1991/0716    
 * FPsave.status 
1991/0711    
 */ 
enum 
1991/0702    
{ 
1991/0711    
	FPinit, 
	FPactive, 
	FPinactive, 
1991/0702    
}; 
 
1991/0905    
struct	FPsave 
1991/0711    
{ 
1991/0906    
	uchar	regs[108]; 
1991/0711    
}; 
 
1991/0612    
struct Conf 
{ 
1991/0702    
	ulong	nmach;		/* processors */ 
	ulong	nproc;		/* processes */ 
	ulong	npgrp;		/* process groups */ 
1991/0711    
	ulong	npage0;		/* total physical pages in bank0 */ 
	ulong	npage1;		/* total physical pages in bank1 */ 
1991/0612    
	ulong	npage;		/* total physical pages of memory */ 
1991/0711    
	ulong	nseg;		/* number of segments */ 
	ulong	nimage;		/* number of page cache image headers */ 
	ulong 	npagetab;	/* number of pte tables */ 
	ulong	nswap;		/* number of swap pages */ 
1991/0702    
	ulong	nalarm;		/* alarms */ 
	ulong	nchan;		/* channels */ 
	ulong	nenv;		/* distinct environment values */ 
	ulong	nenvchar;	/* environment text storage */ 
	ulong	npgenv;		/* environment files per process group */ 
	ulong	nmtab;		/* mounted-upon channels per process group */ 
	ulong	nmount;		/* mounts */ 
	ulong	nmntdev;	/* mounted devices (devmnt.c) */ 
	ulong	nmntbuf;	/* buffers for devmnt.c messages */ 
	ulong	nmnthdr;	/* headers for devmnt.c messages */ 
	ulong	nstream;	/* streams */ 
	ulong	nqueue;		/* stream queues */ 
	ulong	nblock;		/* stream blocks */ 
	ulong	nsrv;		/* public servers (devsrv.c) */ 
	ulong	nbitmap;	/* bitmap structs (devbit.c) */ 
	ulong	nbitbyte;	/* bytes of bitmap data (devbit.c) */ 
	ulong	nfont;		/* font structs (devbit.c) */ 
1991/0711    
	ulong	nnoifc;		/* number of nonet interfaces */ 
	ulong	nnoconv;	/* number of nonet conversations/ifc */ 
1991/0702    
	ulong	nurp;		/* max urp conversations */ 
	ulong	nasync;		/* number of async protocol modules */ 
	ulong	npipe;		/* number of pipes */ 
1991/0612    
	ulong	maxialloc;	/* maximum bytes used by ialloc */ 
1991/0711    
	ulong	base0;		/* base of bank 0 */ 
	ulong	base1;		/* base of bank 1 */ 
1991/0702    
	ulong	copymode;	/* 0 is copy on write, 1 is copy on reference */ 
1991/0711    
	ulong	ipif;		/* Ip protocol interfaces */ 
	ulong	ip;		/* Ip conversations per interface */ 
	ulong	arp;		/* Arp table size */ 
	ulong	frag;		/* Ip fragment assemble queue size */ 
1991/0702    
	ulong	cntrlp;		/* panic on ^P */ 
1991/0809    
	ulong	nfloppy;	/* number of floppy drives */ 
	ulong	nhard;		/* number of hard drives */ 
1991/0612    
}; 
 
/* 
 *  MMU stuff in proc 
 */ 
1991/0717    
#define MAXMMU	4 
1991/0718    
#define MAXSMMU	1 
1991/0612    
struct PMMU 
{ 
1991/0718    
	int	mmuvalid; 
	Page	*mmu[MAXMMU+MAXSMMU];	/* bottom level page tables */ 
	ulong	mmue[MAXMMU+MAXSMMU];	/* top level pointers to mmup pages */ 
1991/0916    
	ulong	mmue[MAXMMU+MAXSMMU];	/* top level pointers to mmu pages */ 
1991/0612    
}; 
 
#include "../port/portdat.h" 
 
/* 
 *  machine dependent definitions not used by ../port/dat.h 
 */ 
 
struct Mach 
{ 
	int	machno;			/* physical id of processor */ 
	ulong	splpc;			/* pc of last caller to splhi */ 
	int	mmask;			/* 1<<m->machno */ 
	ulong	ticks;			/* of the clock since boot time */ 
	Proc	*proc;			/* current process on this processor */ 
	Label	sched;			/* scheduler wakeup */ 
	Lock	alarmlock;		/* access to alarm list */ 
	void	*alarm;			/* alarms bound to this clock */ 
 
	int	tlbfault; 
	int	tlbpurge; 
	int	pfault; 
	int	cs; 
	int	syscall; 
	int	spinlock; 
	int	intr; 
 
	int	stack[1]; 
}; 
 
/* 
 * Fake kmap 
 */ 
typedef void		KMap; 
#define	VA(k)		((ulong)(k)) 
1991/0718    
#define	kmap(p)		(KMap*)((p)->pa|KZERO) 
1991/0612    
#define	kunmap(k) 
 
#define	NERR	15 
#define	NNOTE	5 
struct User 
{ 
	Proc	*p; 
	int	nerrlab; 
	Label	errlab[NERR]; 
	char	error[ERRLEN]; 
	FPsave	fpsave;			/* address of this is known by vdb */ 
	char	elem[NAMELEN];		/* last name element from namec */ 
	Chan	*slash; 
	Chan	*dot; 
	/* 
	 * Rest of structure controlled by devproc.c and friends. 
	 * lock(&p->debug) to modify. 
	 */ 
	Note	note[NNOTE]; 
	short	nnote; 
	short	notified;		/* sysnoted is due */ 
1991/0717    
	Note	lastnote; 
1991/0612    
	int	(*notify)(void*, char*); 
	void	*ureg; 
1991/0720    
	ulong	svcs;		/* cs before a notify */ 
	ulong	svss;		/* ss before a notify */ 
	ulong	svflags;		/* flags before a notify */ 
1991/0612    
}; 
1991/0703    
 
/* 
 *  segment descriptor/gate 
 */ 
struct Segdesc 
{ 
	ulong	d0; 
	ulong	d1; 
}; 
 
1991/0612    
 
struct 
{ 
	Lock; 
	short	machs; 
	short	exiting; 
}active; 
 
extern Mach	*m; 
extern User	*u; 
1991/0801    
 
extern int	flipD[];	/* for flipping bitblt destination polarity */ 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)