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

📄 mptbase.h

📁 ARM S3C2410 linux2.4 内核源码
💻 H
📖 第 1 页 / 共 2 页
字号:
		 * for each REQ entry.		 */	u8			*sense_buf_pool;	dma_addr_t		 sense_buf_pool_dma;	struct pci_dev		*pcidev;/*	atomic_t		 userCnt;	*/	u8			*memmap;	int			 mtrr_reg;	struct Scsi_Host	*sh;	struct proc_dir_entry	*ioc_dentry;	struct _MPT_ADAPTER	*alt_ioc;	int			 hs_reply_idx;	u32			 hs_req[MPT_MAX_FRAME_SIZE/sizeof(u32)];	u16			 hs_reply[MPT_MAX_FRAME_SIZE/sizeof(u16)];	IOCFactsReply_t		 facts;	PortFactsReply_t	 pfacts[2];	LANPage0_t		 lan_cnfg_page0;	LANPage1_t		 lan_cnfg_page1;	u8			 FirstWhoInit;	u8			 pad1[3];} MPT_ADAPTER;typedef struct _MPT_ADAPTER_TRACKER {	MPT_ADAPTER	*head;	MPT_ADAPTER	*tail;} MPT_ADAPTER_TRACKER;/* *  New return value convention: *    1 = Ok to free associated request frame *    0 = not Ok ... */typedef int (*MPT_CALLBACK)(MPT_ADAPTER *ioc, MPT_FRAME_HDR *req, MPT_FRAME_HDR *reply);typedef int (*MPT_EVHANDLER)(MPT_ADAPTER *ioc, EventNotificationReply_t *evReply);typedef int (*MPT_RESETHANDLER)(MPT_ADAPTER *ioc, int reset_phase);/* reset_phase defs */#define MPT_IOC_PRE_RESET		0#define MPT_IOC_POST_RESET		1/* * Invent MPT host event (super-set of MPI Events) * Fitted to 1030's 64-byte [max] request frame size */typedef struct _MPT_HOST_EVENT {	EventNotificationReply_t	 MpiEvent;	/* 8 32-bit words! */	u32				 pad[6];	void				*next;} MPT_HOST_EVENT;#define MPT_HOSTEVENT_IOC_BRINGUP	0x91#define MPT_HOSTEVENT_IOC_RECOVER	0x92/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*//* *  Funky (private) macros... */#ifdef MPT_DEBUG#define dprintk(x)  printk x#else#define dprintk(x)#endif#ifdef MPT_DEBUG_HANDSHAKE#define dhsprintk(x)  printk x#else#define dhsprintk(x)#endif#if defined(MPT_DEBUG) || defined(MPT_DEBUG_MSG_FRAME)#define dmfprintk(x)  printk x#else#define dmfprintk(x)#endif#ifdef MPT_DEBUG_IRQ#define dirqprintk(x)  printk x#else#define dirqprintk(x)#endif#ifdef MPT_DEBUG_EVENTS#define deventprintk(x)  printk x#else#define deventprintk(x)#endif#ifdef MPT_DEBUG_SPINLOCK#define dslprintk(x)  printk x#else#define dslprintk(x)#endif#ifdef MPT_DEBUG_SG#define dsgprintk(x)  printk x#else#define dsgprintk(x)#endif#define MPT_INDEX_2_MFPTR(ioc,idx) \	(MPT_FRAME_HDR*)( (u8*)(ioc)->req_frames + (ioc)->req_sz * (idx) )#define MFPTR_2_MPT_INDEX(ioc,mf) \	(int)( ((u8*)mf - (u8*)(ioc)->req_frames) / (ioc)->req_sz )#define Q_INIT(q,type)  (q)->head = (q)->tail = (type*)(q)#define Q_IS_EMPTY(q)   ((Q_ITEM*)(q)->head == (Q_ITEM*)(q))#define Q_ADD_TAIL(qt,i,type) { \	Q_TRACKER	*_qt = (Q_TRACKER*)(qt); \	Q_ITEM		*oldTail = _qt->tail; \	(i)->forw = (type*)_qt; \	(i)->back = (type*)oldTail; \	oldTail->forw = (Q_ITEM*)(i); \	_qt->tail = (Q_ITEM*)(i); \}#define Q_ADD_HEAD(qt,i,type) { \	Q_TRACKER	*_qt = (Q_TRACKER*)(qt); \	Q_ITEM		*oldHead = _qt->head; \	(i)->forw = (type*)oldHead; \	(i)->back = (type*)_qt; \	oldHead->back = (Q_ITEM*)(i); \	_qt->head = (Q_ITEM*)(i); \}#define Q_DEL_ITEM(i) { \	Q_ITEM  *_forw = (Q_ITEM*)(i)->forw; \	Q_ITEM  *_back = (Q_ITEM*)(i)->back; \	_back->forw = _forw; \	_forw->back = _back; \}#define SWAB4(value) \	(u32)(   (((value) & 0x000000ff) << 24) \	       | (((value) & 0x0000ff00) << 8)  \	       | (((value) & 0x00ff0000) >> 8)  \	       | (((value) & 0xff000000) >> 24) )#if defined(MPT_DEBUG) || defined(MPT_DEBUG_MSG_FRAME)#define DBG_DUMP_REPLY_FRAME(mfp) \	{	u32 *m = (u32 *)(mfp);					\		int  i, n = (le32_to_cpu(m[0]) & 0x00FF0000) >> 16;	\		printk(KERN_INFO " ");					\		for (i=0; i<n; i++)					\			printk(" %08x", le32_to_cpu(m[i]));		\		printk("\n");						\	}#define DBG_DUMP_REQUEST_FRAME_HDR(mfp) \	{	int  i, n = 3;						\		u32 *m = (u32 *)(mfp);					\		printk(KERN_INFO " ");					\		for (i=0; i<n; i++)					\			printk(" %08x", le32_to_cpu(m[i]));		\		printk("\n");						\	}#else#define DBG_DUMP_REPLY_FRAME(mfp)#define DBG_DUMP_REQUEST_FRAME_HDR(mfp)#endif/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/#endif		/* } __KERNEL__ *//*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*//* *  MPT Control IOCTLs and structures */#define MPT_MAGIC_NUMBER	'm'#define MPTRWPERF		_IOWR(MPT_MAGIC_NUMBER,0,struct mpt_raw_r_w)#define MPTRWPERF_CHK		_IOR(MPT_MAGIC_NUMBER,13,struct mpt_raw_r_w)#define MPTRWPERF_RESET		_IOR(MPT_MAGIC_NUMBER,14,struct mpt_raw_r_w)#define MPTFWDOWNLOAD		_IOWR(MPT_MAGIC_NUMBER,15,struct mpt_fw_xfer)#define MPTSCSICMD		_IOWR(MPT_MAGIC_NUMBER,16,struct mpt_scsi_cmd)/* *  Define something *vague* enough that caller doesn't *  really need to know anything about device parameters *  (blk_size, capacity, etc.) */struct mpt_raw_r_w {	unsigned int	 iocnum;	/* IOC unit number */	unsigned int	 port;		/* IOC port number */	unsigned int	 target;	/* SCSI Target */	unsigned int	 lun;		/* SCSI LUN */	unsigned int	 iters;		/* N iterations */	unsigned short	 nblks;		/* number of blocks per IO */	unsigned short	 qdepth;	/* max Q depth on this device */	unsigned char	 range;		/* 0-100% of FULL disk capacity, 0=use (nblks X iters) */	unsigned char	 skip;		/* % of disk to skip */	unsigned char	 rdwr;		/* 0-100%, 0=pure ReaDs, 100=pure WRites */	unsigned char	 seqran;	/* 0-100%, 0=pure SEQential, 100=pure RANdom */	unsigned int	 cache_sz;	/* In Kb!  Optimize hits to N Kb cache size */};struct mpt_fw_xfer {	unsigned int	 iocnum;	/* IOC unit number *//*	u8		 flags;*/	/* Message flags - bit field */	unsigned int	 fwlen;	void		*bufp;		/* Pointer to firmware buffer */};struct mpt_scsi_cmd {	unsigned int	 iocnum;	/* IOC unit number */	unsigned int	 port;		/* IOC port number */	unsigned int	 target;	/* SCSI Target */	unsigned int	 lun;		/* SCSI LUN */	SCSIIORequest_t	 scsi_req;	SCSIIOReply_t	 scsi_reply;};struct mpt_ioctl_sanity {	unsigned int	 iocnum;};#ifdef __KERNEL__	/* { *//*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*//* *  Public entry points... */extern int	 mpt_register(MPT_CALLBACK cbfunc, MPT_DRIVER_CLASS dclass);extern void	 mpt_deregister(int cb_idx);extern int	 mpt_event_register(int cb_idx, MPT_EVHANDLER ev_cbfunc);extern void	 mpt_event_deregister(int cb_idx);extern int	 mpt_reset_register(int cb_idx, MPT_RESETHANDLER reset_func);extern void	 mpt_reset_deregister(int cb_idx);extern int	 mpt_register_ascqops_strings(/*ASCQ_Table_t*/void *ascqTable, int ascqtbl_sz, const char **opsTable);extern void	 mpt_deregister_ascqops_strings(void);extern MPT_FRAME_HDR	*mpt_get_msg_frame(int handle, int iocid);extern void	 mpt_free_msg_frame(int handle, int iocid, MPT_FRAME_HDR *mf);extern void	 mpt_put_msg_frame(int handle, int iocid, MPT_FRAME_HDR *mf);extern int	 mpt_send_handshake_request(int handle, int iocid, int reqBytes, u32 *req);extern int	 mpt_verify_adapter(int iocid, MPT_ADAPTER **iocpp);extern MPT_ADAPTER	*mpt_adapter_find_first(void);extern MPT_ADAPTER	*mpt_adapter_find_next(MPT_ADAPTER *prev);extern void	 mpt_print_ioc_summary(MPT_ADAPTER *ioc, char *buf, int *size, int len, int showlan);extern void	 mpt_print_ioc_facts(MPT_ADAPTER *ioc, char *buf, int *size, int len);/* *  Public data decl's... */extern int		  mpt_lan_index;	/* needed by mptlan.c */extern int		  mpt_stm_index;	/* needed by mptstm.c */extern void		 *mpt_v_ASCQ_TablePtr;extern const char	**mpt_ScsiOpcodesPtr;extern int		  mpt_ASCQ_TableSz;/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/#endif		/* } __KERNEL__ *//* *  More (public) macros... */#ifndef MIN#define MIN(a, b)   (((a) < (b)) ? (a) : (b))#endif#ifndef MAX#define MAX(a, b)   (((a) > (b)) ? (a) : (b))#endif#ifndef offsetof#define offsetof(t, m)	((size_t) (&((t *)0)->m))#endif#if defined(__alpha__) || defined(__sparc_v9__)#define CAST_U32_TO_PTR(x)	((void *)(u64)x)#define CAST_PTR_TO_U32(x)	((u32)(u64)x)#else#define CAST_U32_TO_PTR(x)	((void *)x)#define CAST_PTR_TO_U32(x)	((u32)x)#endif#define MPT_PROTOCOL_FLAGS_c_c_c_c(pflags) \	((pflags) & MPI_PORTFACTS_PROTOCOL_INITIATOR)	? 'I' : 'i',	\	((pflags) & MPI_PORTFACTS_PROTOCOL_TARGET)	? 'T' : 't',	\	((pflags) & MPI_PORTFACTS_PROTOCOL_LAN)		? 'L' : 'l',	\	((pflags) & MPI_PORTFACTS_PROTOCOL_LOGBUSADDR)	? 'B' : 'b'/*}-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/#endif

⌨️ 快捷键说明

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