📄 eribld_aqpcs.c
字号:
#ifndef lintstatic char sccsid[] = "@(#)eribld_aqpcs.c 4.3 (ULTRIX) 12/20/90"; #endif lint/*** COPYRIGHT (C) 1989, 1990 DIGITAL EQUIPMENT CORP.,** THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A * SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY 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 EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO* AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE* SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.** THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT* NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL* EQUIPMENT CORPORATION.** DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF* ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.**//* vax 9000 pcs eribld *//* #include <stdio.h> */#include <sys/types.h>#include <sys/time.h>#include <sys/errlog.h>#include <machine/cpu.h>/* #include "eims.h" */#include "erms.h"/* #include "select.h" */#include "generic_dsd.h"#include "std_dsd.h"#include "os_dsd.h"#include "eiliterals.h"#include "qtrans.h"/* These structures replace the ones in errlog_aq.h Errlog structures normally belong in errlog_aq.h because both kernel code and uerf refer to the same data. But, these messages are passed from the SPU(console) to the host already packaged, and the kernel code just dumps n-bytes into the error log; it doesn't need to know the real structure. We originally placed the structure in the kernel-accessible header file errlog_aq.h. But then we needed to change the structures after all the header files and kernel code was frozen. So, we simply add the revised structures here. This source file is the only source file that actually refers to the structure members.*/struct new_pcs { u_char format_byte; u_char idreg; u_char xcpid; u_char severity; union { struct { u_short rsreg; u_char asdreg; u_char hwsrega; u_char hwsregb; u_char hwsregc; u_char hwsregd; u_char hwsrege; u_char hwsregf; u_char pfreg_1; /* this is a short in two parts */ u_char pfreg_2; u_char scsreg; u_char rcreg; union { struct { u_char mgnreg; u_short measure; u_short low; u_short high; u_short reg0cur; u_short reg1cur; u_short reg2cur; u_short reg3cur; u_short reg4cur; } fmt1; struct { /* these shorts are not aligned */ u_char tempa_1; u_char tempa_2; u_char tempb_1; u_char tempb_2; u_char yellowa_1; u_char yellowa_2; u_char reda_1; u_char reda_2; u_char yellowb_1; u_char yellowb_2; u_char redb_1; u_char redb_2; u_char open_1; u_char open_2; u_char shortsensor_1; u_char shortsensor_2; } fmt2; } fmt; } ric; struct { u_short psreg; u_char pwr1reg; u_char pwr2reg; u_char pasdrsb[17];#define pem_stcreg (PCS.ricpem.pem.stcreg_1|(PCS.ricpem.pem.stcreg_2<<8)) u_char stcreg_1; u_char stcreg_2; u_char connreg; union { struct { u_char keyabreg; u_char keybcreg; u_short ricavarsb[18]; } fmt4; struct { u_char bbureg; } fmt5; struct { u_short ocpswreg; u_char ocpdisreg[3]; } fmt6; struct { u_char bscreg; } fmt7; } fmt; } pem; } ricpem;};struct new_pcsstat { u_char format_byte;#define stat_stcreg (PCST.stcreg_1|(PCST.stcreg_2<<8)) u_char stcreg_1; u_char stcreg_2;#define stat_ambient (PCST.ambient_1|(PCST.ambient_2<<8)) u_char ambient_1; u_char ambient_2;#define stat_scufan1 (PCST.scufan1_1|(PCST.scufan1_2<<8)) u_char scufan1_1; u_char scufan1_2;#define stat_scufan2 (PCST.scufan2_1|(PCST.scufan2_2<<8)) u_char scufan2_1; u_char scufan2_2;#define stat_scufan3 (PCST.scufan3_1|(PCST.scufan3_2<<8)) u_char scufan3_1; u_char scufan3_2; u_char scuasd;#define stat_scufansts (PCST.scufansts_1|(PCST.scufansts_2<<8)) u_char scufansts_1; u_char scufansts_2;#define stat_scuairsts (PCST.scuairsts_1|(PCST.scuairsts_2<<8)) u_char scuairsts_1; u_char scuairsts_2;#define stat_cpafan1 (PCST.cpafan1_1|(PCST.cpafan1_2<<8)) u_char cpafan1_1; u_char cpafan1_2;#define stat_cpafan2 (PCST.cpafan2_1|(PCST.cpafan2_2<<8)) u_char cpafan2_1; u_char cpafan2_2;#define stat_cpafan3 (PCST.cpafan3_1|(PCST.cpafan3_2<<8)) u_char cpafan3_1; u_char cpafan3_2; u_char cpaasd;#define stat_cpafansts (PCST.cpafansts_1|(PCST.cpafansts_2<<8)) u_char cpafansts_1; u_char cpafansts_2;#define stat_cpaairsts (PCST.cpaairsts_1|(PCST.cpaairsts_2<<8)) u_char cpaairsts_1; u_char cpaairsts_2;#define stat_cpbfan1 (PCST.cpbfan1_1|(PCST.cpbfan1_2<<8)) u_char cpbfan1_1; u_char cpbfan1_2;#define stat_cpbfan2 (PCST.cpbfan2_1|(PCST.cpbfan2_2<<8)) u_char cpbfan2_1; u_char cpbfan2_2;#define stat_cpbfan3 (PCST.cpbfan3_1|(PCST.cpbfan3_2<<8)) u_char cpbfan3_1; u_char cpbfan3_2; u_char cpbasd; u_short cpbfansts; u_short cpbairsts; u_char ioastatus; u_char ioaasd; u_char iobstatus; u_char iobasd; u_short wcuatempo; u_short wcuatempi; u_short wcuah2oo; u_short wcuah2oi; u_short wcuassts; u_short wcuasts; u_short wcubtempo; u_short wcubtempi; u_short wcubh2oo; u_short wcubh2oi; u_short wcubssts; u_short wcubsts; u_short ioacab; u_short iobcab; u_short ioabi; u_short iobbi; u_short ioaac; u_short iobac; u_short ioagc; u_short iobgc; u_short pcssts; u_short busareg; u_short busavbus; u_short busareg0; u_short busareg1; u_short busareg2; u_short busareg3; u_short busareg4; u_short busasts; u_short busbreg; u_short busbvbus; u_short busbreg0; u_short busbreg1; u_short busbreg2; u_short busbreg3; u_short busbreg4; u_short busbsts; u_short buscreg; u_short buscvbus; u_short buscreg0; u_short buscreg1; u_short buscreg2; u_short buscreg3; u_short buscreg4; u_short buscsts; u_short busdreg; u_short busdvbus; u_short busdreg0; u_short busdreg1; u_short busdreg2; u_short busdreg3; u_short busdreg4; u_short busdsts; union { struct { u_short busereg; u_short busevbus; u_short busereg0; u_short busereg1; u_short busereg2; u_short busereg3; u_short busereg4; u_short busests; u_short busfreg; u_short busfvbus; u_short busfreg0; u_short busfreg1; u_short busfreg2; u_short busfreg3; u_short busfreg4; u_short busfsts; } tab2; struct { u_short busjreg; u_short busjvbus; u_short busjreg0; u_short busjreg1; u_short busjreg2; u_short busjreg3; u_short busjreg4; u_short busjsts; u_short buskreg; u_short buskvbus; u_short buskreg0; u_short buskreg1; u_short buskreg2; u_short buskreg3; u_short buskreg4; u_short busksts; u_short busmreg; u_short busmvbus; u_short busmreg0; u_short busmreg1; u_short busmreg2; u_short busmreg3; u_short busmreg4; u_short busmsts; u_short busnreg; u_short busnvbus; u_short busnreg0; u_short busnreg1; u_short busnreg2; u_short busnreg3; u_short busnreg4; u_short busnsts; } tab4; } tab2or4;};struct el_rec_new { struct el_rhdr elrhdr; /* record header */ struct el_sub_id elsubid; /* subsystem id packet */ union { struct new_pcs el_aqpcs; struct new_pcsstat el_aqpcsstat; } el_body; char eltrailer[EL_TRAILERSIZE]; /* asc trailer code */};extern struct qt_entry qt_psreg[];extern struct qt_entry qt_rsreg_old[];extern struct qt_entry qt_rsreg_new[];extern struct qt_entry qt_hwsrega[], qt_hwsregb[], qt_hwsregc[], qt_hwsregd[];extern struct qt_entry qt_pfreg[];int v9000_bld_emm(eis_ptr,dis_ptr,cds_ptr,sds_ptr,ads_ptr,sis_ptr,elrp_old)EIS *eis_ptr;DIS *dis_ptr;CDS *cds_ptr;SDS *sds_ptr;ADS *ads_ptr;SIS *sis_ptr;struct el_rec *elrp_old;{struct el_rec_new *elrp = (struct el_rec_new *)elrp_old; int status; unsigned long value; unsigned char uc, xcpid; int format_type;#define MAX_TRSTRING_LEN 36 /* strings area for exception entry */ static char asdreg_str1[MAX_TRSTRING_LEN+2]; static char asdreg_str2[MAX_TRSTRING_LEN+2]; static char asdreg_str3[MAX_TRSTRING_LEN+2]; static char asdreg_str4[MAX_TRSTRING_LEN+2]; static char measure_str[MAX_TRSTRING_LEN+2]; static char low_str[MAX_TRSTRING_LEN+2]; static char high_str[MAX_TRSTRING_LEN+2]; static char reg0cur_str[MAX_TRSTRING_LEN+2]; static char reg1cur_str[MAX_TRSTRING_LEN+2]; static char reg2cur_str[MAX_TRSTRING_LEN+2]; static char reg3cur_str[MAX_TRSTRING_LEN+2]; static char reg4cur_str[MAX_TRSTRING_LEN+2]; static char tempa_str[MAX_TRSTRING_LEN+2]; static char tempb_str[MAX_TRSTRING_LEN+2]; static char yellowa_str[MAX_TRSTRING_LEN+2]; static char reda_str[MAX_TRSTRING_LEN+2]; static char yellowb_str[MAX_TRSTRING_LEN+2]; static char redb_str[MAX_TRSTRING_LEN+2]; static char open_str[MAX_TRSTRING_LEN+2]; static char shortsensor_str[MAX_TRSTRING_LEN+2]; /* strings area for status entry */ static char ambient[MAX_TRSTRING_LEN+2]; static char scufan1[MAX_TRSTRING_LEN+2]; static char scufan2[MAX_TRSTRING_LEN+2]; static char scufan3[MAX_TRSTRING_LEN+2]; static char scuasd[MAX_TRSTRING_LEN+2]; static char cpafan1[MAX_TRSTRING_LEN+2]; static char cpafan2[MAX_TRSTRING_LEN+2]; static char cpafan3[MAX_TRSTRING_LEN+2]; static char cpaasd[MAX_TRSTRING_LEN+2]; static char cpbfan1[MAX_TRSTRING_LEN+2]; static char cpbfan2[MAX_TRSTRING_LEN+2]; static char cpbfan3[MAX_TRSTRING_LEN+2]; static char cpbasd[MAX_TRSTRING_LEN+2]; static char ioaasd[MAX_TRSTRING_LEN+2]; static char iobasd[MAX_TRSTRING_LEN+2]; static char wcuatempo[MAX_TRSTRING_LEN+2]; static char wcuatempi[MAX_TRSTRING_LEN+2]; static char wcubtempo[MAX_TRSTRING_LEN+2]; static char wcubtempi[MAX_TRSTRING_LEN+2]; static char busavbus[MAX_TRSTRING_LEN+2]; static char busbvbus[MAX_TRSTRING_LEN+2]; static char buscvbus[MAX_TRSTRING_LEN+2]; static char busdvbus[MAX_TRSTRING_LEN+2]; static char busevbus[MAX_TRSTRING_LEN+2]; static char busfvbus[MAX_TRSTRING_LEN+2]; static char busjvbus[MAX_TRSTRING_LEN+2]; static char buskvbus[MAX_TRSTRING_LEN+2]; static char busmvbus[MAX_TRSTRING_LEN+2]; static char busnvbus[MAX_TRSTRING_LEN+2];#define PCS elrp->el_body.el_aqpcs#define PCST elrp->el_body.el_aqpcsstat if( PCS.format_byte == 1 ) { /* Power/Environmental Entry */ /* status information */ cds_ptr->subtype = DD$AQPCST_CDS; if (ini_seg(cds_ptr) == EI$FAIL) status = EI$FAIL; ads_ptr->subtype = DD$AQPCST_ADS; if (ini_seg(ads_ptr) == EI$FAIL) status = EI$FAIL; os_std(&PCST.stcreg_1, OS$gen_short, DD$aqpcst_stcreg); sprintf(ambient, "AMBIENT TEMP (DEG C.) = %c%3d.%02d", stat_ambient&0x8000?'-':'+', stat_ambient>>8&0x7f, stat_ambient&0xff); os_std(ambient, OS$gen_asc_52, DD$aqpcst_ambient); sprintf(scufan1, "SCU FAN 1 TEMP (DEG C.) = %c%3d.%02d", stat_scufan1&0x8000?'-':'+', stat_scufan1>>8&0x7f, stat_scufan1&0xff); sprintf(scufan2, "SCU FAN 2 TEMP (DEG C.) = %c%3d.%02d", stat_scufan2&0x8000?'-':'+', stat_scufan2>>8&0x7f, stat_scufan2&0xff); sprintf(scufan3, "SCU FAN 3 TEMP (DEG C.) = %c%3d.%02d", stat_scufan3&0x8000?'-':'+', stat_scufan3>>8&0x7f, stat_scufan3&0xff); if( (PCST.scuasd&0xff) == 0xff) sprintf(scuasd, "NO ASD PENDING FOR SCU CAB"); else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -