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

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

bitsy/dat.h on 2000/0831
2000/0831    
typedef struct Conf	Conf; 
2000/1026    
typedef struct FPU	FPU; 
typedef struct FPenv	FPenv; 
2000/0831    
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; 
2000/1007    
typedef struct PhysUart	PhysUart; 
typedef struct Uart	Uart; 
2000/0831    
 
/* 
 *  parameters for sysproc.c 
 */ 
2000/1015    
#define AOUT_MAGIC	(E_MAGIC) 
2000/0831    
 
struct Lock 
{ 
	ulong	key; 
	ulong	sr; 
	ulong	pc; 
	Proc	*p; 
	ushort	isilock; 
}; 
 
struct Label 
{ 
	ulong	sp; 
	ulong	pc; 
}; 
 
/* 
2000/0902    
 * FPsave.status 
 */ 
enum 
{ 
2000/1027    
	FPinit, 
	FPactive, 
	FPinactive, 
2000/0902    
}; 
2000/0831    
struct	FPsave 
{ 
2000/1026    
	ulong	status; 
	ulong	control; 
	ulong	regs[8][3];	/* emulated fp */	 
2000/0831    
}; 
 
struct Conf 
{ 
	ulong	nmach;		/* processors */ 
	ulong	nproc;		/* processes */ 
	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 */ 
2000/0905    
	int	monitor; 
	ulong	ialloc;		/* bytes available for interrupt time allocation */ 
2000/0831    
	ulong	pipeqsize;	/* size in bytes of pipe queues */ 
}; 
 
/* 
 *  MMU stuff in proc 
 */ 
2000/1011    
enum 
{ 
	NCOLOR=	1,	/* 1 level cache, don't worry about VCE's */ 
	Nmeg=	32,	/* maximum size of user space */ 
}; 
 
2000/0831    
struct PMMU 
{ 
2000/1013    
	Page	*l1page[Nmeg];	/* this's process' level 1 entries */ 
	ulong	l1table[Nmeg];	/* ... */ 
2000/1015    
	Page	*mmufree;	/* free mmu pages */ 
2000/0831    
}; 
 
/* 
 *  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 */ 
 
2000/1016    
	Proc	*proc;			/* current process */ 
	ulong	mmupid;			/* process id currently in mmu & cache */ 
2000/0831    
 
	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 */ 
 
2000/1012    
	/* stats */ 
2000/0831    
	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 */ 
	ulong	spuriousintr; 
	int	lastintr; 
 
2000/1012    
	int	flushmmu;		/* make current proc flush it's mmu state */ 
	Proc	*pid2proc[31];		/* what proc holds what pid */ 
	int	lastpid;		/* highest assigned pid slot */ 
2000/0831    
 
2000/1012    
	int	cpumhz;			/* speed of cpu */ 
	int	cpuhz;			/* ... * 
2000/0831    
 
2000/1007    
	/* save areas for exceptions */ 
	ulong	sfiq[5]; 
	ulong	sirq[5]; 
	ulong	sund[5]; 
	ulong	sabt[5]; 
2000/0831    
 
	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; 
}; 
 
/* 
2000/1011    
 * Fake kmap since we direct map dram 
2000/0831    
 */ 
typedef void		KMap; 
#define	VA(k)		((ulong)(k)) 
2000/1011    
#define	kmap(p)		(KMap*)((p)->pa) 
2000/0831    
#define	kunmap(k) 
 
struct 
{ 
	Lock; 
	int	machs;			/* bitmap of active CPUs */ 
	int	exiting;		/* shutdown */ 
	int	ispanic;		/* shutdown in response to a panic */ 
}active; 
 
2000/1015    
#define	MACHP(n)	((Mach *)(MACHADDR+(n)*BY2PG)) 
2000/0831    
 
extern Mach	*m; 
2000/1016    
extern Proc	*up; 
2000/0907    
 
enum 
{ 
	OneMeg=	1024*1024, 
}; 


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