⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sd.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
/* * Storage Device. */typedef struct SDev SDev;typedef struct SDifc SDifc;typedef struct SDpart SDpart;typedef struct SDreq SDreq;typedef struct SDunit SDunit;typedef struct SDpart {	Devsize	start;	Devsize	end;	char	name[NAMELEN];	char	user[NAMELEN];	ulong	perm;	int	valid;	void	*crud;} SDpart;typedef struct SDunit {	SDev*	dev;	int	subno;	uchar	inquiry[256];		/* format follows SCSI spec */	uchar	sense[18];		/* format follows SCSI spec */	char	name[NAMELEN];	Rendez	rendez;	QLock	ctl;	Devsize	sectors;	/* not Off: even 32-bit fs can have big disks */	ulong	secsize;	SDpart*	part;	int	npart;			/* of valid partitions */	int	changed;	QLock	raw;	int	state;	ulong	pid;	SDreq*	req;} SDunit;typedef struct SDev {	SDifc*	ifc;			/* pnp/legacy */	void	*ctlr;	int	idno;	int	index;			/* into unit space */	int	nunit;	SDev*	next;	QLock;				/* enable/disable */	int	enabled;} SDev;typedef struct SDifc {	char*	name;	SDev*	(*pnp)(void);	SDev*	(*legacy)(int, int);	SDev*	(*id)(SDev*);	int	(*enable)(SDev*);	int	(*disable)(SDev*);	int	(*verify)(SDunit*);	int	(*online)(SDunit*);	int	(*rio)(SDreq*);	int	(*rctl)(SDunit*, char*, int);	int	(*wctl)(SDunit*, void*);	long	(*bio)(SDunit*, int, int, void*, long, Off);} SDifc;typedef struct SDreq {	SDunit*	unit;	int	lun;	int	write;	uchar	cmd[16];	int	clen;	void*	data;	int	dlen;	int	flags;	int	status;	long	rlen;	uchar	sense[256];} SDreq;enum {	SDnosense	= 0x00000001,	SDvalidsense	= 0x00010000,};enum {	SDretry		= -5,		/* internal to controllers */	SDmalloc	= -4,	SDeio		= -3,	SDtimeout	= -2,	SDnostatus	= -1,	SDok		= 0,	SDcheck		= 0x02,		/* check condition */	SDbusy		= 0x08,		/* busy */	SDmaxio		= 2048*1024,	SDnpart		= 16,};/* sdscsi.c */int	scsiverify(SDunit*);int	scsionline(SDunit*);long	scsibio(SDunit*, int, int, void*, long, Off);SDev*	scsiid(SDev*, SDifc*);/* devsd.c */int	sdfakescsi(SDreq *r, void *info, int ilen);int	sdmodesense(SDreq *r, uchar *cmd, void *info, int ilen);long	sdbio(SDunit *unit, SDpart *pp, void *a, long len, Off off);void	partition(SDunit*);void	addpartconf(SDunit*);SDpart* sdfindpart(SDunit*, char*);void	sdaddpart(SDunit*, char*, Devsize, Devsize);void*	sdmalloc(void*, ulong);enum {	IrqATA0 = 14,	IrqATA1,};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -