/***************************************************************************/ /** **/ /** HPE CONFIDENTIAL. This software is confidential proprietary software **/ /** licensed by Hewlett-Packard Enterprise Development, LP, and is not **/ /** authorized to be used, duplicated OR disclosed to anyone without the **/ /** prior written permission of HPE. **/ /** © 2023 Copyright Hewlett-Packard Enterprise Development, LP **/ /** **/ /** VMS SOFTWARE, INC. CONFIDENTIAL. This software is confidential **/ /** proprietary software licensed by VMS Software, Inc., and is not **/ /** authorized to be used, duplicated or disclosed to anyone without **/ /** the prior written permission of VMS Software, Inc. **/ /** © 2023 Copyright VMS Software, Inc. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 9-Nov-2023 12:06:43 by OpenVMS SDL V3.7 */ /* Source: 20-SEP-2020 01:34:37 $1$DGA8345:[LIB_H.SRC]HRBDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $HRBDEF ***/ #ifndef __HRBDEF_LOADED #define __HRBDEF_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 /*+ */ /* HRB (Host Request Block) Definitions */ /* */ /* These definitions describe the format of a data structure */ /* that is used in the MSCP server to represent the context */ /* of a request from one of the served hosts. */ /*- */ #define HRB$M_STATE_INVALID 0x8000 #define HRB$M_ABORT 0x1 #define HRB$M_ABORTWS 0x2 #define HRB$M_DEQUEUED 0x4 #define HRB$M_ENDMSG 0x8 #define HRB$M_MAP 0x10 #define HRB$M_UNBLOCK 0x20 #define HRB$M_VCFAILED 0x40 #define HRB$M_OLDBUF 0x80 #define HRB$M_WBC_IMMED 0x100 #define HRB$M_FIRST 0x200 #define HRB$M_FLUSH 0x400 #define HRB$M_CMD_TMO 0x800 #define HRB$K_LENGTH 148 /* request state definitions */ #define HRB$K_ST_MSG_WAIT 1 /* Atn msg buffer/credit wait */ #define HRB$K_ST_SEQ_WAIT 2 /* Waiting for sequential cmd */ #define HRB$K_ST_BUF_WAIT 3 /* Waiting for server buffer */ #define HRB$K_ST_SNDAT_WAIT 4 /* Sending or receiving data */ #define HRB$K_ST_DRV_WAIT 5 /* Driver queue */ #define HRB$K_ST_MAP_WAIT 6 /* Mapping a data buffer */ #define HRB$K_ST_UNMAP_WAIT 7 /* Returning mapping resources */ #define HRB$K_ST_SNDMS_WAIT 8 /* Sending message */ #define HRB$K_ST_MEM_WAIT 9 /* Local buffer wait */ #define HRB$K_ST_FLUSHED 10 /* Flushed from cache */ #define HRB$K_ST_CACHED 11 /* In local host cache */ #define HRB$S_HRBDEF 148 /* Old size name - synonym */ #ifdef __cplusplus /* Define structure prototypes */ struct _mscp; struct _cdrp; struct _hqb; struct _uqb; struct _pdt; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __octaword #else #pragma __nomember_alignment #endif typedef struct _hrb { #pragma __nomember_alignment void *hrb$l_flink; /* Used to link this request */ void *hrb$l_blink; /* into the HQB data styructure */ unsigned short int hrb$w_size; /* Data structure size in bytes */ unsigned char hrb$b_type; /* This is an MSCP type struct */ unsigned char hrb$b_subtype; /* with a HRB subtype (3) */ int (*hrb$l_respc)(); /* PC to resume on restart */ int (*hrb$l_savd_rtn)(); /* Saved address of caller */ __union { unsigned short int hrb$w_state; /* State of the request */ __struct { unsigned hrb$v_filler : 15; /* Filled by constant below */ unsigned hrb$v_state_invalid : 1; /* State is current but previous */ } hrb$r_fill_1_; } hrb$r_fill_0_; /* state was (bits 0-15) */ __union { unsigned short int hrb$w_flags; /* Status flags */ __struct { unsigned hrb$v_abort : 1; /* Abort */ unsigned hrb$v_abortws : 1; /* Abort with status */ unsigned hrb$v_dequeued : 1; /* Removed from resource queues */ unsigned hrb$v_endmsg : 1; /* End message needs to be sent */ unsigned hrb$v_map : 1; /* Map resources allocated */ unsigned hrb$v_unblock : 1; /* Unblock needs to be called */ unsigned hrb$v_vcfailed : 1; /* The VC for this host failed */ unsigned hrb$v_oldbuf : 1; /* The buffer allocated for this */ /* rqst is out of the old buffer */ unsigned hrb$v_wbc_immed : 1; /* Write-back caching command */ unsigned hrb$v_first : 1; /* First in burst sequence for tapes */ unsigned hrb$v_flush : 1; /* This is a flush type command */ unsigned hrb$v_cmd_tmo : 1; /* This command has "timed out" */ unsigned hrb$v_fill_6_ : 4; } hrb$r_fill_3_; } hrb$r_fill_2_; struct _mscp *hrb$l_msgbuf; /* Addr of MSCP request packet */ struct _cdrp *hrb$l_irp_cdrp; /* CDRP for I/O requests */ unsigned char hrb$b_lbuff [12]; /* Local buffer descriptor */ void *hrb$l_bd_addr; /* Buffer Descriptor Address */ unsigned int hrb$l_buflen; /* Length of buffer allocated */ void *hrb$l_bufadr; /* Buffer starting address */ __union { unsigned __int64 hrb$q_lbn; /* LBN place holder for xfr */ __struct { unsigned int hrb$l_lbn; } hrb$r_fill_5_; } hrb$r_fill_4_; unsigned int hrb$l_obcnt; /* Original request byte count */ unsigned int hrb$l_abcnt; /* Number of bytes already sent */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *hrb$pq_svapte_sva; /* NOSVAPTE_V9.0 cmos */ #else unsigned __int64 hrb$pq_svapte_sva; #endif #pragma __nomember_alignment unsigned int hrb$l_bcnt; /* Temp storage for current xfr */ unsigned short int hrb$w_boff; /* Offset within page of sob */ unsigned short int hrb$w_reserved; /* */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *hrb$l_wait_fl; /* Pointers to link HRB into */ void *hrb$l_wait_bl; /* wait queues in UQB */ struct _hqb *hrb$l_hqb; /* Host Queue Block address */ struct _uqb *hrb$l_uqb; /* Unit Queue Block address */ struct _pdt *hrb$l_pdt; /* Port Desc Table for requestor */ unsigned int hrb$l_cmd_sts; /* Measure of work to be done */ unsigned int hrb$l_object_skip; /* Objects requested for skipfile */ unsigned int hrb$l_current_skip; /* Placemarker during REPOS */ unsigned int hrb$l_io_time; /* Time for I/O to go from */ /* server to tape and back */ void *hrb$l_cache_fl; /* Cache queue */ void *hrb$l_cache_bl; /* */ void *hrb$l_memw_fl; /* Waiting on more memory */ void *hrb$l_memw_bl; /* */ unsigned int hrb$l_record; /* Record position on tape */ unsigned int hrb$l_cmd_time; /* Record timestamp */ char hrb$b_fill_7_ [12]; } HRB; #if !defined(__VAXC) #define hrb$w_state hrb$r_fill_0_.hrb$w_state #define hrb$v_state_invalid hrb$r_fill_0_.hrb$r_fill_1_.hrb$v_state_invalid #define hrb$w_flags hrb$r_fill_2_.hrb$w_flags #define hrb$v_abort hrb$r_fill_2_.hrb$r_fill_3_.hrb$v_abort #define hrb$v_abortws hrb$r_fill_2_.hrb$r_fill_3_.hrb$v_abortws #define hrb$v_dequeued hrb$r_fill_2_.hrb$r_fill_3_.hrb$v_dequeued #define hrb$v_endmsg hrb$r_fill_2_.hrb$r_fill_3_.hrb$v_endmsg #define hrb$v_map hrb$r_fill_2_.hrb$r_fill_3_.hrb$v_map #define hrb$v_unblock hrb$r_fill_2_.hrb$r_fill_3_.hrb$v_unblock #define hrb$v_vcfailed hrb$r_fill_2_.hrb$r_fill_3_.hrb$v_vcfailed #define hrb$v_oldbuf hrb$r_fill_2_.hrb$r_fill_3_.hrb$v_oldbuf #define hrb$v_wbc_immed hrb$r_fill_2_.hrb$r_fill_3_.hrb$v_wbc_immed #define hrb$v_first hrb$r_fill_2_.hrb$r_fill_3_.hrb$v_first #define hrb$v_flush hrb$r_fill_2_.hrb$r_fill_3_.hrb$v_flush #define hrb$v_cmd_tmo hrb$r_fill_2_.hrb$r_fill_3_.hrb$v_cmd_tmo #define hrb$q_lbn hrb$r_fill_4_.hrb$q_lbn #define hrb$l_lbn hrb$r_fill_4_.hrb$r_fill_5_.hrb$l_lbn #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 /* __HRBDEF_LOADED */