port.h

来自「linux2.6.16版本」· C头文件 代码 · 共 242 行

H
242
字号
/*** -----------------------------------------------------------------------------****  Perle Specialix driver for Linux**  Ported from existing RIO Driver for SCO sources. * *  (C) 1990 - 2000 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		: port.h**	SID		: 1.3**	Last Modified	: 11/6/98 11:34:12**	Retrieved	: 11/6/98 11:34:21****  ident @(#)port.h	1.3**** -----------------------------------------------------------------------------*/#ifndef	__rio_port_h__#define	__rio_port_h__#ifdef SCCS_LABELSstatic char *_port_h_sccs_ = "@(#)port.h	1.3";#endif#undef VPIX/*** the port data structure - one per port in the system*/#ifdef STATSstruct RIOStats {	/*	 ** interrupt statistics	 */	uint BreakIntCnt;	uint ModemOffCnt;	uint ModemOnCnt;	uint RxIntCnt;	uint TxIntCnt;	/*	 ** throughput statistics	 */	uint RxCharCnt;	uint RxPktCnt;	uint RxSaveCnt;	uint TxCharCnt;	uint TxPktCnt;	/*	 ** driver entry statistics	 */	uint CloseCnt;	uint IoctlCnt;	uint OpenCnt;	uint ReadCnt;	uint WriteCnt;	/*	 ** proc statistics	 */	uint BlockCnt;	uint OutputCnt;	uint ResumeCnt;	uint RflushCnt;	uint SuspendCnt;	uint TbreakCnt;	uint TimeoutCnt;	uint UnblockCnt;	uint WflushCnt;	uint WFBodgeCnt;};#endif/***	Port data structure*/struct Port {	struct gs_port gs;	int PortNum;		/* RIO port no., 0-511 */	struct Host *HostP;	volatile caddr_t Caddr;	ushort HostPort;	/* Port number on host card */	uchar RupNum;		/* Number of RUP for port */	uchar ID2;		/* Second ID of RTA for port */	ulong State;		/* FLAGS for open & xopen */#define	RIO_LOPEN	0x00001	/* Local open */#define	RIO_MOPEN	0x00002	/* Modem open */#define	RIO_WOPEN	0x00004	/* Waiting for open */#define	RIO_CLOSING	0x00008	/* The port is being close */#define	RIO_XPBUSY	0x00010	/* Transparent printer busy */#define	RIO_BREAKING	0x00020	/* Break in progress */#define	RIO_DIRECT	0x00040	/* Doing Direct output */#define	RIO_EXCLUSIVE	0x00080	/* Stream open for exclusive use */#define	RIO_NDELAY	0x00100	/* Stream is open FNDELAY */#define	RIO_CARR_ON	0x00200	/* Stream has carrier present */#define	RIO_XPWANTR	0x00400	/* Stream wanted by Xprint */#define	RIO_RBLK	0x00800	/* Stream is read-blocked */#define	RIO_BUSY	0x01000	/* Stream is BUSY for write */#define	RIO_TIMEOUT	0x02000	/* Stream timeout in progress */#define	RIO_TXSTOP	0x04000	/* Stream output is stopped */#define	RIO_WAITFLUSH	0x08000	/* Stream waiting for flush */#define	RIO_DYNOROD	0x10000	/* Drain failed */#define	RIO_DELETED	0x20000	/* RTA has been deleted */#define RIO_ISSCANCODE	0x40000	/* This line is in scancode mode */#define	RIO_USING_EUC	0x100000	/* Using extended Unix chars */#define	RIO_CAN_COOK	0x200000	/* This line can do cooking */#define RIO_TRIAD_MODE  0x400000	/* Enable TRIAD special ops. */#define RIO_TRIAD_BLOCK 0x800000	/* Next read will block */#define RIO_TRIAD_FUNC  0x1000000	/* Seen a function key coming in */#define RIO_THROTTLE_RX 0x2000000	/* RX needs to be throttled. */	ulong Config;		/* FLAGS for NOREAD.... */#define	RIO_NOREAD	0x0001	/* Are not allowed to read port */#define	RIO_NOWRITE	0x0002	/* Are not allowed to write port */#define	RIO_NOXPRINT	0x0004	/* Are not allowed to xprint port */#define	RIO_NOMASK	0x0007	/* All not allowed things */#define RIO_IXANY	0x0008	/* Port is allowed ixany */#define	RIO_MODEM	0x0010	/* Stream is a modem device */#define	RIO_IXON	0x0020	/* Port is allowed ixon */#define RIO_WAITDRAIN	0x0040	/* Wait for port to completely drain */#define RIO_MAP_50_TO_50	0x0080	/* Map 50 baud to 50 baud */#define RIO_MAP_110_TO_110	0x0100	/* Map 110 baud to 110 baud *//*** 15.10.1998 ARG - ESIL 0761 prt fix** As LynxOS does not appear to support Hardware Flow Control .....** Define our own flow control flags in 'Config'.*/#define RIO_CTSFLOW	0x0200	/* RIO's own CTSFLOW flag */#define RIO_RTSFLOW	0x0400	/* RIO's own RTSFLOW flag */	struct PHB *PhbP;	/* pointer to PHB for port */	WORD *TxAdd;		/* Add packets here */	WORD *TxStart;		/* Start of add array */	WORD *TxEnd;		/* End of add array */	WORD *RxRemove;		/* Remove packets here */	WORD *RxStart;		/* Start of remove array */	WORD *RxEnd;		/* End of remove array */	uint RtaUniqueNum;	/* Unique number of RTA */	ushort PortState;	/* status of port */	ushort ModemState;	/* status of modem lines */	ulong ModemLines;	/* Modem bits sent to RTA */	uchar CookMode;		/* who expands CR/LF? */	uchar ParamSem;		/* Prevent write during param */	uchar Mapped;		/* if port mapped onto host */	uchar SecondBlock;	/* if port belongs to 2nd block				   of 16 port RTA */	uchar InUse;		/* how many pre-emptive cmds */	uchar Lock;		/* if params locked */	uchar Store;		/* if params stored across closes */	uchar FirstOpen;	/* TRUE if first time port opened */	uchar FlushCmdBodge;	/* if doing a (non)flush */	uchar MagicFlags;	/* require intr processing */#define	MAGIC_FLUSH	0x01	/* mirror of WflushFlag */#define	MAGIC_REBOOT	0x02	/* RTA re-booted, re-open ports */#define	MORE_OUTPUT_EYGOR 0x04	/* riotproc failed to empty clists */	uchar WflushFlag;	/* 1 How many WFLUSHs active *//*** Transparent print stuff*/	struct Xprint {#ifndef MAX_XP_CTRL_LEN#define MAX_XP_CTRL_LEN		16	/* ALSO IN DAEMON.H */#endif		uint XpCps;		char XpOn[MAX_XP_CTRL_LEN];		char XpOff[MAX_XP_CTRL_LEN];		ushort XpLen;	/* strlen(XpOn)+strlen(XpOff) */		uchar XpActive;		uchar XpLastTickOk;	/* TRUE if we can process */#define	XP_OPEN		00001#define	XP_RUNABLE	00002		struct ttystatics *XttyP;	} Xprint;#ifdef VPIX	v86_t *StashP;	uint IntMask;	struct termss VpixSs;	uchar ModemStatusReg;	/* Modem status register */#endif	uchar RxDataStart;	uchar Cor2Copy;		/* copy of COR2 */	char *Name;		/* points to the Rta's name */#ifdef STATS	struct RIOStats Stat;	/* ports statistics */#endif	char *TxRingBuffer;	ushort TxBufferIn;	/* New data arrives here */	ushort TxBufferOut;	/* Intr removes data here */	ushort OldTxBufferOut;	/* Indicates if draining */	int TimeoutId;		/* Timeout ID */	uint Debug;	uchar WaitUntilBooted;	/* True if open should block */	uint statsGather;	/* True if gathering stats */	ulong txchars;		/* Chars transmitted */	ulong rxchars;		/* Chars received */	ulong opens;		/* port open count */	ulong closes;		/* port close count */	ulong ioctls;		/* ioctl count */	uchar LastRxTgl;	/* Last state of rx toggle bit */	spinlock_t portSem;	/* Lock using this sem */	int MonitorTstate;	/* Monitoring ? */	int timeout_id;		/* For calling 100 ms delays */	int timeout_sem;	/* For calling 100 ms delays */	int firstOpen;		/* First time open ? */	char *p;		/* save the global struc here .. */};struct ModuleInfo {	char *Name;	uint Flags[4];		/* one per port on a module */};#endif/*** This struct is required because trying to grab an entire Port structure** runs into problems with differing struct sizes between driver and config.*/struct PortParams {	uint Port;	ulong Config;	ulong State;	struct ttystatics *TtyP;};

⌨️ 快捷键说明

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