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

📄 msiscs.h

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 H
字号:
/* *	@(#)msiscs.h	2.7	(ULTRIX)	10/12/89 *//************************************************************************ *                                                                      * *                      Copyright (c) 1989 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.                   * *                                                                      * *   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.     * *                                                                      * ************************************************************************ * * *   Facility:	Systems Communication Architecture *		Mayfair Storage Interconnect Port Driver * *   Abstract:	This module contains Mayfair Storage Interconnect Port *		Driver( MSI ) constants and data structure definitions *		visible to SCS. * *   Creator:	Todd M. Katz	Creation Date:	December 06, 1988 * *   Modification History: * *   16-Jun-1989	Pete Keilty *	Changes smp locks to type of struct lock_t. *//* MSI Data Structure Definitions. */typedef struct _msi_dmapinfo {		/* Double Mapping Buffer Information */    u_long		protopte;	/* Proto-pte( only PFN is missing )  */    struct pte		*dmap_bpteaddr;	/* Double mapping buffer sva pte ptr */    char		*dmap_baddr;	/* Double mapping buffer address     */    union	{			/* First overlaid field		     */	u_char		*saddr;		/*  Target/Source segment address    */	u_long		sboff;		/*  Target/Source segment byte offset*/    } un1;#define	Saddr	un1.saddr#define	Sboff	un1.sboff    u_long		ssize;		/* Number of bytes in segment	     */} MSI_DMAPINFO;typedef	struct _msi_portid {		/* Local/Remote MSI Port ID Info     */    u_short		port_type[ 2 ];	/* Port type			     */    struct _msirpi	portinfo;	/* Port information		     */    u_short		mbz[ 10 ];	/* MBZ				     */} MSI_PORTID;typedef	struct _msi_pportinfo {		/* Per-DSSI Port Information	     */    struct _msibq xretryq;		/* MSIB transmit retry queue	     */    struct		{		/* Remote port status flags	     */	u_long	path		:  1;	/*  Path exists			     */	u_long	vc		:  1;	/*  Virtual circuit enabled	     */	u_long	dip		:  1;	/*  Transmit delaying in progress    */	u_long			: 29;    } rpstatus;					/* Remote port status flag bit masks */#define	MSI_RPPATH	0x00000001	/*  ( used when performance matters )*/#define	MSI_RPVC	0x00000002#define	MSI_RPDIP	0x00000004    u_long	  xretry_timer;		/* Xmt retry timer( 10 msec units )  */    u_long	  xretrys;		/* Current transmit retry attempt    */    u_long	  xseqno;		/* Next transmit sequence number     */					/*  ( Occupies bits: 9-11 )	     */    u_long	  rseqno;		/* Next expected receive seq number  */					/*  ( Occupies bits: 9-11 )	     */} MSI_PPORTINFO;/* Field				     Lock * ---------------			-------------- * comqh				COMQH * comql				COMQL * mfreeq				MFREEQ * dfreeq				DFREEQ * rbusy				RFP * xbusy				XFP * xfree				XFP * lpstatus.active			XFP/RFP - need both to modify * lpstatus.timer			XFP * rdmap				RFP * xdmap				XFP * perport.xretryq			XFP * perport.rpstatus.path		XFP * perport.rpstatus.vc			XFP/RFP - need both to modify * perport.rpstatus.dip			XFP * perport.xretry_timer			XFP * perport.xretrys			XFP * perport.xseqno			XFP * perport.rseqno			RFP * * All other volatile fields/bits controlled by standard PCCB lock. * * Lock Hierarchy: PCCB -> PB -> RFP -> XFP -> { COMQH,COMQL,DFREEQ,MFREEQ } */typedef	struct _msipccb	{		/* MSI Specific Fields of PCCB	     */    struct _msibq	comqh;		/* MSIB high priority command queue  */    struct _msibq	comql;		/* MSIB low priority command queue   */    struct _msibq	mfreeq;		/* MSIB message free queue	     */    struct _msibq	dfreeq;		/* MSIB datagram free queue	     */    struct _siibq	*rbusy;		/* First rcv-in-progress SIIBUF ptr  */    struct _siibq	*xbusy;		/* First xmt-in-progress SIIBUF ptr  */    struct _siibq	*xfree;		/* First free transmit SIIBUF pointer*/    u_char		*siibuffer;	/* SII 128K RAM buffer address	     */    u_char		*siiregs;	/* SII registers base address	     */    u_long		randomseed;	/* Random number generator seed	     */    u_long		pkt_size;	/* Size of port command	packet	     */    u_long		msg_ovhd;	/* Size of message overhead	     */    u_long		dg_ovhd;	/* Size of datagram overhead	     */    u_short		retdat_ovhd;	/* Size of RETDAT overhead	     */    u_short		lretdat_cssize;	/* Size of local RETDAT comp section */    struct		{		/* MSI register pointers	     */	vu_short	*msicsr;	/*  Control/Status register	     */	vu_short	*msidscr;	/*  DSSI control register	     */	vu_short	*msidssr;	/*  DSSI status register	     */	vu_short	*msiidr;	/*  ID register			     */	vu_short	*msitr;		/*  Timeout register		     */	vu_short	*msitlp;	/*  Target list pointer register     */	vu_short	*msiilp;	/*  Initiator list pointer register  */	vu_short	*msidcr;	/*  Diagnostic control register	     */	vu_short	*msicomm;	/*  SII command register	     */	vu_short	*msidstat;	/*  Data transfer status register    */	vu_short        *msiisr3;       /*  Main control diagnostic register */    } siiregptrs;    struct		{		/* Local port status flags	     */	u_long	init		:  1;	/*  First time initialization 	     */	u_long	active		:  1;	/*  Port active			     */	u_long	timer		:  1;	/*  Retry delay timer active 	     */	u_long	xfork		:  1;	/*  Transmit Fork Process scheduled  */	u_long	rfork		:  1;	/*  Receive Fork Process scheduled   */	u_long  optlpcinfo	:  1;	/*  Opt local port crash info flag   */	u_long			: 26;    } lpstatus;					/* Local port status flag bit masks  */#define	MSI_ACTIVE	0x00000002	/*  ( used when performance matters )*/#define	MSI_XFORK	0x00000008#define	MSI_RFORK	0x00000010    struct		{		/* Optional local port crash info    */	struct _msih	*pkth;		/*  Address of MSI packet	     */	u_long		pktsize;	/*  Size of MSI packet		     */ 	u_long		pport_addr;	/*  Packet remote port station addr  */    } lpcinfo;    union		{		/* Optional error logging information*/	u_long		portnum;	/*  Remote port station address	     */    } errlogopt;    u_short		min_msg_size;	/* Minimum message size		     */    u_short		max_msg_size;	/* Maximum message size		     */    u_short		min_dg_size;	/* Minimum datagram size	     */    u_short		max_dg_size;	/* Maximum datagram size	     */    u_short		min_id_size;	/* Minimum ID size		     */    u_short		max_id_size;	/* Maximum ID size		     */    u_short		min_idreq_size;	/* Minimum IDREQ size		     */    u_short		max_idreq_size;	/* Maximum IDREQ size		     */    u_short		min_sntdat_size;/* Minimum SNTDAT size		     */    u_short		max_sntdat_size;/* Maximum SNTDAT size		     */    u_short		min_datreq_size;/* Minimum DATREQ{0,1,2} size	     */    u_short		max_datreq_size;/* Maximum DATREQ{0,1,2} size	     */    u_short		save_dssr;	/* Cached DSSI status register	     */    u_short		save_dstat;	/* Cached data transfer status reg   */    struct _msi_dmapinfo rdmap;		/* Receive Fork Process dmap buf info*/    struct _msi_dmapinfo xdmap;		/* Transmit Fork Process dmap bufinfo*/    struct kschedblk	rforkb;		/* Receive Fork Process fork block   */    struct kschedblk	xforkb;		/* Transmit Fork Process fork block  */    struct lock_t	comqh_lk;	/* Command queue high lock structure */    struct lock_t	comql_lk;	/* Command queue low lock structure  */    struct lock_t	dfreeq_lk;	/* Datagram free queue lock structure*/    struct lock_t	mfreeq_lk;	/* Message free queue lock structure */    struct lock_t	rfp_lk;		/* Receive Fork Process lock struct  */    struct lock_t	xfp_lk;		/* Transmit Fork Process lock struct */    struct _msi_portid	lpidinfo;	/* Local port identification info    */    struct _msi_pportinfo perport[ MSI_MAXNUM_PORT ]; /* Per-DSSI port info  */} MSIPCCB;

⌨️ 快捷键说明

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