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

📄 rio.h

📁 linux-2.6.15.6
💻 H
字号:
/*** -----------------------------------------------------------------------------****  Perle Specialix driver for Linux**  Ported from existing RIO Driver for SCO sources. * *  (C) 1990 - 1998 Specialix International Ltd., Byfleet, Surrey, UK. * *      This program is free software; you can redistribute it and/or modify *      it under the terms of the GNU General Public License as published by *      the Free Software Foundation; either version 2 of the License, or *      (at your option) any later version. * *      This program is distributed in the hope that it will be useful, *      but WITHOUT ANY WARRANTY; without even the implied warranty of *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *      GNU General Public License for more details. * *      You should have received a copy of the GNU General Public License *      along with this program; if not, write to the Free Software *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.****	Module		: rio.h**	SID		: 1.3**	Last Modified	: 11/6/98 11:34:13**	Retrieved	: 11/6/98 11:34:22****  ident @(#)rio.h	1.3**** -----------------------------------------------------------------------------*/#ifndef	__rio_rio_h__#define	__rio_rio_h__#ifdef SCCS_LABELSstatic char *_rio_h_sccs_ = "@(#)rio.h	1.3";#endif/*** 30.09.1998 ARG -** Introduced driver version and host card type strings*/#define RIO_DRV_STR "Specialix RIO Driver"#define RIO_AT_HOST_STR "ISA"#define RIO_PCI_HOST_STR "PCI"/*** rio_info_store() commands (arbitary values) :*/#define RIO_INFO_PUT	0xA4B3C2D1#define RIO_INFO_GET	0xF1E2D3C4/*** anything that I couldn't cram in somewhere else*//*#ifndef RIODEBUG#define debug#else#define debug rioprint#endif*//***	Maximum numbers of things*/#define	RIO_SLOTS	4	/* number of configuration slots */#define	RIO_HOSTS	4	/* number of hosts that can be found */#define	PORTS_PER_HOST	128	/* number of ports per host */#define	LINKS_PER_UNIT	4	/* number of links from a host */#define	RIO_PORTS	(PORTS_PER_HOST * RIO_HOSTS) /* max. no. of ports */#define	RTAS_PER_HOST	(MAX_RUP) /* number of RTAs per host */#define	PORTS_PER_RTA	(PORTS_PER_HOST/RTAS_PER_HOST)	/* ports on a rta */#define	PORTS_PER_MODULE 4	/* number of ports on a plug-in module */				/* number of modules on an RTA */#define	MODULES_PER_RTA	 (PORTS_PER_RTA/PORTS_PER_MODULE)#define MAX_PRODUCT	16	/* numbr of different product codes */#define MAX_MODULE_TYPES 16	/* number of different types of module */#define RIO_CONTROL_DEV	128	/* minor number of host/control device */#define RIO_INVALID_MAJOR 0	/* test first host card's major no for validity *//*** number of RTAs that can be bound to a master*/#define MAX_RTA_BINDINGS (MAX_RUP * RIO_HOSTS)/***	Unit types*/#define PC_RTA16	0x90000000#define PC_RTA8		0xe0000000#define TYPE_HOST	0#define TYPE_RTA8	1#define TYPE_RTA16	2/***	Flag values returned by functions*/#define	RIO_FAIL	-1#define	RIO_SUCCESS	0#define	COPYFAIL	-1	/* copy[in|out] failed *//*** SysPort value for something that hasn't any ports*/#define	NO_PORT	0xFFFFFFFF/*** Unit ID Of all hosts*/#define	HOST_ID	0/*** Break bytes into nybles*/#define	LONYBLE(X)	((X) & 0xF)#define	HINYBLE(X)	(((X)>>4) & 0xF)/*** Flag values passed into some functions*/#define	DONT_SLEEP	0#define	OK_TO_SLEEP	1#define	DONT_PRINT	1#define	DO_PRINT	0#define PRINT_TO_LOG_CONS	0#define PRINT_TO_CONS	1#define PRINT_TO_LOG	2/*** Timeout has trouble with times of less than 3 ticks...*/#define	MIN_TIMEOUT	3/***	Generally useful constants*/#define	HALF_A_SECOND		((HZ)>>1)#define	A_SECOND		(HZ)#define	HUNDRED_HZ		((HZ/100)?(HZ/100):1)#define	FIFTY_HZ		((HZ/50)?(HZ/50):1)#define	TWENTY_HZ		((HZ/20)?(HZ/20):1)#define	TEN_HZ			((HZ/10)?(HZ/10):1)#define	FIVE_HZ			((HZ/5)?(HZ/5):1)#define	HUNDRED_MS		TEN_HZ#define	FIFTY_MS		TWENTY_HZ#define	TWENTY_MS		FIFTY_HZ#define	TEN_MS			HUNDRED_HZ#define	TWO_SECONDS		((A_SECOND)*2)#define	FIVE_SECONDS		((A_SECOND)*5)#define	TEN_SECONDS		((A_SECOND)*10)#define	FIFTEEN_SECONDS		((A_SECOND)*15)#define	TWENTY_SECONDS		((A_SECOND)*20)#define	HALF_A_MINUTE		(A_MINUTE>>1)#define	A_MINUTE		(A_SECOND*60)#define	FIVE_MINUTES		(A_MINUTE*5)#define	QUARTER_HOUR		(A_MINUTE*15)#define	HALF_HOUR		(A_MINUTE*30)#define	HOUR			(A_MINUTE*60)#define	SIXTEEN_MEG		0x1000000#define	ONE_MEG			0x100000#define	SIXTY_FOUR_K		0x10000#define	RIO_AT_MEM_SIZE		SIXTY_FOUR_K#define	RIO_EISA_MEM_SIZE	SIXTY_FOUR_K#define	RIO_MCA_MEM_SIZE	SIXTY_FOUR_K#define	POLL_VECTOR		0x100#define	COOK_WELL		0#define	COOK_MEDIUM		1#define	COOK_RAW		2/***	Pointer manipulation stuff**	RIO_PTR takes hostp->Caddr and the offset into the DP RAM area**	and produces a UNIX caddr_t (pointer) to the object**	RIO_OBJ takes hostp->Caddr and a UNIX pointer to an object and**	returns the offset into the DP RAM area.*/#define	RIO_PTR(C,O) (((caddr_t)(C))+(0xFFFF&(O)))#define	RIO_OFF(C,O) ((int)(O)-(int)(C))/***	How to convert from various different device number formats:**	DEV is a dev number, as passed to open, close etc - NOT a minor**	number!****	Note:	LynxOS only gives us 8 bits for the device minor number,**		so all this crap here to deal with 'modem' bits etc. is**		just a load of irrelevant old bunkum!**		This however does not stop us needing to define a value**		for RIO_MODEMOFFSET which is required by the 'riomkdev'**		utility in the New Config Utilities suite.*//* 0-511: direct 512-1023: modem */#define	RIO_MODEMOFFSET		0x200	/* doesn't mean anything */#define	RIO_MODEM_MASK		0x1FF#define	RIO_MODEM_BIT		0x200#define	RIO_UNMODEM(DEV)	(MINOR(DEV) & RIO_MODEM_MASK)#define	RIO_ISMODEM(DEV)	(MINOR(DEV) & RIO_MODEM_BIT)#define RIO_PORT(DEV,FIRST_MAJ)	( (MAJOR(DEV) - FIRST_MAJ) * PORTS_PER_HOST) \					+ MINOR(DEV)#define	splrio	spltty#define	RIO_IPL	5#define	RIO_PRI	(PZERO+10)#define RIO_CLOSE_PRI	PZERO-1	/* uninterruptible sleeps for close */typedef struct DbInf{	uint	Flag;	char	Name[8];} DbInf;#ifndef TRUE#define	TRUE (1==1)#endif#ifndef FALSE#define	FALSE	(!TRUE)#endif#define CSUM(pkt_ptr)  (((ushort *)(pkt_ptr))[0] + ((ushort *)(pkt_ptr))[1] + \			((ushort *)(pkt_ptr))[2] + ((ushort *)(pkt_ptr))[3] + \			((ushort *)(pkt_ptr))[4] + ((ushort *)(pkt_ptr))[5] + \			((ushort *)(pkt_ptr))[6] + ((ushort *)(pkt_ptr))[7] + \			((ushort *)(pkt_ptr))[8] + ((ushort *)(pkt_ptr))[9] )/*** This happy little macro copies SIZE bytes of data from FROM to TO** quite well. SIZE must be a constant.*/#define CCOPY( FROM, TO, SIZE ) { *(struct s { char data[SIZE]; } *)(TO) = *(struct s *)(FROM); }/*** increment a buffer pointer modulo the size of the buffer...*/#define	BUMP( P, I )	((P) = (((P)+(I)) & RIOBufferMask))#define INIT_PACKET( PK, PP ) \{ \	*((uint *)PK)    = PP->PacketInfo; \}#define	RIO_LINK_ENABLE	0x80FF /* FF is a hack, mainly for Mips, to        */			       /* prevent a really stupid race condition.  */#define	NOT_INITIALISED	0#define	INITIALISED	1#define	NOT_POLLING	0#define	POLLING		1#define	NOT_CHANGED	0#define	CHANGED		1#define	NOT_INUSE	0#define	DISCONNECT	0#define	CONNECT		1/*** Machine types - these must NOT overlap with product codes 0-15*/#define	RIO_MIPS_R3230	31#define	RIO_MIPS_R4030	32#define	RIO_IO_UNKNOWN	-2#undef	MODERN#define	ERROR( E )	do { u.u_error = E; return OPENFAIL } while ( 0 )/* Defines for MPX line discipline routines */#define DIST_LINESW_OPEN	0x01#define DIST_LINESW_CLOSE	0x02#define DIST_LINESW_READ	0x04#define DIST_LINESW_WRITE	0x08#define DIST_LINESW_IOCTL	0x10#define DIST_LINESW_INPUT	0x20#define DIST_LINESW_OUTPUT	0x40#define DIST_LINESW_MDMINT	0x80#endif /* __rio_h__ */

⌨️ 快捷键说明

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