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

📄 sd.h

📁 在x86平台上运行不可信任代码的sandbox。
💻 H
字号:
/* * Storage Device. */typedef struct SDev SDev;typedef struct SDifc SDifc;typedef struct SDpart SDpart;typedef struct SDperm SDperm;typedef struct SDreq SDreq;typedef struct SDunit SDunit;struct SDperm {	char*	name;	char*	user;	ulong	perm;};struct SDpart {	uvlong	start;	uvlong	end;	SDperm	perm;	int	valid;	ulong	vers;};struct SDunit {	SDev*	dev;	int	subno;	uchar	inquiry[255];		/* format follows SCSI spec */	uchar	sense[18];		/* format follows SCSI spec */	SDperm	perm;	QLock	ctl;	uvlong	sectors;	ulong	secsize;	SDpart*	part;			/* nil or array of size npart */	int	npart;	ulong	vers;	SDperm	ctlperm;	QLock	raw;			/* raw read or write in progress */	ulong	rawinuse;		/* really just a test-and-set */	int	state;	SDreq*	req;	SDperm	rawperm;};/* * Each controller is represented by a SDev. */struct SDev {	Ref	r;			/* Number of callers using device */	SDifc*	ifc;			/* pnp/legacy */	void*	ctlr;	int	idno;	char	name[8];	SDev*	next;	QLock	lk;			/* enable/disable */	int	enabled;	int	nunit;			/* Number of units */	QLock	unitlock;		/* `Loading' of units */	int*	unitflg;		/* Unit flags */	SDunit**unit;};struct SDifc {	char*	name;	SDev*	(*pnp)(void);	SDev*	(*legacy)(int, int);	int	(*enable)(SDev*);	int	(*disable)(SDev*);	int	(*verify)(SDunit*);	int	(*online)(SDunit*);	int	(*rio)(SDreq*);	int	(*rctl)(SDunit*, char*, int);	int	(*wctl)(SDunit*, Cmdbuf*);	long	(*bio)(SDunit*, int, int, void*, long, uvlong);	SDev*	(*probe)(DevConf*);	void	(*clear)(SDev*);	char*	(*rtopctl)(SDev*, char*, char*);	int	(*wtopctl)(SDev*, Cmdbuf*);};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];};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,};#define sdmalloc(n)	malloc(n)#define sdfree(p)	free(p)/* devsd.c */extern void sdadddevs(SDev*);extern int sdsetsense(SDreq*, int, int, int, int);extern int sdmodesense(SDreq*, uchar*, void*, int);extern int sdfakescsi(SDreq*, void*, int);/* sdscsi.c */extern int scsiverify(SDunit*);extern int scsionline(SDunit*);extern long scsibio(SDunit*, int, int, void*, long, uvlong);extern SDev* scsiid(SDev*, SDifc*);

⌨️ 快捷键说明

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