/***************************************************************************/ /** **/ /** 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: 12-SEP-2020 01:52:06 $1$DGA8345:[LIB_H.SRC]BDDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $BDDEF ***/ #ifndef __BDDEF_LOADED #define __BDDEF_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 /*+ */ /* BD - Buffer Descriptor format in Buffer Descriptor Leaf table */ /*- */ #define BD$M_VALID 0x1 #define BD$M_RO 0x2 #define BD$K_LENGTH 64 /* Length of a Buffer Descriptor */ #define BD$C_LENGTH 64 /* Length of a Buffer Descriptor */ #define BD$C_PORT_PAGE_SZ 8192 /* 8K Port Page Size */ #define BD$C_BD_IN_BDL 128 /* Number of BDs in a BDL */ #define BD$S_SHIFT_SIZE 5 /* Factor for shift left of a BDL index to get BD address within a BDL */ /* Note this shift size must reflect the NPort requirement that the BDL_INDEX be */ #define BD$S_BDDEF 64 /* Old size name, synonym */ #ifdef __cplusplus /* Define structure prototypes */ struct _cdrp; struct _crctx; #endif /* #ifdef __cplusplus */ typedef struct _bufdesc { unsigned __int64 bd$q_fill_1; /* Fill for hex alignement. If possible keep bit 16 of this field zero so */ /* the even number descriptor is never treated as a valid BD. */ unsigned short int bd$w_size; /* Structure size in bytes */ unsigned char bd$b_type; /* Structure Type */ unsigned char bd$b_subtype; /* Structure Subtype for BD */ __union { struct _cdrp *bd$l_cdrp; /* Addr of associated CDRP */ void *bd$l_link; /* or addr of next free descriptor */ } bd$r_cdrp_overlay; unsigned __int64 bd$q_root_ptr0_vir; /* Virtual Root Pointer 0 */ unsigned __int64 bd$q_root_ptr1_vir; /* Virtual Root Pointer 1 */ unsigned short int bd$w_page_offset; /* Byte offset of start of buffer */ __union { unsigned short int bd$w_flags; /* Flags word */ __struct { unsigned bd$v_valid : 1; /* Valid bit */ unsigned bd$v_ro : 1; /* Read-Only access mode check enabled if set */ /* - Currently not supported */ unsigned bd$v_fill_0_ : 6; } bd$r_flags_bits; } bd$r_flags_overlay; __union { unsigned int bd$l_bname; /* Buffer Name */ __struct { unsigned bd$v_bdl_index : 8; /* BDL Index */ unsigned bd$v_bdlt_index : 12; /* BDLT Index */ unsigned bd$v_key : 12; /* Sequence Number */ } bd$r_bname_bit_fld; } bd$r_bname_overlay; unsigned int bd$l_buf_len; /* Length of mapped buffer */ unsigned int bd$l_sbz1; /* Should be zero */ __union { __struct { /* Field serves as 1) input to MAP routine and 2) as default CI-like buffer pointer */ /* used by ports with no MAP routine (like PEDRIVER). */ #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 *bd$pq_svapte_sva; /* NOSVAPTE_V9.0 cmos */ #else unsigned __int64 bd$pq_svapte_sva; #endif } bd$r_port_default_buff_ptr; __struct { /* NPORT Overlay */ __union { unsigned __int64 bd$q_root_ptr0_phy; /* Physical Root Pointer 0 */ __struct { unsigned bd$v_ptr0_type : 2; /* Type */ unsigned bd$v_fill_1_ : 6; } bd$r_root_ptr0_fld; } bd$r_root_ptr0_overlay; __union { unsigned __int64 bd$q_root_ptr1_phy; /* Physical Root Pointer 1 */ __struct { unsigned bd$v_ptr1_type : 2; /* Type */ unsigned bd$v_fill_2_ : 6; } bd$r_root_ptr1_fld; } bd$r_root_ptr1_overlay; } bd$r_nport_root_ptr; __struct { /* SSP Port Overlay */ #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 *bd$l_fill_2; /* Skip over "First SVAPTE of User Data Buffer" */ struct _crctx *bd$l_crctx; /* Address of CRCTX assoicated with this I/O request */ } bd$r_ssp_overlay; } bd$r_port_specific_overlay; /* based on a buffer descriptor size of 32. */ } BUFDESC; #if !defined(__VAXC) #define bd$l_cdrp bd$r_cdrp_overlay.bd$l_cdrp #define bd$l_link bd$r_cdrp_overlay.bd$l_link #define bd$w_flags bd$r_flags_overlay.bd$w_flags #define bd$v_valid bd$r_flags_overlay.bd$r_flags_bits.bd$v_valid #define bd$v_ro bd$r_flags_overlay.bd$r_flags_bits.bd$v_ro #define bd$l_bname bd$r_bname_overlay.bd$l_bname #define bd$v_bdl_index bd$r_bname_overlay.bd$r_bname_bit_fld.bd$v_bdl_index #define bd$v_bdlt_index bd$r_bname_overlay.bd$r_bname_bit_fld.bd$v_bdlt_index #define bd$v_key bd$r_bname_overlay.bd$r_bname_bit_fld.bd$v_key #define bd$pq_svapte_sva bd$r_port_specific_overlay.bd$r_port_default_buff_ptr.bd$pq_svapte_sva #define bd$q_root_ptr0_phy bd$r_port_specific_overlay.bd$r_nport_root_ptr.bd$r_root_ptr0_overlay.bd$q_root_ptr0_phy #define bd$v_ptr0_type bd$r_port_specific_overlay.bd$r_nport_root_ptr.bd$r_root_ptr0_overlay.bd$r_root_ptr0_fld.bd$v_ptr0_type #define bd$q_root_ptr1_phy bd$r_port_specific_overlay.bd$r_nport_root_ptr.bd$r_root_ptr1_overlay.bd$q_root_ptr1_phy #define bd$v_ptr1_type bd$r_port_specific_overlay.bd$r_nport_root_ptr.bd$r_root_ptr1_overlay.bd$r_root_ptr1_fld.bd$v_ptr1_type #define bd$l_fill_2 bd$r_port_specific_overlay.bd$r_ssp_overlay.bd$l_fill_2 #define bd$l_crctx bd$r_port_specific_overlay.bd$r_ssp_overlay.bd$l_crctx #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 /* __BDDEF_LOADED */