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

📄 ports.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
📖 第 1 页 / 共 2 页
字号:
	buff_adr += sizeof(UQH);	printf ("\tScs Header\t%8.4X\n",((SCSH *)buff_adr)->mtype);	printf ("\t\t\t%8.4X\n", ((SCSH *)buff_adr)->credit);	printf ("\t\t\t%8.8X\n", ((SCSH *)buff_adr)->rconnid);	printf ("\t\t\t%8.8X\n", ((SCSH *)buff_adr)->sconnid);	buff_adr += sizeof(SCSH);	printf ("\tBuffer Contents\n");	for (buff_end = (u_char *) (buff_adr + sizeof(APP_BUF)), item_count=1;				buff_adr < buff_end;				item_count++, buff_adr += sizeof(u_long))		if (item_count % 4) printf ("\t%8.8X", *(u_long *)buff_adr);		else printf ("\t\t%8.8X\n", *(u_long *)buff_adr);	} /* end else */	} /* end if */} /* end for */printf ("\n\nSSP Command Ring\n");printf ("-----------------\n");if (! do_buffers) printf ("\tDescriptor Address		\tContents\n");for (ring_index=0, ring_adr=(u_char *)comm_area_ptr->ca_cmddsc;				ring_index<NCMD;				ring_adr += sizeof(u_long), ++ring_index){	if (do_buffers) printf			("\n\n\tDescriptor Address		\tContents\n");	if (ring_index == port->pd.uq.uq_lastcmd)		printf ("\n%67s\n", "Most Recent Command");	printf ("\t%8.8X\t\t\t\t%8.8X  %s\n",	ring_adr, comm_area.ca_cmddsc[ring_index],	comm_area.ca_cmddsc[ring_index] & (1 << 31) ?		"Controller Owned" : "Host Owned");if (do_buffers) {	/* now print the buffer */	buff_adr = (u_char *) (port->pd.uq.cmdbtab[ring_index]);	printf ("\tApplication Buffer\n");	if (readmem(&the_buffer, buff_adr, sizeof(UQBUF)) != sizeof(UQBUF))	printf ("\t\tcould not read the application buffer\n");	else	{	buff_adr = (u_char *)&the_buffer;	printf ("\tflink\t\t%8.8X\n", ((UQH *)buff_adr)->blink);	printf ("\tblink\t\t%8.8X\n", ((UQH *)buff_adr)->blink);	printf ("\t\t\t%8.8X\n", ((UQH *)buff_adr)->ua);	buff_adr += sizeof(UQH);	printf ("\tScs Header\t%8.4hX\n",(u_short *)((SCSH *)buff_adr)->mtype);	printf ("\t\t\t%8.4hX\n", (u_short *)((SCSH *)buff_adr)->credit);	printf ("\t\t\t%8.8lX\n", ((SCSH *)buff_adr)->rconnid);	printf ("\t\t\t%8.8lX\n", ((SCSH *)buff_adr)->sconnid);	buff_adr += sizeof(SCSH);	printf ("\tBuffer Contents\n");	for (buff_end = (u_char *) (buff_adr + sizeof(APP_BUF)), item_count=1;				buff_adr < buff_end;				item_count++, buff_adr += sizeof(u_long))	if (item_count % 4) printf ("\t%8.8X", *(u_long *)buff_adr);		else printf ("\t\t%8.8X\n", *(u_long *)buff_adr);	printf ("\n");	} /* end else */	} /* end if */} /* end for */} /* end if */printf ("\n");printf ("\nPort Dump\n");printf ("---------\n");for(buff_adr = (u_char *) port, item_count = 0;	buff_adr < ((u_char *)port+sizeof(PCCB));	buff_adr += sizeof(u_long))	{	printf ("%8.8X ", (u_long) *((u_long *)buff_adr));	if (((++item_count) % 8) == 0)		{		item_count = 0;		printf ("\n");		}	}if (item_count)	printf ("\n\n");else 	printf ("\n");} /* print_ssp *//* * *   Name:	print_bvp 	-  display an bvp PCCB structure. * *   Abstract:	 *		port is a pointer to a local copy of a bvp PCCB. *		kport is the actual kernal address of it. * *   Return *   Values:	NONE */print_bvp (port, kport)PCCB	*port, *kport;{u_char	*buff_adr;int	item_count;printf ("PORT COMMAND CONTROL BLOCK - Generic Vax Port\n");printf ("---------------------------------------------\n");printf ("GVP Port Command Control Block Address %17X\n", kport);printf ("flink %50X\n", port->flink);printf ("blink %50X\n", port->blink);printf ("\nPort Dump\n");printf ("---------\n");for(buff_adr = (u_char *) port, item_count = 0;	buff_adr < ((u_char *)port+sizeof(PCCB));	buff_adr += sizeof(u_long))	{	printf ("%8.8X ", (u_long) *((u_long *)buff_adr));	if (((++item_count) % 8) == 0)		{		item_count = 0;		printf ("\n");		}	}if (item_count)	printf ("\n\n");else 	printf ("\n");} /* print_bvp *//* * *   Name:	print_msi 	-  display an msi PCCB structure. * *   Abstract:	 *		port is a pointer to a local copy of a msi PCCB. *		kport is the actual kernal address of it. * *   Return *   Values:	NONE */print_msi (port, kport)PCCB	*port, *kport;{u_char	*buff_adr;int	item_count;printf ("PORT COMMAND CONTROL BLOCK - Mass Storage Interconnect\n");printf ("------------------------------------------------------\n");printf ("MSI Port Command Control Block Address %17X\n", kport);printf ("flink %50X\n", port->flink);printf ("blink %50X\n", port->blink);printf ("\nMSI High Priority Command Queue\n");printf ("\tflink %42X\n", port->pd.msi.comqh.flink);printf ("\tblink %42X\n", port->pd.msi.comqh.blink);printf ("MSI Low Priority Command Queue\n");printf ("\tflink %42X\n", port->pd.msi.comql.flink);printf ("\tblink %42X\n", port->pd.msi.comql.blink);printf ("MSI Free Sequential Message Queue\n");printf ("\tflink %42X\n", port->pd.msi.mfreeq.flink);printf ("\tblink %42X\n", port->pd.msi.mfreeq.blink);printf ("MSI Free Datagram Queue\n");printf ("\tflink %42X\n", port->pd.msi.dfreeq.flink);printf ("\tblink %42X\n", port->pd.msi.dfreeq.blink);printf ("\nApplication Datagram Size %30X\n",				port->lpinfo.pd.msi.dg_size);printf ("Application Sequential Message Size %20X\n",				port->lpinfo.pd.msi.msg_size);printf ("Port Driver And Port To Port Datagram Overhead %9X\n",				port->lpinfo.pd.msi.pd_ovhd);printf ("Port To Port Datagram Overhead %25X\n",				port->lpinfo.pd.msi.pd_ovhd);printf ("\nDSSI REGISTER ADDRESSES\n");printf ("------------------------\n");printf ("Control Status CSR %37.X\n",				port->pd.msi.siiregptrs.msicsr);printf ("DSSI Control Register %34.X\n",				port->pd.msi.siiregptrs.msidscr);printf ("DSSI Status Register %35.4X\n",				port->pd.msi.siiregptrs.msidssr);printf ("ID Register %44.4X\n",				port->pd.msi.siiregptrs.msiidr);printf ("Timeout Register %39.4X\n",				port->pd.msi.siiregptrs.msitr);printf ("Target List Pointer Register %27X\n",				port->pd.msi.siiregptrs.msitlp);printf ("Initiator List Pointer Register %24X\n",				port->pd.msi.siiregptrs.msiilp);printf ("Diagnostic Control Register %28X\n",				port->pd.msi.siiregptrs.msidcr);printf ("SII Command Register %35.4X\n",				port->pd.msi.siiregptrs.msicomm);printf ("Data Transfer Register %33X\n",				port->pd.msi.siiregptrs.msidstat);printf ("Main Control Diagnostic Register  %22X\n",				port->pd.msi.siiregptrs.msiisr3);printf ("\nMSI Local Port Flags\n");printf ("--------------------\n");printf ("\tFirst Time Initialization %22s\n",		port->pd.msi.lpstatus.init ? "ON" : "OFF");printf ("\tPort Active %36s\n",		port->pd.msi.lpstatus.active ? "ON" : "OFF");printf ("\tRetry Delay Timer Active %23s\n",		port->pd.msi.lpstatus.timer ? "ON" : "OFF");printf ("\tTransmit Fork Process Scheduled %16s\n",		port->pd.msi.lpstatus.xfork ? "ON" : "OFF");printf ("\tReceive Fork Process Scheduled %17s\n",		port->pd.msi.lpstatus.rfork ? "ON" : "OFF");/* do hex dump of whole port structure */printf ("\nPort Dump\n");printf ("---------\n");for(buff_adr = (u_char *) port, item_count = 0;	buff_adr < ((u_char *)port+sizeof(PCCB));	buff_adr += sizeof(u_long))	{	printf ("%8.8X ", (u_long) *((u_long *)buff_adr));	if (((++item_count) % 8) == 0)		{		item_count = 0;		printf ("\n");		}	}if (item_count)	printf ("\n\n");else 	printf ("\n");printf ("\n\n");} /* print_msi *//* * *   Name:	print_ci 	-  display an ci PCCB structure. * *   Abstract:	 *		port is a pointer to a local copy of a ci PCCB. *		kport is the actual kernal address of it. * *   Return *   Values:	NONE */print_ci (port, kport)PCCB	*port, *kport;{u_char	*buff_adr;int	item_count;printf ("PORT COMMAND CONTROL BLOCK - Computer Interconnect\n");printf ("--------------------------------------------------\n");printf ("CI Port Command Control Block Address %18X\n", kport);printf ("flink %50X\n", port->flink);printf ("blink %50X\n", port->blink);printf ("\n");printf ("\nPort Dump\n");printf ("---------\n");for(buff_adr = (u_char *) port, item_count = 0;	buff_adr < ((u_char *)port+sizeof(PCCB));	buff_adr += sizeof(u_long))	{	printf ("%8.8X ", (u_long) *((u_long *)buff_adr));	if (((++item_count) % 8) == 0)		{		item_count = 0;		printf ("\n");		}	}if (item_count)	printf ("\n\n");else 	printf ("\n");} /* print_ci *//* * *   Name:	print_uq_cnt_type * *   Abstract:	use the type field to print the ascii string of the name *		of an SSP controller.  These values are defined in  *		appendix A-3 of the SSP manual.  This is a subroutine of *		print_ssp. * * *   Return *   Values:	NONE */print_uq_cnt_type (type)int	type;{printf	("Controller Type");switch (type)	{	case UDA_TYPE:	printf ("%41.8s\n", "uda50");			break;	case RC25_TYPE:	printf ("%41.8s\n", "klesi");			break;	case RUX_TYPE:	printf ("%41.8s\n", "rux50");			break;	case MAYA_TYPE: printf ("%41.11s\n", "tqk50/tuk50");			break;	case TU81_TYPE:	printf 			("%41.28s\n", "(integrated controller) tu81");			break;	case UDA50A_TYPE: printf ("%41.8s\n", "uda50a");			break;	case RQDX_TYPE:	printf ("%41.11s\n", "rqdx1/rqdx2");			break;	case KDA50A_TYPE: printf ("%41.8s\n", "kda50-q");			break;	case TK70_TYPE: printf ("%41.8s\n", "tqk70");			break;	case RV20_TYPE:	printf ("%41.8s\n", "rv20");			break;	case KRQ50_TYPE:printf ("%41.8s\n", "krq50");			break;	case BDA_TYPE:	printf ("%41.8s\n", "kdb50");			break;	case RQDX3_TYPE:printf ("%41.8s\n", "rqdx3");			break;	case KFQSA_D_TYPE: printf ("%41.10s\n", "kfqsa_disk");			break;	case KFQSA_T_TYPE: printf ("%41.10s\n", "kfqsa_tape");			break;	case KFQSA_DT_TYPE: printf ("%41.19s\n", "kfqsa_disk_and_tape");			break;	case KFQSA_OTHER: printf ("%41.8s\n", "kfqsa");			break;	case KRU50_TYPE:printf ("%41.8s\n", "kru50");			break;	case KDM_TYPE:	printf ("%41.8s\n", "kdm70");			break;	case TQK7L_TYPE:printf ("%41.8s\n", "tqk7l");			break;	case TM32_TYPE: printf ("%41.8s\n", "tm32\n");			break;	default:				printf ("%37.12s\n", "undetermined\n");	}} /* print_cnt_type */

⌨️ 快捷键说明

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