📄 sca.h
字号:
#define PDASE 0xA4000000 /* PD severe error mask */#define PDFE 0xA5000000 /* PD fatal error mask */#define PPDI 0x60000000 /* PPD informational event mask */#define PPDW 0x61000000 /* PPD warning condition mask */#define PPDAW 0xE1000000 /* PPD warning( always->console) mask*/#define PPDRE 0x62000000 /* PPD remote error mask */#define PPDE 0x63000000 /* PPD error mask */#define PPDSE 0x64000000 /* PPD severe error mask *//* SCA Data Structure Field Definitions. */typedef struct _cbq { /* CB Queue Pointers */ struct _cbq *flink; /* Forward queue link */ struct _cbq *blink; /* Backward queue link */} cbq;typedef struct _msibq { /* MSI Buffer Queue Pointers */ struct _msibq *flink; /* Forward queue link */ struct _msibq *blink; /* Backward queue link */} msibq;typedef struct _pbq { /* PB Queue Pointers */ struct _pbq *flink; /* Forward queue link */ struct _pbq *blink; /* Backward queue link */} pbq;typedef struct _pccbq { /* PCCB Queue Pointers */ struct _pccbq *flink; /* Forward queue link */ struct _pccbq *blink; /* Backward queue link */} pccbq;typedef struct _sbq { /* SB Queue Pointers */ struct _sbq *flink; /* Forward queue link */ struct _sbq *blink; /* Backward queue link */} sbq;typedef struct _scaaddr { /* System Addresses */ u_short low; /* Low order word */ u_short mid; /* Middle order word */ u_short hi; /* High order word */} scaaddr;typedef struct _c_scaaddr { /* System Addresses( Compacted ) */ u_char val[ 6 ];} c_scaaddr;typedef struct _siibq { /* SIIBUF Queue Pointers */ struct _siibq *flink; /* Forward queue link */ struct _siibq *blink; /* Backward queue link */} siibq;typedef struct _u_dodec { /* 12 Byte Field */ u_long val[ 3 ];} u_dodec;typedef struct _u_quad { /* 8 Byte Field */ u_long val[ 2 ];} u_quad;typedef struct _uqbq { /* UQ buffer Queue Pointers */ struct _uqbq *flink; /* Forward queue link */ struct _uqbq *blink; /* Backward queue link */} uqbq; /* Generic Vaxport Buffer Header */typedef struct _gvpbq { /* Queue Pointers */ struct _gvpbq *flink; /* Forward queue link */ struct _gvpbq *blink; /* Backward queue link */} gvpbq;/* SCA Data Structure Definitions. */ /* Console Logging Severity Level */typedef struct _clstab { /* Table Entry */ u_long max_code; /* Maximum code in formating table */ struct _clftab *ftable; /* Address of formating table */} CLSTAB; /* Console Logging Formating Table */typedef struct _clftab { /* Entry */ u_long fcode; /* Format code */ char *msg; /* Console logging message */} CLFTAB;/* SCA Macros. */ /* Event Code Manipulation Macros */#define Ecode( event ) ( event & ECODE )#define Eseverity( event ) (( event & ESEVERITY ) >> ES_SHIFT )#define Esevmod( event ) (( event & ESEVMOD ) >> ESM_SHIFT )#define Eclass( event ) (( event & ECLASS ) >> EC_SHIFT )#define Esubclass( event ) (( event & ESUBCLASS ) >> ESC_SHIFT )#define Mask_esevmod( event ) ( event & ~ESEVMOD )#define Set_lpc_event( event ) { \ event |= ( ESM_LPC << ESM_SHIFT ); \}#define Set_pc_event( event ) { \ event |= ( ESM_PC << ESM_SHIFT ); \}#define Test_cloverride( event ) ( event & ECLALWAYS )#define Test_lpc_event( event ) ( Esevmod( event ) == ESM_LPC )#define Test_scs_event( event ) ( Eclass( event ) == EC_SCS )#define Test_pd_event( event ) \ ( Eclass( event ) && Esubclass( event ) == ESC_PD )#define Test_ppd_event( event ) ( Eclass( event ) && Esubclass( event ))#define Test_pc_event( event ) ( Esevmod( event ) == ESM_PC )#define Test_spc_event( event ) \ ( Test_pc_event( event ) && Eseverity( event ) == ES_SE ) /* Field Manipulation Macros */#define U_long( target ) *( u_long * )( &target )#define U_short( target ) *( u_short * )( &target ) /* Queue Macros */#define Init_queue( q ) { \ ( q ).flink = &( q ); \ ( q ).blink = &( q ); \}#define Remove_entry( entry ) { \ ( void )remque( &entry ); \}#define Insert_entry( entry, queue ) { \ ( void )insque( &entry, ( queue ).blink ); \} /* Structure Manipulation Macros */#define Comp_name( name1, name2 ) \ ( bcmp( name1, name2, NAME_SIZE ) == 0 )#define Comp_node( node1, node2 ) \ ( U_long( node1[ 0 ]) == U_long( node2[ 0 ]) && \ U_long( node1[ 4 ]) == U_long( node2[ 4 ]))#define Comp_quad( q1, q2 ) \ ((( u_quad * )&q1 )->val[ 0 ] == (( u_quad * )&q2 )->val[ 0 ] && \ (( u_quad * )&q1 )->val[ 1 ] == (( u_quad * )&q2 )->val[ 1 ])#define Comp_scaaddr( addr1, addr2 ) \ ( Scaaddr_low( addr1 ) == Scaaddr_low( addr2 ) && \ Scaaddr_mid( addr1 ) == Scaaddr_mid( addr2 ) && \ Scaaddr_hi( addr1 ) == Scaaddr_hi( addr2 ))#define Move_bhandle( from, to ) { \ *( u_long * )&to = *( u_long * )&from; \ *(( u_long * )&to + 1 ) = *(( u_long * )&from + 1 ); \ *(( u_long * )&to + 2 ) = *(( u_long * )&from + 2 ); \}#define Move_connid( from, to ) U_long( to ) = U_long( from );#define Move_data( from, to ) ( void )bcopy( from, to, DATA_SIZE );#define Move_name( from, to ) ( void )bcopy( from, to, NAME_SIZE );#define Move_node( from, to ) { \ U_long( to[ 0 ]) = U_long( from[ 0 ]); \ U_long( to[ 4 ]) = U_long( from[ 4 ]); \}#define Move_quad( from, to ) { \ (( u_quad * )&to )->val[ 0 ] = (( u_quad * )&from )->val[ 0 ]; \ (( u_quad * )&to )->val[ 1 ] = (( u_quad * )&from )->val[ 1 ]; \}#define Move_scaaddr( from, to ) { \ Scaaddr_low( to ) = Scaaddr_low( from ); \ Scaaddr_mid( to ) = Scaaddr_mid( from ); \ Scaaddr_hi( to ) = Scaaddr_hi( from ); \}#define Scaaddr_hi( addr ) (( scaaddr * )&addr )->hi#define Scaaddr_low( addr ) (( scaaddr * )&addr )->low#define Scaaddr_mid( addr ) (( scaaddr * )&addr )->mid#define Test_bhandle( handle ) \ ( *( u_long * )&handle == 0 && \ *(( u_long * )&handle + 1 ) == 0 && \ *(( u_long * )&handle + 2 ) == 0 )#define Test_connid( target ) ( target.index == 0 && target.seq_num == 0 )#define Test_scaaddr( addr ) \ ((( scaaddr * )&addr )->low == 0 && \ (( scaaddr * )&addr )->mid == 0 && \ (( scaaddr * )&addr )->hi == 0 )#define Zero_bhandle( bh ) { \ U_long( bh ) = 0; \ *(( u_long * )&bh + 1 ) = 0; \ *(( u_long * )&bh + 2 ) = 0; \}#define Zero_connid( target ) { \ target.index = 0; \ target.seq_num = 0; \}#define Zero_scaaddr( addr ) { \ Scaaddr_low( addr ) = 0; \ Scaaddr_mid( addr ) = 0; \ Scaaddr_hi( addr ) = 0; \} /* Miscellaneous Macros */#define Ctrl_from_name( name ) \ ((*(( u_char * )&name + 3 ) == ' ' || *(( u_char * )&name + 3 ) == '\0')\ ? (*(( u_char * )&name + 2 ) - '0' ) \ : (((*(( u_char * )&name + 2 ) - '0' ) > 9 ) \ ? (*(( u_char * )&name + 3 ) - '0' ) \ : (((*(( u_char * )&name + 2 ) - '0' ) * 10 ) + \ (*(( u_char * )&name + 3 ) - '0' ))))#define Ctrl_from_num( ns, n ) \ (u_long)(*(u_char *)ns) | \ (u_long)(*((u_char *)ns+1) << 8) | \ (u_long)(*((u_char *)ns+2) << 16) | \ (( u_long )((*(( u_char * )ns + 2 ) == ' ' ) \ ? (( n < 10 ) \ ? (( n + '0' ) << 16 ) \ : (((( n / 10 ) + '0' ) << 16 ) | \ ((( n % 10 ) + '0' ) << 24 ))) \ : (( n + '0' ) << 24 )))#define Align_name(ns) \ ((u_long)(*(u_char *)ns) | \ (u_long)(*((u_char *)ns+1) << 8) | \ (u_long)(*((u_char *)ns+2) << 16) | \ (u_long)(*((u_char *)ns+3) << 24))#define Kfork( fbp, routine, parm ) { \ ( fbp )->arg = ( caddr_t )parm; \ ( fbp )->func = ( void (*)() )routine; \ ( void )ksched( fbp ); \}#define Incr_seq_num( target ) { \ if( ++target.seq_num == 0 ) { \ ++target.seq_num; \ } \}/* IPL_SCS = 21, 0x15; splbio = 0x15; for mips block out device intr. */#define Splscs() splbio()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -