/**/ /***************************************************************************/ /** **/ /** © 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:26 by OpenVMS SDL EV3-3 */ /* Source: 03-MAY-1993 09:38:29 $1$DGA7274:[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 _pte; 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). */ struct _pte *bd$l_svapte; /* First SVAPTE of User Data Buffer */ } 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 */ 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$l_svapte bd$r_port_specific_overlay.bd$r_port_default_buff_ptr.bd$l_svapte #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 */