Charles.Forsyth20060303644188019 years agoHistory
217 lines · 3.8 KB · C
RawDownload
typedef struct Alarm Alarm;typedef struct Block Block;typedef struct IMM IMM;typedef struct Queue Queue; typedef struct List {	void	*next;} List; typedef struct {	int	fake;	int	pri;} Lock;#define	lock(x)#define	unlock(x) struct Alarm {	List;	int	busy;	long	dt;	void	(*f)(Alarm*);	void	*arg;}; enum {	Eaddrlen	= 6,	ETHERMINTU	= 60,		/* minimum transmit size */	ETHERMAXTU	= 1514,		/* maximum transmit size */	ETHERHDRSIZE	= 14,		/* size of an ethernet header */ 	MaxEther	= 4,}; typedef struct {	uchar	d[Eaddrlen];	uchar	s[Eaddrlen];	uchar	type[2];	uchar	data[1500];	uchar	crc[4];} Etherpkt; extern uchar broadcast[Eaddrlen]; enum {	Npart		= 20+2,		/* 8 sub partitions, disk, and partition */	Maxxfer		= 16*1024,	/* maximum transfer size/cmd */}; typedef struct {	ulong	start;	ulong	end;	char	name[NAMELEN+1];} Partition; typedef struct {	int	online;	int	npart;		/* number of real partitions */	Partition p[Npart];	ulong	offset;	Partition *current;	/* current partition */ 	ulong	cap;		/* total bytes */	int	bytes;		/* bytes/sector */	int	sectors;	/* sectors/track */	int	heads;		/* heads/cyl */	long	cyl;		/* cylinders/drive */ 	char	lba;		/* true if drive has logical block addressing */	char	multi;		/* non-zero if drive does multiple block xfers */} Disc; enum {	ScsiTestunit	= 0x00,	ScsiExtsens	= 0x03,	ScsiInquiry	= 0x12,	ScsiModesense	= 0x1a,	ScsiStartunit	= 0x1B,	ScsiStopunit	= 0x1B,	ScsiGetcap	= 0x25,	ScsiRead	= 0x08,	ScsiWrite	= 0x0a,	ScsiExtread	= 0x28,	ScsiExtwrite	= 0x2a, 	/* data direction */	ScsiIn		= 1,	ScsiOut		= 0,}; typedef struct Scsibuf Scsibuf;typedef struct Scsibuf {	void*		virt;	void*		phys;	Scsibuf*	next;}; typedef struct Scsidata {	uchar*		base;	uchar*		lim;	uchar*		ptr;} Scsidata; typedef struct Ureg Ureg; typedef struct Scsi {	ulong		pid;	ushort		target;	ushort		lun;	ushort		rflag;	ushort		status;	Scsidata 	cmd;	Scsidata 	data;	Scsibuf*	b;	uchar*		save;	uchar		cmdblk[16];} Scsi; typedef struct Segdesc {	ulong	d0;	ulong	d1;} Segdesc; typedef struct Mach {	ulong	ticks;			/* of the clock since boot time */	ulong	delayloop;	long	cpuhz;	/* general system clock (cycles) */	long	clockgen;	/* clock generator frequency (cycles) */	ulong	cpupvr;	/* cpu type in processor version register */	ulong	cputype;	/* cpu variant in BCD (eg, 0x823xx) */	void*	alarm;			/* alarms bound to this clock */	ulong*	bcsr;	IMM*	iomem;} Mach; /* Mach.cputype */#define MPCREV(x)	((x) & 0xFF)#define MPCMODEL(x)	(((x)>>8) & 0xFFF)#define MPCFAMILY(x)	(((x)>>24) & 0x0F)  extern Mach *m; #define Q_MAGIC		((((4*21)+0)*21)+7) typedef struct Exec Exec;struct	Exec{	uchar	magic[4];		/* magic number */	uchar	text[4];	 	/* size of text segment */	uchar	data[4];	 	/* size of initialized data */	uchar	bss[4];	  		/* size of uninitialized data */	uchar	syms[4];	 	/* size of symbol table */	uchar	entry[4];	 	/* entry point */	uchar	spsz[4];		/* size of sp/pc offset table */	uchar	pcsz[4];		/* size of pc/line number table */}; /* *  bootline passed by boot program */#define BOOTLINE ((char *)0x200000-150) /* * Where we leave configuration info. */#define BOOTARGS	((char*)(0x200000))#define	BOOTARGSLEN	1024#define	MAXCONF		32 /* *  a parsed plan9.ini line */#define ISAOPTLEN	16#define NISAOPT		8 typedef struct  ISAConf {	char	type[NAMELEN];	ulong	port;	ulong	irq;	ulong	mem;	ulong	size;	uchar	ea[6]; 	int	nopt;	char	opt[NISAOPT][ISAOPTLEN];} ISAConf; typedef struct {	int	size;	ulong	addr;} Map; typedef struct {	char*	name;	Map*	map;	Map*	mapend; 	Lock;} RMap; typedef struct PCIcfg PCIcfg; extern	uchar*	vgamem; struct Block {	uchar	*rp;	uchar	*wp;	uchar	*lim;	uchar	*data;	Block*	next;	ulong	magic;};#define	BLEN(b)	((b)->wp-(b)->rp) typedef struct QLock {	int	dummy;} QLock;