cmdpkt.h

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

H
184
字号
/*** -----------------------------------------------------------------------------****  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		: cmdpkt.h**	SID		: 1.2**	Last Modified	: 11/6/98 11:34:09**	Retrieved	: 11/6/98 11:34:20****  ident @(#)cmdpkt.h	1.2**** -----------------------------------------------------------------------------*/#ifndef __rio_cmdpkt_h__#define __rio_cmdpkt_h__#ifdef SCCS_LABELS#ifndef lintstatic char *_cmdpkt_h_sccs_ = "@(#)cmdpkt.h	1.2";#endif#endif/*** overlays for the data area of a packet. Used in both directions** (to build a packet to send, and to interpret a packet that arrives)** and is very inconvenient for MIPS, so they appear as two separate** structures - those used for modifying/reading packets on the card** and those for modifying/reading packets in real memory, which have an _M** suffix.*/#define	RTA_BOOT_DATA_SIZE (PKT_MAX_DATA_LEN-2)/*** The boot information packet looks like this:** This structure overlays a PktCmd->CmdData structure, and so starts** at Data[2] in the actual pkt!*/struct BootSequence {	WORD NumPackets;	WORD LoadBase;	WORD CodeSize;};#define	BOOT_SEQUENCE_LEN	8struct SamTop {	BYTE Unit;	BYTE Link;};struct CmdHdr {	BYTE PcCommand;	union {		BYTE PcPhbNum;		BYTE PcLinkNum;		BYTE PcIDNum;	} U0;};struct PktCmd {	union {		struct {			struct CmdHdr CmdHdr;			struct BootSequence PcBootSequence;		} S1;		struct {			WORD PcSequence;			BYTE PcBootData[RTA_BOOT_DATA_SIZE];		} S2;		struct {			WORD __crud__;			BYTE PcUniqNum[4];	/* this is really a uint. */			BYTE PcModuleTypes;	/* what modules are fitted */		} S3;		struct {			struct CmdHdr CmdHdr;			BYTE __undefined__;			BYTE PcModemStatus;			BYTE PcPortStatus;			BYTE PcSubCommand;	/* commands like mem or register dump */			WORD PcSubAddr;	/* Address for command */			BYTE PcSubData[64];	/* Date area for command */		} S4;		struct {			struct CmdHdr CmdHdr;			BYTE PcCommandText[1];			BYTE __crud__[20];			BYTE PcIDNum2;	/* It had to go somewhere! */		} S5;		struct {			struct CmdHdr CmdHdr;			struct SamTop Topology[LINKS_PER_UNIT];		} S6;	} U1;};struct PktCmd_M {	union {		struct {			struct {				uchar PcCommand;				union {					uchar PcPhbNum;					uchar PcLinkNum;					uchar PcIDNum;				} U0;			} CmdHdr;			struct {				ushort NumPackets;				ushort LoadBase;				ushort CodeSize;			} PcBootSequence;		} S1;		struct {			ushort PcSequence;			uchar PcBootData[RTA_BOOT_DATA_SIZE];		} S2;		struct {			ushort __crud__;			uchar PcUniqNum[4];	/* this is really a uint. */			uchar PcModuleTypes;	/* what modules are fitted */		} S3;		struct {			ushort __cmd_hdr__;			uchar __undefined__;			uchar PcModemStatus;			uchar PcPortStatus;			uchar PcSubCommand;			ushort PcSubAddr;			uchar PcSubData[64];		} S4;		struct {			ushort __cmd_hdr__;			uchar PcCommandText[1];			uchar __crud__[20];			uchar PcIDNum2;	/* Tacked on end */		} S5;		struct {			ushort __cmd_hdr__;			struct Top Topology[LINKS_PER_UNIT];		} S6;	} U1;};#define Command		U1.S1.CmdHdr.PcCommand#define PhbNum		U1.S1.CmdHdr.U0.PcPhbNum#define IDNum		U1.S1.CmdHdr.U0.PcIDNum#define IDNum2		U1.S5.PcIDNum2#define LinkNum		U1.S1.CmdHdr.U0.PcLinkNum#define Sequence	U1.S2.PcSequence#define BootData	U1.S2.PcBootData#define BootSequence	U1.S1.PcBootSequence#define UniqNum		U1.S3.PcUniqNum#define ModemStatus	U1.S4.PcModemStatus#define PortStatus	U1.S4.PcPortStatus#define SubCommand	U1.S4.PcSubCommand#define SubAddr		U1.S4.PcSubAddr#define SubData		U1.S4.PcSubData#define CommandText	U1.S5.PcCommandText#define RouteTopology	U1.S6.Topology#define ModuleTypes	U1.S3.PcModuleTypes#endif

⌨️ 快捷键说明

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