/***************************************************************************/ /** **/ /** 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:40 by OpenVMS SDL V3.7 */ /* Source: 22-SEP-2016 16:18:08 $1$DGA8345:[LIB_H.SRC]FCP_QIODEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $FCP_QIODEF IDENT X-5 ***/ #ifndef __FCP_QIODEF_LOADED #define __FCP_QIODEF_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 #ifndef _FCP_QIODEF_LOADED #define _FCP_QIODEF_LOADED /* IO$ACCESS command codes for FibreChannel drivers */ /* Maximum number of filter parameters allowed */ /* (maximum value of the counts defined below) */ /* Make SDL-local constant public */ #define FC$K_EV_FLTR_MAXIMUM_CNT 32 /* Maximum number of FCP status filter bytes */ #define FC$K_EV_FLTR_FCP_STAT_CNT 8 /* Maximum number of extended status filter bytes */ #define FC$K_EV_FLTR_ESTAT_CNT 8 /* Maximum number of SCSI command filter bytes */ #define FC$K_EV_FLTR_SCSI_COMM_CNT 8 /* Maximum number of ASC filter bytes */ #define FC$K_EV_FLTR_ASC_CNT 8 /* Maximum number of WWID filter bytes */ #define FC$K_EV_FLTR_WWID_CNT 32 /* */ /* QIO Function Codes */ /* */ #define FC$C_QIO_QFULL 0 #define FC$C_QIO_FC_LA_DATA 1 #define FC$C_QIO_FLTR_WRITE 2 #define FC$C_QIO_FLTR_READ 3 #define FC$C_QIO_FCP_RING_SIZE 4 #define FC$C_QIO_SET_WTID 5 #define FC$C_QIO_IC 6 #define FC$C_QIO_RING_SIZE 7 #define FC$C_QIO_FASTPATH_RING_SIZE 8 #define FC$C_QIO_SLOW_RING_SIZE 9 #define FC$C_QIO_ERROR_RING_SIZE 10 #define FC$C_QIO_INTERRUPTS_RING_SIZE 11 #define FC$C_QIO_MBX_RING_SIZE 12 #define FC$C_QIO_IOCB_RING_SIZE 13 #define FC$C_QIO_PM_CLEAR 14 #define FC$C_QIO_PM_READ_ALL 15 #define FC$C_QIO_PM_RSCC 16 #define FC$C_QIO_PM_SYSTIME 17 #define FC$C_QIO_SET_ERL_ENTRY 18 #define FC$C_QIO_PM_READ_COUNTERS 19 #define FC$C_QIO_SNIA_REQUEST 20 #define FC$C_QIO_NS_GID_PT 21 /* Get Port IDs using the port type */ #define FC$C_QIO_NS_GPN_ID 22 /* Get Port Name */ #define FC$C_QIO_NS_GSPN_ID 23 /* Get Symbolic Port Name */ #define FC$C_QIO_PM_ALLOC 24 /* X-8a Allocate performance data */ #define FC$C_QIO_PM_DEALLOC 26 /* X-8a Deallocate performance data */ #define FC$C_QIO_GET_WWIDS 27 /* X-9a Select WWIDs by wildcard */ #define FC$C_QIO_GET_WTID 28 /* X-9a Read a WWID_TID structure */ #define FC$C_QIO_SET_WTIDS 29 /* X-9a Modify selected WWID_TID characteristics */ #define FC$C_QIO_PEEK 30 /* X-11 Read driver-accessible address spaces */ #define FC$C_QIO_SUB_FLTR_SCSI_COMM 0 #define FC$C_QIO_SUB_FLTR_FCP_STATUS 1 #define FC$C_QIO_SUB_FLTR_ESTATUS 2 #define FC$C_QIO_SUB_FLTR_ASC 3 #define FC$C_QIO_SUB_FLTR_WWID 4 #define FC$C_QIO_SUB_FLTR_MATCH 5 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _qfull { #pragma __nomember_alignment __int64 qfull$q_command_code; /* FC$C_QFULL */ __int64 qfull$q_qw_count; /* QW parameters (not counting this one) */ __int64 qfull$q_fc_la; /* FibreChannel Logical Address */ __int64 qfull$q_step_divisor; /* Step size based on Queue Full depth */ __int64 qfull$q_drain_multiplier; /* Drain count based on step size */ __int64 qfull$q_probation_factor; /* Probation period based on Queue Full depth */ } QFULL; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _fc_la_data { #pragma __nomember_alignment __int64 fc_la_data$q_command_code; /* FC$C_FC_LA_DATA */ __int64 fc_la_data$q_qw_count; /* QW parameters (not counting this one) */ __int64 fc_la_data$q_fc_la; /* FibreChannel Logical Address */ __int64 fc_la_data$q_fc_address; /* Current FibreChannel address */ __int64 fc_la_data$q_port_name; /* FC-LA's port name */ __int64 fc_la_data$q_node_name; /* FC-LA's node name */ __int64 fc_la_data$q_state; /* FC-LA's state as ELS code */ } FC_LA_DATA; #define FC$C_NO_APPEND 0 #define FC$C_APPEND 1 #define FC$C_OR 0 #define FC$C_AND 1 #define FC$C_NOR 2 #define FC$C_NO_CHANGE 3 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _filter_data_write { #pragma __nomember_alignment __int64 filter_data_write$q_command_code; /* FC$C_QIO_FLTR_WRITE */ __int64 filter_data_write$q_qw_count; /* QW parameters (not counting this one) */ __int64 filter_data_write$q_sub_command; /* Sub-command FC$C_QIO_SUB_FLTR_* */ __int64 filter_data_write$q_append; /* Append flag (0=no, 1=yes) */ __int64 filter_data_write$q_match; /* Match flag (0=or, 1=and, 2=no change) */ __int64 filter_data_write$q_data [32]; /* Data for specified filter function */ } FILTER_DATA_WRITE; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _filter_data_read { #pragma __nomember_alignment __int64 filter_data_read$q_command_code; /* FC$C_QIO_FLTR_READ */ __int64 filter_data_read$q_qw_count; /* QW parameters (not counting this one) */ __int64 filter_data_read$q_sub_command; /* Sub-command FC$C_QIO_SUB_FLTR_* */ } FILTER_DATA_READ; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _filter_data_rsp { #pragma __nomember_alignment __int64 filter_data_rsp$q_qw_count; /* QW parameters (not counting this one) */ __int64 filter_data_rsp$q_data [32]; /* Data for specified filter function */ } FILTER_DATA_RSP; #define FLTR_IOSB$M_ALREADY_EXISTS 0x1 #define FLTR_IOSB$M_TOO_MANY_VALUES 0x2 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _fltr_iosb { #pragma __nomember_alignment unsigned short int fltr_iosb$w_status; short int fltr_iosb$w_reserved0; short int fltr_iosb$w_reserved1; /* Error word */ __union { unsigned short int fltr_iosb$w_error_word; __struct { unsigned fltr_iosb$v_already_exists : 1; unsigned fltr_iosb$v_too_many_values : 1; unsigned fltr_iosb$v_reserved0 : 14; } fltr_iosb$r_error_word_bits; } fltr_iosb$r_error_word_overlay; } FLTR_IOSB; #if !defined(__VAXC) #define fltr_iosb$w_error_word fltr_iosb$r_error_word_overlay.fltr_iosb$w_error_word #define fltr_iosb$v_already_exists fltr_iosb$r_error_word_overlay.fltr_iosb$r_error_word_bits.fltr_iosb$v_already_exists #define fltr_iosb$v_too_many_values fltr_iosb$r_error_word_overlay.fltr_iosb$r_error_word_bits.fltr_iosb$v_too_many_values #endif /* #if !defined(__VAXC) */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _ring_size_data { #pragma __nomember_alignment __int64 ring_size_data$q_command_code; /* FC$C_QIO_RING_SIZE */ __int64 ring_size_data$q_qw_count; /* QW parameters (not counting this one) */ __int64 ring_size_data$q_ring_size; /* Number of ring entries requested */ } RING_SIZE_DATA; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _ic { #pragma __nomember_alignment __int64 ic$q_command_code; /* FC$C_QIO_IC */ __int64 ic$q_qw_count; /* QW parameters (not counting this one) */ __int64 ic$q_rsp_int; __int64 ic$q_delay_ms; __int64 ic$q_rsp_cnt; } IC; #define FC$C_MAX_QFULL_WAIT 1 /* Minimum allowed user-specified IO cap */ #define FC$C_USER_IO_CAP_MIN 8 /* Minimum allowed user-specified IO cap */ #define FC$C_USER_IO_CAP_MAX 65535 /* Queue Full processing types */ #define FC$C_QFULL_LOAD 0 #define FC$C_QFULL_TIMED 1 /* Default Queue Full delay time (for Timed processing) */ #define FC$C_QFULL_TIMED_DELAY_DEF 500 /* Minimum Queue Full delay time (for Timed processing) */ #define FC$C_QFULL_TIMED_DELAY_MIN 1 /* Maximum Queue Full delay time (for Timed processing) */ #define FC$C_QFULL_TIMED_DELAY_MAX 6000 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _set_wtid { #pragma __nomember_alignment __int64 set_wtid$q_command_code; /* FC$C_QIO_SET_WTID */ __int64 set_wtid$q_byte_count; /* Number of bytes following this quadword */ __int64 set_wtid$q_io_cap; /* IO cap value */ __int64 set_wtid$q_qfull_wait; /* Initiate cap after queue full seen */ __int64 set_wtid$q_qfull_type; /* Queue-full processing type */ __int64 set_wtid$q_qfull_time; /* Queue-full delay time (for time-based processing) */ __int64 set_wtid$q_wwid; /* WWID */ } SET_WTID; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _set_erl_entry { #pragma __nomember_alignment __int64 set_erl_entry$q_command_code; /* FC$C_SET_ERL_ENTRY */ __int64 set_erl_entry$q_qw_count; /* QW parameters (not counting this one) */ unsigned __int64 set_erl_entry$q_entry_count; /* Number of error log entries requested */ } SET_ERL_ENTRY; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _pm_qio { #pragma __nomember_alignment __int64 pm_qio$q_command_code; /* FC$C_PM_* commands */ __int64 pm_qio$q_device_class; /* X-7 DC$_TAPE, DC$_DISK, etc. */ __int64 pm_qio$q_device_id; /* X-7 Unit number, or 0 for all devices */ } PM_QIO; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _pm_counters { #pragma __nomember_alignment unsigned __int64 pm_counters$q_read_time_acc; /* Accumulated read time */ unsigned __int64 pm_counters$q_write_time_acc; /* Accumulated write time */ unsigned int pm_counters$l_reads; /* Number of reads */ unsigned int pm_counters$l_writes; /* Number of writes */ unsigned int pm_counters$l_blocks_read; /* Accumulated number of blocks read */ unsigned int pm_counters$l_blocks_written; /* Accumulated number of blocks written */ } PM_COUNTERS; /* Nameserver Support */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _ns_qio { #pragma __nomember_alignment __int64 ns_qio$q_command_code; /* FC$C_NS_* commands */ __int64 ns_qio$q_port; /* Port ID */ } NS_QIO; /* SNIA support */ #define FC$C_QIO_SUB_SNIA_ADP_ATTR 0 #define FC$C_QIO_SUB_SNIA_PORT_ATTR 1 #define FC$C_QIO_SUB_SNIA_PORTSTAT 2 #define FC$C_QIO_SUB_SNIA_DISCPORTATTR 3 #define FC$C_QIO_SUB_SNIA_RNIDMGMT 4 #define FC$C_QIO_SUB_SNIA_DISCWWPNATTR 5 #define FC$C_QIO_SUB_SNIA_FCPSTAT 6 /* Put this header on a specific SNIA structure */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _snia_request_header { #pragma __nomember_alignment __int64 snia_rq_hdr$q_command_code; /* FGE$C_QIO_SNIA_REQUEST */ __int64 snia_rq_hdr$q_qw_count; /* QW parameters (not counting this one) */ __int64 snia_rq_hdr$q_sub_command; /* Specific SNIA command */ __int64 snia_rq_hdr$q_port_id; /* Specific PORT identifier WWID or index */ __int64 snia_rq_hdr$q_data; /* Parameter for command */ } SNIA_REQUEST_HEADER; #define SNIA$K_MAX_CDB_SIZE 12 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _path_cdb { #pragma __nomember_alignment __int64 snia_path$q_lun; /* LUN */ int snia_path$is_target; /* Target FC_LA */ unsigned int snia_path$l_length; /* True length of CDB. */ unsigned char snia_path$b_cdb [12]; /* CDB bytes */ char snia_path$b_fill_0_ [4]; } PATH_CDB; /* X-10 */ /* */ /* X-9b Set characteristics for a potentially wildcarded WWID */ /* */ #define SET_WTIDS$M_NODE 1 /* Constant for use outside of structure */ #define SET_WTIDS$M_NODE 0x1 #define SET_WTIDS$M_OR 2 /* Constant for use outside of structure */ #define SET_WTIDS$M_OR 0x2 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _set_wtids { #pragma __nomember_alignment __int64 set_wtids$q_command_code; /* FC$C_QIO_SET_WTID */ __int64 set_wtids$q_byte_count; /* Number of bytes following this quadword */ __int64 set_wtids$q_wwid; /* WWID - port WWID by default, node WWID if SET_WTID$V_NODE is set */ __int64 set_wtids$q_match; /* Wildcarded nibbles are 0'd in this mask */ char set_wtids$b_product_id [16]; /* ASCIZ product ID string to match */ __union { unsigned __int64 set_wtids$q_flags; /* Control flags */ __struct { unsigned set_wtids$v_node : 1; /* WWID is a node WWID (else port) */ unsigned set_wtids$v_or : 1; /* Match either WWID or Product ID (else AND) */ unsigned set_wtids$v_fill_3_ : 6; } set_wtids$r_fill_2_; } set_wtids$r_fill_1_; /* End control flags */ __int64 set_wtids$q_io_cap; /* IO cap value */ __int64 set_wtids$q_qfull_wait; /* Initiate cap after queue full seen */ __int64 set_wtids$q_qfull_type; /* Queue-full processing type */ __int64 set_wtids$q_qfull_time; /* Queue-full delay time (for time-based processing) */ } SET_WTIDS; #if !defined(__VAXC) #define set_wtids$q_flags set_wtids$r_fill_1_.set_wtids$q_flags #define set_wtids$v_node set_wtids$r_fill_1_.set_wtids$r_fill_2_.set_wtids$v_node #define set_wtids$v_or set_wtids$r_fill_1_.set_wtids$r_fill_2_.set_wtids$v_or #endif /* #if !defined(__VAXC) */ /* */ /* X-9c Get the port WWIDs selected by a wildcarded WWID and/or a partial product ID */ /* */ #define GET_WWIDS$M_NODE 1 /* Constant for use outside of structure */ #define GET_WWIDS$M_NODE 0x1 #define GET_WWIDS$M_OR 2 /* Constant for use outside of structure */ #define GET_WWIDS$M_OR 0x2 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _get_wwids { #pragma __nomember_alignment __int64 get_wwids$q_command_code; /* FC$C_QIO_GET_WWID */ __int64 get_wwids$q_byte_count; /* Number of bytes following this quadword */ __union { unsigned __int64 get_wwids$q_flags; /* Control flags */ __struct { unsigned get_wwids$v_node : 1; /* WWID is a node WWID (else port) */ unsigned get_wwids$v_or : 1; /* Match either WWID or Product ID (else AND) */ unsigned get_wwids$v_fill_6_ : 6; } get_wwids$r_fill_5_; } get_wwids$r_fill_4_; /* End control flags */ __int64 get_wwids$q_wwid; /* Base WWID to match */ char get_wwids$b_product_id [16]; /* ASCIZ product ID string to match */ __int64 get_wwids$q_match; /* Wildcarded nibbles are 0'd in this mask */ } GET_WWIDS; #if !defined(__VAXC) #define get_wwids$q_flags get_wwids$r_fill_4_.get_wwids$q_flags #define get_wwids$v_node get_wwids$r_fill_4_.get_wwids$r_fill_5_.get_wwids$v_node #define get_wwids$v_or get_wwids$r_fill_4_.get_wwids$r_fill_5_.get_wwids$v_or #endif /* #if !defined(__VAXC) */ /* */ /* X-9d Structure returned by a successful FC$C_QIO_GET_WWID */ /* */ #define WWIDS$M_NODE 1 /* Constant for use outside of structure */ #define WWIDS$M_NODE 0x1 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _wwids { #pragma __nomember_alignment __int64 wwids$q_matched; /* Number of WWIDs which matched */ __int64 wwids$q_count; /* Number of WWIDs which follow */ __union { unsigned __int64 wwids$q_flags; /* Control flags */ __struct { unsigned wwids$v_node : 1; /* WWIDs are node WWIDs (else port) */ unsigned wwids$v_fill_9_ : 7; } wwids$r_fill_8_; } wwids$r_fill_7_; /* End control flags */ __int64 wwids$q_wwids [1]; /* Port or node WWIDS (keep as last field) */ } WWIDS; #if !defined(__VAXC) #define wwids$q_flags wwids$r_fill_7_.wwids$q_flags #define wwids$v_node wwids$r_fill_7_.wwids$r_fill_8_.wwids$v_node #endif /* #if !defined(__VAXC) */ /* */ /* X-9e Return the WWID_TID selected by the specified port WWID */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _get_wtid { #pragma __nomember_alignment __int64 get_wtid$q_command_code; /* FC$C_QIO_GET_WTID */ __int64 get_wtid$q_byte_count; /* Number of bytes following this quadword */ __int64 get_wtid$q_wwid; /* Port WWID */ } GET_WTID; #define PEEK$M_PCI 1 /* Read PCI CSRs */ #define PEEK$M_PCI 0x1 #define PEEK$M_FLASH 2 /* Read flash memory */ #define PEEK$M_FLASH 0x2 #define PEEK$M_CSR 4 /* Read controller CSRs */ #define PEEK$M_CSR 0x4 #define PEEK$M_MQIO 8 /* Read controller Multi-Queue I/O space */ #define PEEK$M_MQIO 0x8 #define PEEK$M_MSIX 16 /* Read controller MSI-X space */ #define PEEK$M_MSIX 0x10 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _peek { #pragma __nomember_alignment unsigned __int64 peek$q_command_code; /* FC$C_QIO_PEEK */ __union { unsigned __int64 peek$q_flags; __struct { unsigned peek$v_pci : 1; unsigned peek$v_flash : 1; unsigned peek$v_csr : 1; unsigned peek$v_mqio : 1; unsigned peek$v_msix : 1; unsigned peek$v_fill_12_ : 3; } peek$r_fill_11_; } peek$r_fill_10_; __union { /* Offset of starting DWORD */ unsigned __int64 peek$q_offset; /* For flash, this is a DWORD index, */ unsigned int peek$l_offset; /* but for CSRs it is a byte offset */ } peek$r_offset_overlay; __union { /* Number of DWORDs to read */ unsigned __int64 peek$q_dword_count; unsigned int peek$l_dword_count; } peek$r_dword_count_overlay; __union { /* Starting location - for flash reads this */ unsigned __int64 peek$q_location; /* allows the caller to calculate the base */ unsigned int peek$l_location; /* of flash memory (subtract starting OFFSET) */ } peek$r_location_overlay; unsigned int peek$l_dwords [1]; /* Returned DWORDs - leave as the last */ /* field so the structure can be */ /* extended when allocated */ char peek$b_fill_13_ [4]; } PEEK; #if !defined(__VAXC) #define peek$q_flags peek$r_fill_10_.peek$q_flags #define peek$v_pci peek$r_fill_10_.peek$r_fill_11_.peek$v_pci #define peek$v_flash peek$r_fill_10_.peek$r_fill_11_.peek$v_flash #define peek$v_csr peek$r_fill_10_.peek$r_fill_11_.peek$v_csr #define peek$v_mqio peek$r_fill_10_.peek$r_fill_11_.peek$v_mqio #define peek$v_msix peek$r_fill_10_.peek$r_fill_11_.peek$v_msix #define peek$q_offset peek$r_offset_overlay.peek$q_offset #define peek$l_offset peek$r_offset_overlay.peek$l_offset #define peek$q_dword_count peek$r_dword_count_overlay.peek$q_dword_count #define peek$l_dword_count peek$r_dword_count_overlay.peek$l_dword_count #define peek$q_location peek$r_location_overlay.peek$q_location #define peek$l_location peek$r_location_overlay.peek$l_location #endif /* #if !defined(__VAXC) */ /* X-10 */ #endif #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 /* __FCP_QIODEF_LOADED */