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

2000/0902/bitsy/dat.h (diff list | history)

bitsy/dat.h on 2000/0831
2000/0831    
typedef struct Conf	Conf; 
typedef struct FPsave	FPsave; 
typedef struct Label	Label; 
typedef struct Lock	Lock; 
typedef struct MMU	MMU; 
typedef struct Mach	Mach; 
typedef struct Notsave	Notsave; 
typedef struct Page	Page; 
typedef struct PMMU	PMMU; 
typedef struct Proc	Proc; 
typedef struct Ureg	Ureg; 
typedef struct Vctl	Vctl; 
 
/* 
 *  parameters for sysproc.c 
 */ 
#define AOUT_MAGIC	(I_MAGIC) 
 
struct Lock 
{ 
	ulong	key; 
	ulong	sr; 
	ulong	pc; 
	Proc	*p; 
	ushort	isilock; 
}; 
 
struct Label 
{ 
	ulong	sp; 
	ulong	pc; 
}; 
 
/* 
 *  no floating point, hence nothing to save 
 */ 
2000/0902    
 
/* 
 * FPsave.status 
 */ 
enum 
{ 
	FPinit, 
	FPinactive, 
}; 
2000/0831    
struct	FPsave 
{ 
	int	dummy; 
}; 
 
struct Conf 
{ 
	ulong	nmach;		/* processors */ 
	ulong	nproc;		/* processes */ 
	ulong	monitor;	/* has monitor? */ 
	ulong	npage0;		/* total physical pages of memory */ 
	ulong	npage1;		/* total physical pages of memory */ 
	ulong	npage;		/* total physical pages of memory */ 
	ulong	upages;		/* user page pool */ 
	ulong	nimage;		/* number of page cache image headers */ 
	ulong	nswap;		/* number of swap pages */ 
	int	nswppo;		/* max # of pageouts per segment pass */ 
	ulong	base0;		/* base of bank 0 */ 
	ulong	base1;		/* base of bank 1 */ 
	ulong	copymode;	/* 0 is copy on write, 1 is copy on reference */ 
	ulong	ialloc;		/* max interrupt time allocation in bytes */ 
	ulong	pipeqsize;	/* size in bytes of pipe queues */ 
}; 
 
/* 
 *  MMU stuff in proc 
 */ 
#define NCOLOR 1 
struct PMMU 
{ 
	int dummy; 
}; 
 
/* 
 *  things saved in the Proc structure during a notify 
 */ 
struct Notsave 
{ 
	int dummy; 
}; 
 
#include "../port/portdat.h" 
 
struct Mach 
{ 
	int	machno;			/* physical id of processor */ 
	ulong	splpc;			/* pc of last caller to splhi */ 
 
	ulong*	pdb;			/* page directory base for this processor (va) */ 
 
	Proc*	proc;			/* current process on this processor */ 
	Proc*	externup;		/* extern register Proc *up */ 
 
	Page*	pdbpool; 
	int	pdbcnt; 
 
	ulong	ticks;			/* of the clock since boot time */ 
	Label	sched;			/* scheduler wakeup */ 
	Lock	alarmlock;		/* access to alarm list */ 
	void*	alarm;			/* alarms bound to this clock */ 
 
	ulong	fairness;		/* for runproc */ 
 
	int	tlbfault; 
	int	tlbpurge; 
	int	pfault; 
	int	cs; 
	int	syscall; 
	int	load; 
	int	intr; 
	vlong	fastclock;		/* last sampled value */ 
	vlong	intrts;			/* time stamp of last interrupt */ 
	int	flushmmu;		/* make current proc flush it's mmu state */ 
 
	ulong	spuriousintr; 
	int	lastintr; 
 
	int	loopconst; 
 
	int	cpumhz; 
	int	cpuhz; 
	int	cpuidax; 
	int	cpuiddx; 
	char	cpuidid[16]; 
	char*	cpuidtype; 
 
	vlong	mtrrcap; 
	vlong	mtrrdef; 
	vlong	mtrrfix[11]; 
	vlong	mtrrvar[32];		/* 256 max. */ 
 
	int	stack[1]; 
}; 
 
typedef struct Cycintr	Cycintr; 
 
/* 
 * fasttick timer interrupts 
 */ 
struct Cycintr 
{ 
	vlong	when;			/* fastticks when f should be called */ 
	void	(*f)(Ureg*, Cycintr*); 
	void	*a; 
	Cycintr	*next; 
}; 
 
/* 
 * Fake kmap 
 */ 
typedef void		KMap; 
#define	VA(k)		((ulong)(k)) 
#define	kmap(p)		(KMap*)((p)->pa|KZERO) 
#define	kunmap(k) 
 
struct 
{ 
	Lock; 
	int	machs;			/* bitmap of active CPUs */ 
	int	exiting;		/* shutdown */ 
	int	ispanic;		/* shutdown in response to a panic */ 
}active; 
 
/* 
 * Each processor sees its own Mach structure at address MACHADDR. 
 * However, the Mach structures must also be available via the per-processor 
 * MMU information array machp, mainly for disambiguation and access to 
 * the clock which is only maintained by the bootstrap processor (0). 
 */ 
Mach* machp[MAXMACH]; 
	 
#define	MACHP(n)	(machp[n]) 
 
extern Mach	*m; 
#define up	(((Mach*)MACHADDR)->externup) 


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