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

📄 aacraid.h

📁 linux-2.6.15.6
💻 H
📖 第 1 页 / 共 4 页
字号:
/* * Object-Server / Volume-Manager Dispatch Classes */#define		VM_Null			0#define		VM_NameServe		1#define		VM_ContainerConfig	2#define		VM_Ioctl		3#define		VM_FilesystemIoctl	4#define		VM_CloseAll		5#define		VM_CtBlockRead		6#define		VM_CtBlockWrite		7#define		VM_SliceBlockRead	8	/* raw access to configured "storage objects" */#define		VM_SliceBlockWrite	9#define		VM_DriveBlockRead	10	/* raw access to physical devices */#define		VM_DriveBlockWrite	11#define		VM_EnclosureMgt		12	/* enclosure management */#define		VM_Unused		13	/* used to be diskset management */#define		VM_CtBlockVerify	14#define		VM_CtPerf		15	/* performance test */#define		VM_CtBlockRead64	16#define		VM_CtBlockWrite64	17#define		VM_CtBlockVerify64	18#define		VM_CtHostRead64		19#define		VM_CtHostWrite64	20#define		VM_DrvErrTblLog		21#define		VM_NameServe64		22#define		MAX_VMCOMMAND_NUM	23	/* used for sizing stats array - leave last *//* *	Descriptive information (eg, vital stats) *	that a content manager might report.  The *	FileArray filesystem component is one example *	of a content manager.  Raw mode might be *	another. */struct aac_fsinfo {	__le32  fsTotalSize;	/* Consumed by fs, incl. metadata */	__le32  fsBlockSize;	__le32  fsFragSize;	__le32  fsMaxExtendSize;	__le32  fsSpaceUnits;	__le32  fsMaxNumFiles;	__le32  fsNumFreeFiles;	__le32  fsInodeDensity;};	/* valid iff ObjType == FT_FILESYS && !(ContentState & FSCS_NOTCLEAN) */union aac_contentinfo {	struct aac_fsinfo filesys;	/* valid iff ObjType == FT_FILESYS && !(ContentState & FSCS_NOTCLEAN) */};/* *	Query for Container Configuration Status */#define CT_GET_CONFIG_STATUS 147struct aac_get_config_status {	__le32		command;	/* VM_ContainerConfig */	__le32		type;		/* CT_GET_CONFIG_STATUS */	__le32		parm1;	__le32		parm2;	__le32		parm3;	__le32		parm4;	__le32		parm5;	__le32		count;	/* sizeof(((struct aac_get_config_status_resp *)NULL)->data) */};#define CFACT_CONTINUE 0#define CFACT_PAUSE    1#define CFACT_ABORT    2struct aac_get_config_status_resp {	__le32		response; /* ST_OK */	__le32		dummy0;	__le32		status;	/* CT_OK */	__le32		parm1;	__le32		parm2;	__le32		parm3;	__le32		parm4;	__le32		parm5;	struct {		__le32	action; /* CFACT_CONTINUE, CFACT_PAUSE or CFACT_ABORT */		__le16	flags;		__le16	count;	}		data;};/* *	Accept the configuration as-is */#define CT_COMMIT_CONFIG 152struct aac_commit_config {	__le32		command;	/* VM_ContainerConfig */	__le32		type;		/* CT_COMMIT_CONFIG */};/* *	Query for Container Configuration Status */#define CT_GET_CONTAINER_COUNT 4struct aac_get_container_count {	__le32		command;	/* VM_ContainerConfig */	__le32		type;		/* CT_GET_CONTAINER_COUNT */};struct aac_get_container_count_resp {	__le32		response; /* ST_OK */	__le32		dummy0;	__le32		MaxContainers;	__le32		ContainerSwitchEntries;	__le32		MaxPartitions;};/* *	Query for "mountable" objects, ie, objects that are typically *	associated with a drive letter on the client (host) side. */struct aac_mntent {	__le32    		oid;	u8			name[16];	/* if applicable */	struct creation_info	create_info;	/* if applicable */	__le32			capacity;	__le32			vol;    	/* substrate structure */	__le32			obj;	        /* FT_FILESYS, 						   FT_DATABASE, etc. */	__le32			state;		/* unready for mounting, 						   readonly, etc. */	union aac_contentinfo	fileinfo;	/* Info specific to content 						   manager (eg, filesystem) */	__le32			altoid;		/* != oid <==> snapshot or 						   broken mirror exists */	__le32			capacityhigh;};#define FSCS_NOTCLEAN	0x0001  /* fsck is neccessary before mounting */#define FSCS_READONLY	0x0002	/* possible result of broken mirror */#define FSCS_HIDDEN	0x0004	/* should be ignored - set during a clear */struct aac_query_mount {	__le32		command;	__le32		type;	__le32		count;};struct aac_mount {	__le32		status;	__le32	   	type;           /* should be same as that requested */	__le32		count;	struct aac_mntent mnt[1];};#define CT_READ_NAME 130struct aac_get_name {	__le32		command;	/* VM_ContainerConfig */	__le32		type;		/* CT_READ_NAME */	__le32		cid;	__le32		parm1;	__le32		parm2;	__le32		parm3;	__le32		parm4;	__le32		count;	/* sizeof(((struct aac_get_name_resp *)NULL)->data) */};#define CT_OK        218struct aac_get_name_resp {	__le32		dummy0;	__le32		dummy1;	__le32		status;	/* CT_OK */	__le32		parm1;	__le32		parm2;	__le32		parm3;	__le32		parm4;	__le32		parm5;	u8		data[16];};/* * The following command is sent to shut down each container. */struct aac_close {	__le32	command;	__le32	cid;};struct aac_query_disk{	s32	cnum;	s32	bus;	s32	id;	s32	lun;	u32	valid;	u32	locked;	u32	deleted;	s32	instance;	s8	name[10];	u32	unmapped;};struct aac_delete_disk {	u32	disknum;	u32	cnum;}; struct fib_ioctl{	u32	fibctx;	s32	wait;	char	__user *fib;};struct revision{	u32 compat;	__le32 version;	__le32 build;};	/* * 	Ugly - non Linux like ioctl coding for back compat. */#define CTL_CODE(function, method) (                 \    (4<< 16) | ((function) << 2) | (method) \)/* *	Define the method codes for how buffers are passed for I/O and FS  *	controls */#define METHOD_BUFFERED                 0#define METHOD_NEITHER                  3/* *	Filesystem ioctls */#define FSACTL_SENDFIB                  	CTL_CODE(2050, METHOD_BUFFERED)#define FSACTL_SEND_RAW_SRB               	CTL_CODE(2067, METHOD_BUFFERED)#define FSACTL_DELETE_DISK			0x163#define FSACTL_QUERY_DISK			0x173#define FSACTL_OPEN_GET_ADAPTER_FIB		CTL_CODE(2100, METHOD_BUFFERED)#define FSACTL_GET_NEXT_ADAPTER_FIB		CTL_CODE(2101, METHOD_BUFFERED)#define FSACTL_CLOSE_GET_ADAPTER_FIB		CTL_CODE(2102, METHOD_BUFFERED)#define FSACTL_MINIPORT_REV_CHECK               CTL_CODE(2107, METHOD_BUFFERED)#define FSACTL_GET_PCI_INFO               	CTL_CODE(2119, METHOD_BUFFERED)#define FSACTL_FORCE_DELETE_DISK		CTL_CODE(2120, METHOD_NEITHER)#define FSACTL_GET_CONTAINERS			2131#define FSACTL_SEND_LARGE_FIB			CTL_CODE(2138, METHOD_BUFFERED)struct aac_common{	/*	 *	If this value is set to 1 then interrupt moderation will occur 	 *	in the base commuication support.	 */	u32 irq_mod;	u32 peak_fibs;	u32 zero_fibs;	u32 fib_timeouts;	/*	 *	Statistical counters in debug mode	 */#ifdef DBG	u32 FibsSent;	u32 FibRecved;	u32 NoResponseSent;	u32 NoResponseRecved;	u32 AsyncSent;	u32 AsyncRecved;	u32 NormalSent;	u32 NormalRecved;#endif};extern struct aac_common aac_config;/* *	The following macro is used when sending and receiving FIBs. It is *	only used for debugging. */ #ifdef DBG#define	FIB_COUNTER_INCREMENT(counter)		(counter)++#else#define	FIB_COUNTER_INCREMENT(counter)		#endif/* *	Adapter direct commands *	Monitor/Kernel API */#define	BREAKPOINT_REQUEST		0x00000004#define	INIT_STRUCT_BASE_ADDRESS	0x00000005#define READ_PERMANENT_PARAMETERS	0x0000000a#define WRITE_PERMANENT_PARAMETERS	0x0000000b#define HOST_CRASHING			0x0000000d#define	SEND_SYNCHRONOUS_FIB		0x0000000c#define COMMAND_POST_RESULTS		0x00000014#define GET_ADAPTER_PROPERTIES		0x00000019#define GET_DRIVER_BUFFER_PROPERTIES	0x00000023#define RCV_TEMP_READINGS		0x00000025#define GET_COMM_PREFERRED_SETTINGS	0x00000026#define IOP_RESET			0x00001000#define RE_INIT_ADAPTER			0x000000ee/* *	Adapter Status Register * *  Phase Staus mailbox is 32bits: *	<31:16> = Phase Status *	<15:0>  = Phase * *	The adapter reports is present state through the phase.  Only *	a single phase should be ever be set.  Each phase can have multiple *	phase status bits to provide more detailed information about the  *	state of the board.  Care should be taken to ensure that any phase  *	status bits that are set when changing the phase are also valid *	for the new phase or be cleared out.  Adapter software (monitor, *	iflash, kernel) is responsible for properly maintining the phase  *	status mailbox when it is running. *											 *	MONKER_API Phases							 * *	Phases are bit oriented.  It is NOT valid  to have multiple bits set						 */					#define	SELF_TEST_FAILED		0x00000004#define	MONITOR_PANIC			0x00000020#define	KERNEL_UP_AND_RUNNING		0x00000080#define	KERNEL_PANIC			0x00000100/* *	Doorbell bit defines */#define DoorBellSyncCmdAvailable	(1<<0)	/* Host -> Adapter */#define DoorBellPrintfDone		(1<<5)	/* Host -> Adapter */#define DoorBellAdapterNormCmdReady	(1<<1)	/* Adapter -> Host */#define DoorBellAdapterNormRespReady	(1<<2)	/* Adapter -> Host */#define DoorBellAdapterNormCmdNotFull	(1<<3)	/* Adapter -> Host */#define DoorBellAdapterNormRespNotFull	(1<<4)	/* Adapter -> Host */#define DoorBellPrintfReady		(1<<5)	/* Adapter -> Host *//* *	For FIB communication, we need all of the following things *	to send back to the user. */ #define 	AifCmdEventNotify	1	/* Notify of event */#define			AifEnConfigChange	3	/* Adapter configuration change */#define			AifEnContainerChange	4	/* Container configuration change */#define			AifEnDeviceFailure	5	/* SCSI device failed */#define			AifEnAddContainer	15	/* A new array was created */#define			AifEnDeleteContainer	16	/* A container was deleted */#define			AifEnExpEvent		23	/* Firmware Event Log */#define			AifExeFirmwarePanic	3	/* Firmware Event Panic */#define			AifHighPriority		3	/* Highest Priority Event */#define		AifCmdJobProgress	2	/* Progress report */#define			AifJobCtrZero	101	/* Array Zero progress */#define			AifJobStsSuccess 1	/* Job completes */#define			AifJobStsRunning 102	/* Job running */#define		AifCmdAPIReport		3	/* Report from other user of API */#define		AifCmdDriverNotify	4	/* Notify host driver of event */#define			AifDenMorphComplete 200	/* A morph operation completed */#define			AifDenVolumeExtendComplete 201 /* A volume extend completed */#define		AifReqJobList		100	/* Gets back complete job list */#define		AifReqJobsForCtr	101	/* Gets back jobs for specific container */#define		AifReqJobsForScsi	102	/* Gets back jobs for specific SCSI device */ #define		AifReqJobReport		103	/* Gets back a specific job report or list of them */ #define		AifReqTerminateJob	104	/* Terminates job */#define		AifReqSuspendJob	105	/* Suspends a job */#define		AifReqResumeJob		106	/* Resumes a job */ #define		AifReqSendAPIReport	107	/* API generic report requests */#define		AifReqAPIJobStart	108	/* Start a job from the API */#define		AifReqAPIJobUpdate	109	/* Update a job report from the API */#define		AifReqAPIJobFinish	110	/* Finish a job from the API *//* *	Adapter Initiated FIB command structures. Start with the adapter *	initiated FIBs that really come from the adapter, and get responded *	to by the host. */struct aac_aifcmd {	__le32 command;		/* Tell host what type of notify this is */	__le32 seqnum;		/* To allow ordering of reports (if necessary) */	u8 data[1];		/* Undefined length (from kernel viewpoint) */};/** * 	Convert capacity to cylinders *  	accounting for the fact capacity could be a 64 bit value * */static inline u32 cap_to_cyls(sector_t capacity, u32 divisor){	sector_div(capacity, divisor);	return (u32)capacity;}struct scsi_cmnd;const char *aac_driverinfo(struct Scsi_Host *);struct fib *fib_alloc(struct aac_dev *dev);int fib_setup(struct aac_dev *dev);void fib_map_free(struct aac_dev *dev);void fib_free(struct fib * context);void fib_init(struct fib * context);void aac_printf(struct aac_dev *dev, u32 val);int fib_send(u16 command, struct fib * context, unsigned long size, int priority, int wait, int reply, fib_callback callback, void *ctxt);int aac_consumer_get(struct aac_dev * dev, struct aac_queue * q, struct aac_entry **entry);void aac_consumer_free(struct aac_dev * dev, struct aac_queue * q, u32 qnum);int fib_complete(struct fib * context);#define fib_data(fibctx) ((void *)(fibctx)->hw_fib->data)struct aac_dev *aac_init_adapter(struct aac_dev *dev);int aac_get_config_status(struct aac_dev *dev);int aac_get_containers(struct aac_dev *dev);int aac_scsi_cmd(struct scsi_cmnd *cmd);int aac_dev_ioctl(struct aac_dev *dev, int cmd, void __user *arg);int aac_do_ioctl(struct aac_dev * dev, int cmd, void __user *arg);int aac_rx_init(struct aac_dev *dev);int aac_rkt_init(struct aac_dev *dev);int aac_sa_init(struct aac_dev *dev);unsigned int aac_response_normal(struct aac_queue * q);unsigned int aac_command_normal(struct aac_queue * q);unsigned int aac_intr_normal(struct aac_dev * dev, u32 Index);int aac_command_thread(struct aac_dev * dev);int aac_close_fib_context(struct aac_dev * dev, struct aac_fib_context *fibctx);int fib_adapter_complete(struct fib * fibptr, unsigned short size);struct aac_driver_ident* aac_get_driver_ident(int devtype);int aac_get_adapter_info(struct aac_dev* dev);int aac_send_shutdown(struct aac_dev *dev);int probe_container(struct aac_dev *dev, int cid);extern int numacb;extern int acbsize;extern char aac_driver_version[];

⌨️ 快捷键说明

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