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

2001/0616/bitsy/dat.h (diff list | history)

2001/0616/sys/src/9/bitsy/dat.h:1,2872001/0619/sys/src/9/bitsy/dat.h:1,273 (short | long | prev | next)
2000/1121    
typedef struct Cisdat 		Cisdat; 
typedef struct Conf		Conf; 
typedef struct Cycintr		Cycintr; 
typedef struct FPU		FPU; 
typedef struct FPenv		FPenv; 
typedef struct FPsave		FPsave; 
2000/1205    
typedef struct DevConf		DevConf; 
2000/1121    
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 PCMmap		PCMmap; 
typedef struct PCMslot		PCMslot; 
typedef struct PCMconftab	PCMconftab; 
typedef struct PhysUart		PhysUart; 
typedef struct PMMU		PMMU; 
typedef struct Proc		Proc; 
typedef struct Uart		Uart; 
typedef struct Ureg		Ureg; 
typedef struct Vctl		Vctl; 
typedef struct Uart		Uart; 
2000/0831    
 
2000/1205    
typedef void IntrHandler(Ureg*, void*); 
 
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 */ 
2000/1121    
	ulong	hz;		/* processor cycle freq */ 
	ulong	mhz; 
2000/0831    
}; 
 
/* 
 *  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 */ 
2000/1106    
	int	inclockintr; 
2000/0831    
 
	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]; 
}; 
 
/* 
 * 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, 
2000/1121    
}; 
 
/* 
 * PCMCIA structures known by both port/cis.c and the pcmcia driver 
 */ 
 
/* 
 * Map between ISA memory space and PCMCIA card memory space. 
 */ 
struct PCMmap { 
	ulong	ca;			/* card address */ 
	ulong	cea;			/* card end address */ 
	ulong	isa;			/* local virtual address */ 
	int	len;			/* length of the ISA area */ 
	int	attr;			/* attribute memory */ 
}; 
 
/* 
 *  a PCMCIA configuration entry 
 */ 
struct PCMconftab 
{ 
	int	index; 
	ushort	irqs;		/* legal irqs */ 
	uchar	irqtype; 
	uchar	bit16;		/* true for 16 bit access */ 
	struct { 
		ulong	start; 
		ulong	len; 
	} io[16]; 
	int	nio; 
	uchar	vpp1; 
	uchar	vpp2; 
	uchar	memwait; 
	ulong	maxwait; 
	ulong	readywait; 
	ulong	otherwait; 
}; 
 
/* 
 *  For walking a PCMCIA card's information structure 
 */ 
struct Cisdat 
{ 
	uchar	*cisbase; 
	int	cispos; 
	int	cisskip; 
	int	cislen; 
}; 
                 
/* 
 *  PCMCIA card slot 
 */ 
struct PCMslot 
{ 
2000/1205    
	RWlock; 
 
2000/1122    
	Ref	ref; 
2000/1121    
 
	long	memlen;		/* memory length */ 
	uchar	slotno;		/* slot number */ 
	void	*regs;		/* i/o registers */ 
	void	*mem;		/* memory */ 
	void	*attr;		/* attribute memory */ 
 
	/* status */ 
2000/1205    
	uchar	occupied;	/* card in the slot */ 
	uchar	configed;	/* card configured */ 
2000/1121    
 
	/* cis info */ 
2000/1128    
	int	cisread;	/* set when the cis has been read */ 
2000/1121    
	char	verstr[512];	/* version string */ 
	uchar	cpresent;	/* config registers present */ 
	ulong	caddr;		/* relative address of config registers */ 
	int	nctab;		/* number of config table entries */ 
	PCMconftab	ctab[8]; 
	PCMconftab	*def;		/* default conftab */ 
                 
	/* for walking through cis */ 
	Cisdat; 
 
	/* maps are fixed */ 
	PCMmap memmap; 
	PCMmap attrmap; 
2000/1205    
}; 
 
/* 
 *  hardware info about a device 
 */ 
struct DevConf 
{ 
2001/0616    
	ulong	mem;	/* mapped memory address */ 
2000/1205    
	ulong	port;		/* mapped i/o regs */ 
2001/0616    
	int		size;		/* access size */ 
	int		itype;	/* type of interrupt */ 
2000/1205    
	ulong	interrupt;	/* interrupt number */ 
2001/0616    
	char		*type;	/* card type, mallocated */ 
2000/0907    
}; 


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