📄 ports.c
字号:
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 + -