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

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

2000/1106/sys/src/9/bitsy/dat.h:1,192000/1121/sys/src/9/bitsy/dat.h:1,25 (short | long | prev | next)
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/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; 
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    
 
/* 
 *  parameters for sysproc.c 
2000/1106/sys/src/9/bitsy/dat.h:68,732000/1121/sys/src/9/bitsy/dat.h:74,81
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    
}; 
 
/* 
2000/1106/sys/src/9/bitsy/dat.h:141,1482000/1121/sys/src/9/bitsy/dat.h:149,154
2000/0831    
	int	stack[1]; 
}; 
 
typedef struct Cycintr	Cycintr; 
                 
/* 
 * fasttick timer interrupts 
 */ 
2000/1106/sys/src/9/bitsy/dat.h:178,1812000/1121/sys/src/9/bitsy/dat.h:184,353
2000/0907    
enum 
{ 
	OneMeg=	1024*1024, 
2000/1121    
}; 
 
/* 
 *  routines to access UART hardware 
 */ 
struct PhysUart 
{ 
	void	(*enable)(Uart*, int); 
	void	(*disable)(Uart*); 
	void	(*kick)(Uart*); 
	void	(*intr)(Ureg*, void*); 
	void	(*dobreak)(Uart*, int); 
	void	(*baud)(Uart*, int); 
	void	(*bits)(Uart*, int); 
	void	(*stop)(Uart*, int); 
	void	(*parity)(Uart*, int); 
	void	(*modemctl)(Uart*, int); 
	void	(*rts)(Uart*, int); 
	void	(*dtr)(Uart*, int); 
	long	(*status)(Uart*, void*, long, long); 
}; 
 
enum { 
	Stagesize=	1024 
}; 
 
/* 
 *  software UART 
 */ 
struct Uart 
{ 
	QLock; 
	int	type; 
	int	dev; 
	int	opens; 
	void	*regs; 
	PhysUart	*phys; 
 
	int	enabled; 
	Uart	*elist;			/* next enabled interface */ 
	char	name[NAMELEN]; 
 
	uchar	sticky[4];		/* sticky write register values */ 
	ulong	freq;			/* clock frequency */ 
	uchar	mask;			/* bits/char */ 
	int	baud;			/* baud rate */ 
 
	int	parity;			/* parity errors */ 
	int	frame;			/* framing errors */ 
	int	overrun;		/* rcvr overruns */ 
 
	/* buffers */ 
	int	(*putc)(Queue*, int); 
	Queue	*iq; 
	Queue	*oq; 
 
	uchar	istage[Stagesize]; 
	uchar	*iw; 
	uchar	*ir; 
	uchar	*ie; 
 
	Lock	tlock;			/* transmit */ 
	uchar	ostage[Stagesize]; 
	uchar	*op; 
	uchar	*oe; 
 
	int	modem;			/* hardware flow control on */ 
	int	xonoff;			/* software flow control on */ 
	int	blocked; 
	int	cts, dsr, dcd, dcdts;		/* keep track of modem status */  
	int	ctsbackoff; 
	int	hup_dsr, hup_dcd;	/* send hangup upstream? */ 
	int	dohup; 
 
	int	kinuse;		/* device in use by kernel */ 
 
	Rendez	r; 
}; 
 
/* 
 * 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 
{ 
	Ref; 
 
	long	memlen;		/* memory length */ 
	uchar	slotno;		/* slot number */ 
	void	*regs;		/* i/o registers */ 
	void	*mem;		/* memory */ 
	void	*attr;		/* attribute memory */ 
 
	/* status */ 
	uchar	special;	/* in use for a special device */ 
	uchar	already;	/* already inited */ 
	uchar	occupied; 
	uchar	battery; 
	uchar	wrprot; 
	uchar	powered; 
	uchar	configed; 
	uchar	enabled; 
	uchar	busy; 
 
	/* cis info */ 
	ulong	msec;		/* time of last slotinfo call */ 
	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/0907    
}; 


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