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

📄 if_hy.h

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 H
字号:
/* static	char	*sccsid = "@(#)if_hy.h	4.1 (ULTRIX)	7/2/90"; *//************************************************************************ *									* *			Copyright (c) 1985 by				* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   This software is furnished under a license and may be used and	* *   copied  only  in accordance with the terms of such license and	* *   with the  inclusion  of  the  above  copyright  notice.   This	* *   software  or  any  other copies thereof may not be provided or	* *   otherwise made available to any other person.  No title to and	* *   ownership of the software is hereby transferred.			* *									* *   This software is  derived  from  software  received  from  the	* *   University    of   California,   Berkeley,   and   from   Bell	* *   Laboratories.  Use, duplication, or disclosure is  subject  to	* *   restrictions  under  license  agreements  with  University  of	* *   California and with AT&T.						* *									* *   The information in this software is subject to change  without	* *   notice  and should not be construed as a commitment by Digital	* *   Equipment Corporation.						* *									* *   Digital assumes no responsibility for the use  or  reliability	* *   of its software on equipment which is not supplied by Digital.	* *									* ************************************************************************//************************************************************************ *			Modification History				* *									* *	Larry Cohen  -	09/16/85					* * 		Add 43bsd alpha tape changes for subnet routing		* *									* ************************************************************************//* * Copyright (c) 1982, 1986 Regents of the University of California. * All rights reserved.  The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * *	@(#)if_hy.h	7.1 (Berkeley) 6/5/86 *//* * 4.2 BSD Unix Kernel - Vax Network Interface Support * * $Header: if_hy.h,v 10.0 84/06/30 19:51:21 steveg Stable $ * $Locker:  $ * * Modifications from Berkeley 4.2 BSD * Copyright (c) 1983, Tektronix Inc. * All Rights Reserved * * * $Log:	if_hy.h,v $ *	Revision 10.0  84/06/30  19:51:21  steveg *	Big Build *	 *	Revision 3.13  84/05/30  19:40:58  steveg *	update hy_stat to reflect new microcode *	 *	Revision 3.12  84/05/30  19:06:57  steveg *	move driver state number definition here from if_hy.c *	 *	Revision 3.11  84/05/30  18:56:15  steveg *	add definition of HYE_MAX and HYE_SIZE *	 *	Revision 3.10  84/05/30  17:14:04  steveg *	add hyl_filter *	 *	Revision 3.9  84/05/30  13:45:24  steveg *	rework logging *	 *	Revision 3.8  84/05/04  05:18:59  steveg *	hyr_key now a u_long *	 *	Revision 3.7  84/05/01  22:45:20  steveg *	add H_RLOOPBK for A710 remote end loopback command *	 * *//* * Structure of a HYPERchannel adapter header */struct	hy_hdr {	short	hyh_ctl;		/* control */	short	hyh_access;		/* access code */	union {		short	hyh_addr;		char	hyh_baddr[2];	} hyh_uto, hyh_ufrom;		/* to/from address */	short	hyh_param;		/* parameter word */	short	hyh_type;		/* record type */};#define hyh_to		hyh_uto.hyh_addr#define hyh_to_port	hyh_uto.hyh_baddr[1]#define hyh_to_adapter	hyh_uto.hyh_baddr[0]#define hyh_from	hyh_ufrom.hyh_addr#define hyh_from_port	hyh_ufrom.hyh_baddr[1]#define hyh_from_adapter hyh_ufrom.hyh_baddr[0]/* * Structure of a HYPERchannel message header (from software) */struct	hym_hdr {	struct {		short	hymd_mplen;	/* message proper len, if associated data */	} hym_d;	struct	hy_hdr hym_h;	/* hardware header, MUST BE LAST */};#define hym_mplen	hym_d.hymd_mplen#define hym_ctl		hym_h.hyh_ctl#define hym_access	hym_h.hyh_access#define hym_param	hym_h.hyh_param#define hym_type	hym_h.hyh_type#define hym_to		hym_h.hyh_to#define hym_to_port	hym_h.hyh_to_port#define hym_to_adapter	hym_h.hyh_to_adapter#define hym_from	hym_h.hyh_from#define hym_from_port	hym_h.hyh_from_port#define hym_from_adapter hym_h.hyh_from_adapter#define HYM_SWLEN (sizeof(struct hym_hdr) - sizeof(struct hy_hdr))/* * HYPERchannel header word control bits */#define H_XTRUNKS	0x00F0	/* transmit trunks */#define H_RTRUNKS	0x000F	/* remote trunks to transmit on for loopback */#define H_ASSOC		0x0100	/* has associated data */#define H_LOOPBK	0x00FF	/* loopback command */#define H_RLOOPBK	0x008F	/* A710 remote loopback command *//* * Hyperchannel record types */#define HYLINK_IP	0	/* Internet Protocol Packet */#define HYROUTE#define HYLOG/* * Routing database */#define HYRSIZE  37	/* max number of adapters in routing tables */struct hy_route {	time_t hyr_lasttime;		/* last update time */	u_char hyr_gateway[256];	struct hyr_hash {		u_long	hyr_key;	/* desired address */		u_short hyr_flags;	/* status flags - see below */		u_short hyr_size;	/* number of entries */		union {			/*			 * direct entry (can get there directly)			 */			struct {				u_short hyru_dst;	/* adapter number & port */				u_short hyru_ctl;	/* trunks to try */				u_short hyru_access;	/* access code (mostly unused) */			} hyr_d;#define hyr_dst		hyr_u.hyr_d.hyru_dst#define hyr_ctl		hyr_u.hyr_d.hyru_ctl#define hyr_access	hyr_u.hyr_d.hyru_access			/*			 * indirect entry (one or more hops required)			 */			struct {				u_char hyru_pgate;	/* 1st gateway slot */				u_char hyru_egate;	/* # gateways */				u_char hyru_nextgate;	/* gateway to use next */			} hyr_i;#define hyr_pgate	hyr_u.hyr_i.hyru_pgate#define hyr_egate	hyr_u.hyr_i.hyru_egate#define hyr_nextgate	hyr_u.hyr_i.hyru_nextgate		} hyr_u;	} hyr_hash[HYRSIZE];};/* * routing table set/get structure * * used to just pass the entire routing table through, but 4.2 ioctls * limit the data part of an ioctl to 128 bytes or so and use the * interface name to get things sent the right place. * see ../net/if.h for additional details. */struct hyrsetget {	char	hyrsg_name[IFNAMSIZ];	/* if name, e.g. "hy0" */	struct hy_route *hyrsg_ptr;	/* pointer to routing table */	unsigned	hyrsg_len;	/* size of routing table provided */};#define HYR_INUSE	0x01	/* entry in use */#define HYR_DIR		0x02	/* direct entry */#define HYR_GATE	0x04	/* gateway entry */#define HYR_LOOP	0x08	/* hardware loopback entry */#define HYR_RLOOP	0x10	/* remote adapter hardware loopback entry */#define HYRHASH(x) (((x) ^ ((x) >> 16)) % HYRSIZE)#define HYSETROUTE	_IOW('i', 0x80, struct hyrsetget)#define HYGETROUTE	_IOW('i', 0x81, struct hyrsetget)struct	hylsetget {	char	hylsg_name[IFNAMSIZ];	/* if name, e.g. "hy0" */	int	hylsg_cmd;		/* logging command */	caddr_t	hylsg_ptr;		/* pointer to table */	u_long	hylsg_len;		/* size of table provided */};	#define HYSETLOG	_IOW('i', 0x82, struct hylsetget)#define HYGETLOG	_IOW('i', 0x83, struct hylsetget)#define HYGETELOG	_IOW('i', 0x84, struct hylsetget)/* * Structure of Statistics Record (counters) */struct	hy_stat {	u_char	hyc_df0[3];		/* # data frames trunk 0 */	u_char	hyc_df1[3];		/* # data frames trunk 1 */	u_char	hyc_df2[3];		/* # data frames trunk 2 */	u_char	hyc_df3[3];		/* # data frames trunk 3 */	u_char	hyc_cancel[2];		/* # cancel operations */	u_char	hyc_abort[2];		/* # aborts */	u_char	hyc_ret0[3];		/* # retransmissions trunk 0 */	u_char	hyc_ret1[3];		/* # retransmissions trunk 1 */	u_char	hyc_ret2[3];		/* # retransmissions trunk 2 */	u_char	hyc_ret3[3];		/* # retransmissions trunk 3 */	u_char	hyc_atype[3];		/* adapter type and revision level */	u_char	hyc_uaddr;		/* adapter unit number */};/* * Structure of the Status Record */struct hy_status {	u_char	hys_gen_status;		/* general status byte */	u_char	hys_last_fcn;		/* last function code issued */	u_char	hys_resp_trunk;		/* trunk response byte */	u_char	hys_status_trunk;	/* trunk status byte */	u_char	hys_recd_resp;		/* recieved response byte */	u_char	hys_error;		/* error code */	u_char	hys_caddr;		/* compressed addr of 1st msg on chain */	u_char	hys_pad;		/* not used */};/* * Get port number from status record */#define PORTNUM(p)	(((p)->hys_gen_status >> 6) & 0x03)#define HYL_SIZE 16*1024struct hy_log {	struct	hy_log *hyl_self;	u_char	hyl_enable;		/* logging enabled? */	u_char	hyl_onerr;		/* state to enter on error */	u_short	hyl_wait;		/* number of bytes till next wakeup */	u_short	hyl_count;		/* number of samples till stop */	u_short hyl_icount;		/* initial value of hyl_count */	u_long	hyl_filter;		/* log items with specific bits set */	u_char	*hyl_eptr;		/* &hy_log.hyl_buf[HYL_SIZE] */	u_char	*hyl_ptr;		/* pointer into hyl_buf */	u_char	hyl_buf[HYL_SIZE];	/* log buffer space */};#define HYL_NOP		0#define HYL_UP		1	/* markup */#define HYL_STATUS	2	/* status results (struct hy_status) */#define HYL_STATISTICS	3	/* statistics (struct hy_stat) */#define HYL_XMIT	4	/* packed being send (struct hym_hdr) */#define HYL_RECV	5	/* recieved pkt (short len; struct hym_hdr) */#define HYL_CMD		6	/* cmd issued (uchar cmd, state; short count) */#define HYL_INT		7	/* interrupt (short csr, wcr) */#define	HYL_CANCEL	8	/* cancel transmit attempt */#define	HYL_RESET	9	/* hyinit or unibus reset */#define	HYL_IOCTL	10	/* hyioctl */#define HYL_DISABLED	0	/* logging disabled */#define HYL_CONTINUOUS	1	/* continuous logging */#define HYL_CATCHN	2	/* hyl_count transactions being captured *//* * error code histograms */#define	HYE_MAX		0x18		/* maximum adapter error code */#define	HYE_BINS	4		/* number of command bins */#define	HYE_SIZE  (HYE_MAX+1)*HYE_BINS	/* size of histogram buffer *//* * Requests for service (in order by descending priority). */#define RQ_ENDOP	001	/* end the last adapter function */#define RQ_REISSUE	002	/* reissue previous cmd after status */#define RQ_STATUS	004	/* get the status of the adapter */#define RQ_STATISTICS	010	/* get the statistics of the adapter */#define RQ_MARKDOWN	020	/* mark this adapter port down */#define RQ_MARKUP	040	/* mark this interface up */#define RQ_XASSOC	0100	/* associated data to transmit *//*  * Driver states. */#define	STARTUP		0	/* initial state (before fully there) */#define	IDLE		1	/* idle state */#define	STATSENT	2	/* status cmd sent to adapter */#define	ENDOPSENT	3	/* end operation cmd sent */#define	RECVSENT	4	/* input message cmd sent */#define	RECVDATASENT	5	/* input data cmd sent */#define	XMITSENT	6	/* transmit message cmd sent */#define	XMITDATASENT	7	/* transmit data cmd sent */#define	WAITING		8	/* waiting for messages */#define	CLEARSENT	9	/* clear wait for message cmd sent */#define MARKPORT	10	/* mark this host's adapter port down issued */#define RSTATSENT	11	/* read statistics cmd sent to adapter */

⌨️ 快捷键说明

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