/**/ /***************************************************************************/ /** **/ /** © Copyright 2010, Hewlett-Packard Development Company, L.P. **/ /** **/ /** Confidential computer software. Valid license from HP and/or **/ /** its subsidiaries required for possession, use, or copying. **/ /** **/ /** Consistent with FAR 12.211 and 12.212, Commercial Computer Software, **/ /** Computer Software Documentation, and Technical Data for Commercial **/ /** Items are licensed to the U.S. Government under vendor's standard **/ /** commercial license. **/ /** **/ /** Neither HP nor any of its subsidiaries shall be liable for technical **/ /** or editorial errors or omissions contained herein. The information **/ /** in this document is provided "as is" without warranty of any kind and **/ /** is subject to change without notice. The warranties for HP products **/ /** are set forth in the express limited warranty statements accompanying **/ /** such products. Nothing herein should be construed as constituting an **/ /** additional warranty. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 30-Mar-2010 17:26:56 by OpenVMS SDL EV3-3 */ /* Source: 18-JAN-2002 13:52:15 $1$DGA7274:[LIB_H.SRC]TSRVDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $TSRVDEF ***/ #ifndef __TSRVDEF_LOADED #define __TSRVDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif /*+ */ /* TSRV ( ) Definitions */ /* */ /* This module defines the main data structure of the TMSCP */ /* server. This structure contains the values specified in */ /* the start up qualifiers when the server was loaded, the */ /* UQB vector table, and statistics that are kept for server */ /* performance measurements. */ /* */ /* This structure is being checked in with fields aligned */ /* to the MSCP structure DSRV. This is not a requirement */ /* and may be changed in the future if necessary. */ /* */ /* <<== !NOTICE! ==>> */ /* */ /* DO NOT change offsets of the top part of the data structure. */ /* If new fields have to be added please make them below the */ /* forward and backward links to the UQB. */ /*- */ /*Max number of served units */ #define TSRV$M_LOG_ENABLD 0x1 #define TSRV$M_LOG_PRESENT 0x2 #define TSRV$M_PKT_LOGGED 0x4 #define TSRV$M_PKT_LOST 0x8 #define TSRV$M_LBSTEP1 0x10 #define TSRV$M_LBSTEP2 0x20 #define TSRV$M_LBEVENT 0x40 #define TSRV$M_HULB_DEL 0x80 #define TSRV$M_MON_ACTIVE 0x100 #define TSRV$M_LB_REQ 0x200 #define TSRV$C_LENGTH 1912 #define TSRV$K_LENGTH 1912 #define TSRV$K_AR_ADD 2 /* Action routine code */ #define TSRV$K_MAX_UNITS 256 #ifdef __cplusplus /* Define structure prototypes */ struct _uqb; #endif /* #ifdef __cplusplus */ typedef struct _tsrv$r_tsrv { void *tsrv$l_flink; /* Field maintained for */ void *tsrv$l_blink; /* compatability */ unsigned short int tsrv$w_size; /* Structure size in bytes */ unsigned char tsrv$b_type; /* MSCP type structure */ unsigned char tsrv$b_subtype; /* with a TSRV subtype (1) */ __union { unsigned short int tsrv$w_state; /* Current state of the server */ __struct { unsigned tsrv$v_log_enabld : 1; /* Logging is enabled */ unsigned tsrv$v_log_present : 1; /* Logging code is present */ unsigned tsrv$v_pkt_logged : 1; /* A packet has been logged */ unsigned tsrv$v_pkt_lost : 1; /* One or more packets over- */ /* written since last read */ unsigned tsrv$v_lbstep1 : 1; /* Load balancing step1 active */ unsigned tsrv$v_lbstep2 : 1; /* Load balancing step2 active */ unsigned tsrv$v_lbevent : 1; /* An event of interest to LB has */ /* occured while STEP1 was active */ unsigned tsrv$v_hulb_del : 1; /* One or more HULBs to be deleted */ unsigned tsrv$v_mon_active : 1; /* The load monitor thread is active */ unsigned tsrv$v_lb_req : 1; /* A load balance request has been sent */ unsigned tsrv$v_fill_2_ : 6; } tsrv$r_fill_1_; } tsrv$r_fill_0_; unsigned short int tsrv$w_bufwait; /*I/Os that had to wait */ void *tsrv$l_log_buf_start; /* Address of start of buffer */ void *tsrv$l_log_buf_end; /* Address of end of buffer */ void *tsrv$l_next_read; /* Adrs of next packet to read */ void *tsrv$l_next_write; /* Adrs of next packet to write */ unsigned short int tsrv$w_inc_lolim; /* Low unit number to log */ unsigned short int tsrv$w_inc_hilim; /* High unit number to log */ unsigned short int tsrv$w_exc_lolim; /* Low unit number not to log */ unsigned short int tsrv$w_exc_hilim; /* High unit number not to log */ int tsrv$l_filler1 [5]; /* Keep compatible with DSRV */ __struct { /* Info returned in GCI cmd */ unsigned short int tsrv$w_version; /* Server software version */ unsigned short int tsrv$w_cflags; /* Controller flags */ unsigned short int tsrv$w_ctimo; /* Controller timeout */ unsigned short int tsrv$w_reserved; /* Reserved */ } tsrv$r_ctrl_info; unsigned __int64 tsrv$q_ctrl_id; /* Unique MSCP device identifier */ int tsrv$l_filler2 [4]; /* Keep compatible with DSRV */ unsigned short int tsrv$w_num_host; /* Count of hosts being served */ unsigned short int tsrv$w_num_unit; /* Count of disks being served */ void *tsrv$l_hqb_fl; /* Host queue block list head */ void *tsrv$l_hqb_bl; /* */ void *tsrv$l_uqb_fl; /* Unit queue block list head */ void *tsrv$l_uqb_bl; /* */ int tsrv$l_filler3 [24]; /* Keep compatible with DSRV */ struct _uqb *tsrv$l_units [256]; /* Table of UQB addresses */ /* */ /* new fields should be added here, after the UQB linkages */ /* */ /* */ /* Statistics gathering fields */ /* */ /* Two tables are maintained below. The first table is made up of the */ /* frequency count for each of the opcodes received since the server */ /* was loaded. The opcode is used as an index into the table to its own */ /* frequency count (the zeroeth element contains a total count). The */ /* second table is made up of the frequency counters for all the */ /* different sized block transfers. For this table, the size of the */ /* transfer is the index into the table. */ /* */ __struct { /* Op-code counters */ unsigned int tsrv$l_opcount; /* Total operations count */ unsigned int tsrv$l_abort_cnt; /* - 1 - */ unsigned int tsrv$l_get_cmd_cnt; /* - 2 - */ unsigned int tsrv$l_get_unt_cnt; /* - 3 - */ unsigned int tsrv$l_set_con_cnt; /* - 4 - */ unsigned int tsrv$l_reserved5; /* - 5 - */ unsigned int tsrv$l_reserved6; /* - 6 - */ unsigned int tsrv$l_reserved7; /* - 7 - */ unsigned int tsrv$l_avail_cnt; /* - 8 - */ unsigned int tsrv$l_onlin_cnt; /* - 9 - */ unsigned int tsrv$l_set_unt_cnt; /* - 10 - */ unsigned int tsrv$l_det_acc_cnt; /* - 11 - */ unsigned int tsrv$l_reserved12; /* - 12 - */ unsigned int tsrv$l_reserved13; /* - 13 - */ unsigned int tsrv$l_reserved14; /* - 14 - */ unsigned int tsrv$l_reserved15; /* - 15 - */ unsigned int tsrv$l_acces_cnt; /* - 16 - */ unsigned int tsrv$l_cmp_con_cnt; /* - 17 - */ unsigned int tsrv$l_erase_cnt; /* - 18 - */ unsigned int tsrv$l_flush_cnt; /* - 19 - */ unsigned int tsrv$l_replc_cnt; /* - 20 - */ unsigned int tsrv$l_reserved21; /* - 21 - */ unsigned int tsrv$l_reserved22; /* - 22 - */ unsigned int tsrv$l_reserved23; /* - 23 - */ unsigned int tsrv$l_reserved24; /* - 24 - */ unsigned int tsrv$l_reserved25; /* - 25 - */ unsigned int tsrv$l_reserved26; /* - 26 - */ unsigned int tsrv$l_reserved27; /* - 27 - */ unsigned int tsrv$l_reserved28; /* - 28 - */ unsigned int tsrv$l_reserved29; /* - 29 - */ unsigned int tsrv$l_reserved30; /* - 30 - */ unsigned int tsrv$l_reserved31; /* - 31 - */ unsigned int tsrv$l_cmp_hst_cnt; /* - 32 - */ unsigned int tsrv$l_read_cnt; /* - 33 - */ unsigned int tsrv$l_write_cnt; /* - 34 - */ unsigned int tsrv$l_reserved35; /* - 35 - */ unsigned int tsrv$l_reserved36; /* - 36 - */ unsigned int tsrv$l_reserved37; /* - 37 - */ unsigned int tsrv$l_reserved38; /* - 38 - */ unsigned int tsrv$l_reserved39; /* - 39 - */ } tsrv$r_opcode_cntrs; unsigned int tsrv$l_vcfail_cnt; /* Count of VC failures */ unsigned int tsrv$l_blkcount [129]; /* Counters for block xfer reqs */ } TSRV$R_TSRV; #if !defined(__VAXC) #define tsrv$w_state tsrv$r_fill_0_.tsrv$w_state #define tsrv$v_log_enabld tsrv$r_fill_0_.tsrv$r_fill_1_.tsrv$v_log_enabld #define tsrv$v_log_present tsrv$r_fill_0_.tsrv$r_fill_1_.tsrv$v_log_present #define tsrv$v_pkt_logged tsrv$r_fill_0_.tsrv$r_fill_1_.tsrv$v_pkt_logged #define tsrv$v_pkt_lost tsrv$r_fill_0_.tsrv$r_fill_1_.tsrv$v_pkt_lost #define tsrv$v_lbstep1 tsrv$r_fill_0_.tsrv$r_fill_1_.tsrv$v_lbstep1 #define tsrv$v_lbstep2 tsrv$r_fill_0_.tsrv$r_fill_1_.tsrv$v_lbstep2 #define tsrv$v_lbevent tsrv$r_fill_0_.tsrv$r_fill_1_.tsrv$v_lbevent #define tsrv$v_hulb_del tsrv$r_fill_0_.tsrv$r_fill_1_.tsrv$v_hulb_del #define tsrv$v_mon_active tsrv$r_fill_0_.tsrv$r_fill_1_.tsrv$v_mon_active #define tsrv$v_lb_req tsrv$r_fill_0_.tsrv$r_fill_1_.tsrv$v_lb_req #define tsrv$w_version tsrv$r_ctrl_info.tsrv$w_version #define tsrv$w_cflags tsrv$r_ctrl_info.tsrv$w_cflags #define tsrv$w_ctimo tsrv$r_ctrl_info.tsrv$w_ctimo #define tsrv$l_opcount tsrv$r_opcode_cntrs.tsrv$l_opcount #define tsrv$l_abort_cnt tsrv$r_opcode_cntrs.tsrv$l_abort_cnt #define tsrv$l_get_cmd_cnt tsrv$r_opcode_cntrs.tsrv$l_get_cmd_cnt #define tsrv$l_get_unt_cnt tsrv$r_opcode_cntrs.tsrv$l_get_unt_cnt #define tsrv$l_set_con_cnt tsrv$r_opcode_cntrs.tsrv$l_set_con_cnt #define tsrv$l_avail_cnt tsrv$r_opcode_cntrs.tsrv$l_avail_cnt #define tsrv$l_onlin_cnt tsrv$r_opcode_cntrs.tsrv$l_onlin_cnt #define tsrv$l_set_unt_cnt tsrv$r_opcode_cntrs.tsrv$l_set_unt_cnt #define tsrv$l_det_acc_cnt tsrv$r_opcode_cntrs.tsrv$l_det_acc_cnt #define tsrv$l_acces_cnt tsrv$r_opcode_cntrs.tsrv$l_acces_cnt #define tsrv$l_cmp_con_cnt tsrv$r_opcode_cntrs.tsrv$l_cmp_con_cnt #define tsrv$l_erase_cnt tsrv$r_opcode_cntrs.tsrv$l_erase_cnt #define tsrv$l_flush_cnt tsrv$r_opcode_cntrs.tsrv$l_flush_cnt #define tsrv$l_replc_cnt tsrv$r_opcode_cntrs.tsrv$l_replc_cnt #define tsrv$l_cmp_hst_cnt tsrv$r_opcode_cntrs.tsrv$l_cmp_hst_cnt #define tsrv$l_read_cnt tsrv$r_opcode_cntrs.tsrv$l_read_cnt #define tsrv$l_write_cnt tsrv$r_opcode_cntrs.tsrv$l_write_cnt #endif /* #if !defined(__VAXC) */ #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __TSRVDEF_LOADED */