/**/ /***************************************************************************/ /** **/ /** © 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:25:33 by OpenVMS SDL EV3-3 */ /* Source: 24-MAR-2004 10:54:46 $1$DGA7274:[LIB_H.SRC]FCPDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $FCPDEF IDENT X-1 ***/ #ifndef __FCPDEF_LOADED #define __FCPDEF_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 _FCPDEF_LOADED #define _FCPDEF_LOADED #define FCP_CNTL$M_WRITE_DATA 0x1 #define FCP_CNTL$M_READ_DATA 0x2 #define FCP_CNTL$M_RESERVED1 0x1 #define FCP_CNTL$M_ABORT_TASK_SET 0x2 #define FCP_CNTL$M_CLEAR_TASK_SET 0x4 #define FCP_CNTL$M_RESERVED2 0x18 #define FCP_CNTL$M_TARGET_RESET 0x20 #define FCP_CNTL$M_CLEAR_ACA 0x40 #define FCP_CNTL$M_TERMINATE_TASK 0x80 #define FCP_CNTL$M_TASK_ATTRIBUTE 0x7 #define FCP_CNTL$K_SIMPLE 0 /* Simple tag */ #define FCP_CNTL$K_HEAD 1 /* Head of Queue tag */ #define FCP_CNTL$K_ORDERED 2 /* Ordered Queue tag */ #define FCP_CNTL$K_ACA 4 /* ACA tag */ #define FCP_CNTL$K_UNTAGGED 5 /* Untagged */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _fcp_cntl_t { #pragma __nomember_alignment __union { int fcp_cntl$l_fcp_cntl_bits; __struct { __union { /* Execution management codes */ unsigned char fcp_cntl$b_exe_mgt_code; __union { char fcp_cntl$b_exe_mgt_code_bits; __struct { unsigned fcp_cntl$v_write_data : 1; /* SCSI write operation */ unsigned fcp_cntl$v_read_data : 1; /* SCSI read operation */ unsigned fcp_cntl$v_fill_8_ : 6; } fcp_cntl$r_fill_3_; } fcp_cntl$r_fill_2_; } fcp_cntl$r_exe_mgt_code_overlay; __union { /* Task management flags */ unsigned char fcp_cntl$b_task_mgt_flags; __union { char fcp_cntl$b_task_mgt_flags_bits; __struct { unsigned fcp_cntl$v_reserved1 : 1; /* Reserved */ unsigned fcp_cntl$v_abort_task_set : 1; /* ABORT TASK SET request */ unsigned fcp_cntl$v_clear_task_set : 1; /* CLEAR TASK SET request */ unsigned fcp_cntl$v_reserved2 : 2; /* Reserved */ unsigned fcp_cntl$v_target_reset : 1; /* TARGET RESET request */ unsigned fcp_cntl$v_clear_aca : 1; /* CLEAR ACA request */ unsigned fcp_cntl$v_terminate_task : 1; /* TERMINATE TASK request */ } fcp_cntl$r_fill_5_; } fcp_cntl$r_fill_4_; } fcp_cntl$r_task_mgt_flags_overlay; /* Task codes */ __union { unsigned char fcp_cntl$b_task_code; __union { char fcp_cntl$b_task_code_bits; __struct { unsigned fcp_cntl$v_task_attribute : 3; /* Task attribute values: */ unsigned fcp_cntl$v_fill_9_ : 5; } fcp_cntl$r_fill_7_; } fcp_cntl$r_fill_6_; } fcp_cntl$r_task_code_overlay; unsigned char fcp_cntl$b_reserved4; /* Reserved */ } fcp_cntl$r_fill_1_; } fcp_cntl$r_fill_0_; } FCP_CNTL_T; #if !defined(__VAXC) #define fcp_cntl$l_fcp_cntl_bits fcp_cntl$r_fill_0_.fcp_cntl$l_fcp_cntl_bits #define fcp_cntl$r_exe_mgt_code_overlay fcp_cntl$r_fill_0_.fcp_cntl$r_fill_1_.fcp_cntl$r_exe_mgt_code_overlay #define fcp_cntl$b_exe_mgt_code fcp_cntl$r_exe_mgt_code_overlay.fcp_cntl$b_exe_mgt_code #define fcp_cntl$b_exe_mgt_code_bits fcp_cntl$r_exe_mgt_code_overlay.fcp_cntl$r_fill_2_.fcp_cntl$b_exe_mgt_code_bits #define fcp_cntl$v_write_data fcp_cntl$r_exe_mgt_code_overlay.fcp_cntl$r_fill_2_.fcp_cntl$r_fill_3_.fcp_cntl$v_write_data #define fcp_cntl$v_read_data fcp_cntl$r_exe_mgt_code_overlay.fcp_cntl$r_fill_2_.fcp_cntl$r_fill_3_.fcp_cntl$v_read_data #define fcp_cntl$r_task_mgt_flags_overlay fcp_cntl$r_fill_0_.fcp_cntl$r_fill_1_.fcp_cntl$r_task_mgt_flags_overlay #define fcp_cntl$b_task_mgt_flags fcp_cntl$r_task_mgt_flags_overlay.fcp_cntl$b_task_mgt_flags #define fcp_cntl$b_task_mgt_flags_bits fcp_cntl$r_task_mgt_flags_overlay.fcp_cntl$r_fill_4_.fcp_cntl$b_task_mgt_flags_bits #define fcp_cntl$v_reserved1 fcp_cntl$r_task_mgt_flags_overlay.fcp_cntl$r_fill_4_.fcp_cntl$r_fill_5_.fcp_cntl$v_reserved1 #define fcp_cntl$v_abort_task_set fcp_cntl$r_task_mgt_flags_overlay.fcp_cntl$r_fill_4_.fcp_cntl$r_fill_5_.fcp_cntl$v_abort_task_set #define fcp_cntl$v_clear_task_set fcp_cntl$r_task_mgt_flags_overlay.fcp_cntl$r_fill_4_.fcp_cntl$r_fill_5_.fcp_cntl$v_clear_task_set #define fcp_cntl$v_reserved2 fcp_cntl$r_task_mgt_flags_overlay.fcp_cntl$r_fill_4_.fcp_cntl$r_fill_5_.fcp_cntl$v_reserved2 #define fcp_cntl$v_target_reset fcp_cntl$r_task_mgt_flags_overlay.fcp_cntl$r_fill_4_.fcp_cntl$r_fill_5_.fcp_cntl$v_target_reset #define fcp_cntl$v_clear_aca fcp_cntl$r_task_mgt_flags_overlay.fcp_cntl$r_fill_4_.fcp_cntl$r_fill_5_.fcp_cntl$v_clear_aca #define fcp_cntl$v_terminate_task fcp_cntl$r_task_mgt_flags_overlay.fcp_cntl$r_fill_4_.fcp_cntl$r_fill_5_.fcp_cntl$v_terminate_task #define fcp_cntl$r_task_code_overlay fcp_cntl$r_fill_0_.fcp_cntl$r_fill_1_.fcp_cntl$r_task_code_overlay #define fcp_cntl$b_task_code fcp_cntl$r_task_code_overlay.fcp_cntl$b_task_code #define fcp_cntl$b_task_code_bits fcp_cntl$r_task_code_overlay.fcp_cntl$r_fill_6_.fcp_cntl$b_task_code_bits #define fcp_cntl$v_task_attribute fcp_cntl$r_task_code_overlay.fcp_cntl$r_fill_6_.fcp_cntl$r_fill_7_.fcp_cntl$v_task_attribute #define fcp_cntl$b_reserved4 fcp_cntl$r_fill_0_.fcp_cntl$r_fill_1_.fcp_cntl$b_reserved4 #endif /* #if !defined(__VAXC) */ /* X-4 Define CDB length consistently */ #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 _fcp_cmnd { #pragma __nomember_alignment unsigned __int64 fcp_cmnd$q_fcp_lun; FCP_CNTL_T fcp_cmnd$r_fcp_cntl; unsigned char fcp_cmnd$b_fcp_cdb [16]; unsigned int fcp_cmnd$l_fcp_dl; /* X-4 Define an SDA-accessible symbol for the size of this structure */ } FCP_CMND; #define FCP_STATUS$M_FCP_RSP_LEN_VALID 0x1 #define FCP_STATUS$M_FCP_SNS_LEN_VALID 0x2 #define FCP_STATUS$M_FCP_RESID_OVER 0x4 #define FCP_STATUS$M_FCP_RESID_UNDER 0x8 #define FCP_STATUS$M_RESERVED1 0xF0 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _fcp_status_t { #pragma __nomember_alignment unsigned char fcp_status$b_scsi_status; /* SCSI status byte */ __union { unsigned char fcp_status$b_status_flags; __union { char fcp_status$b_status_flags_bits; __struct { unsigned fcp_status$v_fcp_rsp_len_valid : 1; /* FCP_RSP_LEN is valid */ unsigned fcp_status$v_fcp_sns_len_valid : 1; /* FCP_SNS_LEN is valid */ unsigned fcp_status$v_fcp_resid_over : 1; /* Overflow occurred */ unsigned fcp_status$v_fcp_resid_under : 1; /* Underflow occurred */ unsigned fcp_status$v_reserved1 : 4; } fcp_status$r_fill_11_; } fcp_status$r_fill_10_; } fcp_status$r_status_flags_overlay; unsigned char fcp_status$b_reserved2; /* Reserved */ unsigned char fcp_status$b_reserved3; /* Reserved */ } FCP_STATUS_T; #if !defined(__VAXC) #define fcp_status$b_status_flags fcp_status$r_status_flags_overlay.fcp_status$b_status_flags #define fcp_status$b_status_flags_bits fcp_status$r_status_flags_overlay.fcp_status$r_fill_10_.fcp_status$b_status_flags_bits #define fcp_status$v_fcp_rsp_len_valid fcp_status$r_status_flags_overlay.fcp_status$r_fill_10_.fcp_status$r_fill_11_.fcp_status$v_f\ cp_rsp_len_valid #define fcp_status$v_fcp_sns_len_valid fcp_status$r_status_flags_overlay.fcp_status$r_fill_10_.fcp_status$r_fill_11_.fcp_status$v_f\ cp_sns_len_valid #define fcp_status$v_fcp_resid_over fcp_status$r_status_flags_overlay.fcp_status$r_fill_10_.fcp_status$r_fill_11_.fcp_status$v_fcp_\ resid_over #define fcp_status$v_fcp_resid_under fcp_status$r_status_flags_overlay.fcp_status$r_fill_10_.fcp_status$r_fill_11_.fcp_status$v_fcp\ _resid_under #define fcp_status$v_reserved1 fcp_status$r_status_flags_overlay.fcp_status$r_fill_10_.fcp_status$r_fill_11_.fcp_status$v_reserved1 #endif /* #if !defined(__VAXC) */ #define FCP_RSP_INFO$K_SUCCESS 0 /* Function complete */ #define FCP_RSP_INFO$K_DATA_LEN_MISMATCH 1 /* FCP_DATA <> BURST_LEN */ #define FCP_RSP_INFO$K_INVALID_CMD 2 /* FCP_CMND fields invalid */ #define FCP_RSP_INFO$K_DATA_RO_MISMATCH 3 /* FCP_DATA RO <> FCP_XFER_RDY DATA_RO */ #define FCP_RSP_INFO$K_UNSUPPORTED_FUNC 4 /* Tsk mgt function not supported */ #define FCP_RSP_INFO$K_FUNC_FAILED 5 /* Tsk mgt function failed */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _fcp_rsp_info_t { #pragma __nomember_alignment unsigned char fcp_rsp_info$b_reserved1 [4]; unsigned char fcp_rsp_info$b_rsp_code; /* Response codes (p. 34) */ unsigned char fcp_rsp_info$b_reserved2 [3]; /* Reserved */ } FCP_RSP_INFO_T; #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 _fcp_rsp { #pragma __nomember_alignment unsigned char fcp_rsp$b_reserved1 [8]; /* Reserved */ FCP_STATUS_T fcp_rsp$r_fcp_status; /* FCP status */ unsigned int fcp_rsp$l_fcp_resid; /* Residual count */ unsigned int fcp_rsp$l_fcp_sns_len; /* No. of valid FCP_SNS_INFO bytes */ unsigned int fcp_rsp$l_fcp_rsp_len; /* No. of valid FCP_RSP_INFO btyes */ FCP_RSP_INFO_T fcp_rsp$r_scsi_rsp_info; /* Info on FCP protocol failures */ /* X-4 Define an SDA-accessible symbol for the size of this structure up to the SCSI Sense Info */ unsigned char fcp_rsp$b_scsi_sns_info [256]; /* Sense data (following a Check Condition) */ } FCP_RSP; #define FCP_LPP$M_RSPNDR_PROC_ASSOC_VALID 0x4000 #define FCP_LPP$M_ORIG_PROC_ASSOC_VALID 0x8000 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _logout_param_page_t { /* Longword 0 */ #pragma __nomember_alignment __union { int fcp_lpp$l_lpp_flags; __struct { unsigned fcp_lpp$v_reserved1 : 8; unsigned fcp_lpp$v_rsp_code : 4; unsigned fcp_lpp$v_reserved2 : 2; unsigned fcp_lpp$v_rspndr_proc_assoc_valid : 1; unsigned fcp_lpp$v_orig_proc_assoc_valid : 1; unsigned fcp_lpp$v_reserved3 : 16; } fcp_lpp$r_fill_13_; } fcp_lpp$r_fill_12_; /* Longword 1 */ int fcp_lpp$l_orig_proc_assoc; /* Longword 2 */ int fcp_lpp$l_rspndr_proc_assoc; /* Longword 3 */ int fcp_lpp$l_reserved4; } LOGOUT_PARAM_PAGE_T; #if !defined(__VAXC) #define fcp_lpp$l_lpp_flags fcp_lpp$r_fill_12_.fcp_lpp$l_lpp_flags #define fcp_lpp$v_reserved1 fcp_lpp$r_fill_12_.fcp_lpp$r_fill_13_.fcp_lpp$v_reserved1 #define fcp_lpp$v_rsp_code fcp_lpp$r_fill_12_.fcp_lpp$r_fill_13_.fcp_lpp$v_rsp_code #define fcp_lpp$v_reserved2 fcp_lpp$r_fill_12_.fcp_lpp$r_fill_13_.fcp_lpp$v_reserved2 #define fcp_lpp$v_rspndr_proc_assoc_valid fcp_lpp$r_fill_12_.fcp_lpp$r_fill_13_.fcp_lpp$v_rspndr_proc_assoc_valid #define fcp_lpp$v_orig_proc_assoc_valid fcp_lpp$r_fill_12_.fcp_lpp$r_fill_13_.fcp_lpp$v_orig_proc_assoc_valid #define fcp_lpp$v_reserved3 fcp_lpp$r_fill_12_.fcp_lpp$r_fill_13_.fcp_lpp$v_reserved3 #endif /* #if !defined(__VAXC) */ #define FCP_SPP$M_RESERVED1 0xFF #define FCP_SPP$M_ACC_RSP_CODE 0xF00 #define FCP_SPP$K_SUCCESS 1 /* Request executed */ #define FCP_SPP$K_INSUFF_RESOURCES 2 /* Target has no resources to establish img pair */ #define FCP_SPP$K_INIT_INCOMPLETE 3 /* Initialization incomplete for target image */ #define FCP_SPP$K_NONEXISTENT_TARGET 4 /* The specified target image does not exist */ #define FCP_SPP$K_CONFIG_RESTRICTION 5 /* Target image's predefined config precluded this img pr */ #define FCP_SPP$K_CONDITIONAL_SUCCESS 6 /* Some requested service parameters were not set */ #define FCP_SPP$K_MULTIPAGE_DISALLOWED 7 /* Destination N_Port cannot process multipage requests */ #define FCP_SPP$M_RESERVED2 0x1000 #define FCP_SPP$M_ESTABLISHED_IMAGE_PAIR 0x2000 #define FCP_SPP$M_RSPNDR_PROC_ASSOC_VALID 0x4000 #define FCP_SPP$M_ORIG_PROC_ASSOC_VALID 0x8000 #define FCP_SPP$M_WRITE_XFER_RDY_DISABLED 0x1 #define FCP_SPP$M_READ_XFER_RDY_DISABLED 0x2 #define FCP_SPP$M_DATA_RSP_MIX_ALLOWED 0x4 #define FCP_SPP$M_CMD_DATA_MIX_ALLOWED 0x8 #define FCP_SPP$M_TARGET_FUNCTION 0x10 #define FCP_SPP$M_INITIATOR_FUNCTION 0x20 #define FCP_SPP$M_DATA_OVERLAY_ALLOWED 0x40 #define FCP_SPP$M_RESERVED3 0xFFFFFF80 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _service_param_page_t { #pragma __nomember_alignment __union { int fcp_spp$l_spp_associator_flags; __struct { unsigned fcp_spp$v_reserved1 : 8; /* Reserved */ unsigned fcp_spp$v_acc_rsp_code : 4; /* Accept response codes (PRLI: p. 43, PRLO: p. 49) */ unsigned fcp_spp$v_reserved2 : 1; /* Reserved */ unsigned fcp_spp$v_established_image_pair : 1; /* Image pair established */ unsigned fcp_spp$v_rspndr_proc_assoc_valid : 1; /* Responder process associator valid */ unsigned fcp_spp$v_orig_proc_assoc_valid : 1; /* Originator process associator valid */ char fcp_spp$b_type_code_extension; /* Type code extension */ char fcp_spp$b_type_code; /* Type code (eg., SCSI FCP = 08) */ } fcp_spp$r_fill_15_; } fcp_spp$r_fill_14_; int fcp_spp$l_orig_proc_assoc; /* Originator process associator */ int fcp_spp$l_rspndr_proc_assoc; /* Responder process associator */ __union { int fcp_spp$l_common_service_parameter; __union { int fcp_spp$l_spp_function_flags; /* Service parameters (p. 17) */ __struct { unsigned fcp_spp$v_write_xfer_rdy_disabled : 1; /* FCP_XFER_RDY disallowed on write */ unsigned fcp_spp$v_read_xfer_rdy_disabled : 1; /* FCP_XFER_RDY disallowed on read */ unsigned fcp_spp$v_data_rsp_mix_allowed : 1; /* FCP_DATA and FCP_RSP may be combined in one IU */ unsigned fcp_spp$v_cmd_data_mix_allowed : 1; /* FCP_CMND and FCP_DATA may be combined in one IU */ unsigned fcp_spp$v_target_function : 1; /* Functioning as a target */ unsigned fcp_spp$v_initiator_function : 1; /* Functioning as an initiator */ unsigned fcp_spp$v_data_overlay_allowed : 1; /* Data overlays allowed */ unsigned fcp_spp$v_reserved3 : 25; /* Reserved */ } fcp_spp$r_fill_17_; } fcp_spp$r_fill_16_; } fcp_spp$r_spp_longword_3; } SERVICE_PARAM_PAGE_T; #if !defined(__VAXC) #define fcp_spp$l_spp_associator_flags fcp_spp$r_fill_14_.fcp_spp$l_spp_associator_flags #define fcp_spp$v_reserved1 fcp_spp$r_fill_14_.fcp_spp$r_fill_15_.fcp_spp$v_reserved1 #define fcp_spp$v_acc_rsp_code fcp_spp$r_fill_14_.fcp_spp$r_fill_15_.fcp_spp$v_acc_rsp_code #define fcp_spp$v_reserved2 fcp_spp$r_fill_14_.fcp_spp$r_fill_15_.fcp_spp$v_reserved2 #define fcp_spp$v_established_image_pair fcp_spp$r_fill_14_.fcp_spp$r_fill_15_.fcp_spp$v_established_image_pair #define fcp_spp$v_rspndr_proc_assoc_valid fcp_spp$r_fill_14_.fcp_spp$r_fill_15_.fcp_spp$v_rspndr_proc_assoc_valid #define fcp_spp$v_orig_proc_assoc_valid fcp_spp$r_fill_14_.fcp_spp$r_fill_15_.fcp_spp$v_orig_proc_assoc_valid #define fcp_spp$b_type_code_extension fcp_spp$r_fill_14_.fcp_spp$r_fill_15_.fcp_spp$b_type_code_extension #define fcp_spp$b_type_code fcp_spp$r_fill_14_.fcp_spp$r_fill_15_.fcp_spp$b_type_code #define fcp_spp$l_common_service_parameter fcp_spp$r_spp_longword_3.fcp_spp$l_common_service_parameter #define fcp_spp$l_spp_function_flags fcp_spp$r_spp_longword_3.fcp_spp$r_fill_16_.fcp_spp$l_spp_function_flags #define fcp_spp$v_write_xfer_rdy_disabled fcp_spp$r_spp_longword_3.fcp_spp$r_fill_16_.fcp_spp$r_fill_17_.fcp_spp$v_write_xfer_rdy_d\ isabled #define fcp_spp$v_read_xfer_rdy_disabled fcp_spp$r_spp_longword_3.fcp_spp$r_fill_16_.fcp_spp$r_fill_17_.fcp_spp$v_read_xfer_rdy_dis\ abled #define fcp_spp$v_data_rsp_mix_allowed fcp_spp$r_spp_longword_3.fcp_spp$r_fill_16_.fcp_spp$r_fill_17_.fcp_spp$v_data_rsp_mix_allowed #define fcp_spp$v_cmd_data_mix_allowed fcp_spp$r_spp_longword_3.fcp_spp$r_fill_16_.fcp_spp$r_fill_17_.fcp_spp$v_cmd_data_mix_allowed #define fcp_spp$v_target_function fcp_spp$r_spp_longword_3.fcp_spp$r_fill_16_.fcp_spp$r_fill_17_.fcp_spp$v_target_function #define fcp_spp$v_initiator_function fcp_spp$r_spp_longword_3.fcp_spp$r_fill_16_.fcp_spp$r_fill_17_.fcp_spp$v_initiator_function #define fcp_spp$v_data_overlay_allowed fcp_spp$r_spp_longword_3.fcp_spp$r_fill_16_.fcp_spp$r_fill_17_.fcp_spp$v_data_overlay_allowed #define fcp_spp$v_reserved3 fcp_spp$r_spp_longword_3.fcp_spp$r_fill_16_.fcp_spp$r_fill_17_.fcp_spp$v_reserved3 #endif /* #if !defined(__VAXC) */ /* This structure was added in revision X-4 */ #define FER$K_FCP_CDB_LENGTH 16 /* Calculate the number of quadwords in the array */ #define FER$K_FCP_CMND_QUADS 4 /* Create a quadword-aligned array of quadwords */ #define FER$K_SCSI_SNS_INFO_LENGTH 16 /* Calculate the number of quadwords in the array */ #define FER$K_FCP_RSP_QUADS 6 /* Create a quadword-aligned array of quadwords */ #ifdef __cplusplus /* Define structure prototypes */ struct _ucb; struct _scdt; #endif /* #ifdef __cplusplus */ #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 _fcp_event_record { /* -------------------- */ /* I/O Request Section */ /* -------------------- */ /* System time of request completion */ #pragma __nomember_alignment unsigned __int64 fer$q_systime; /* Restart sequence number */ unsigned int fer$l_fer_seqnum; /* Class driver UCB address from SCDT */ struct _ucb *fer$ps_class_ucb; /* Requested Byte Count */ unsigned int fer$l_requested_bcnt; /* IRP sequence number (identifies I/O request) */ unsigned int fer$l_seqnum; /* --------------------------- */ /* I/O Request Status Section */ /* --------------------------- */ /* KPB or fork thread restart (by FC-AD) status */ unsigned int fer$l_restart_status; /* FC-AD status mapped to an OpenVMS status - this will usually be the */ /* same as the RESTART_STATUS, but there are cases (at least one: when */ /* a request times out) when a KPB is restarted by the FC-AD with a */ /* special status which will differ from PORT_STATUS */ unsigned int fer$l_port_status; /* Additional data (if any) associated with the FC-AD status */ unsigned int fer$l_extended_status; /* VMS status returned by protocol driver */ unsigned int fer$l_protocol_status; /* Returned Byte Count */ unsigned int fer$l_returned_bcnt; /* -------------------- */ /* FCP Command Section */ /* -------------------- */ /* */ /* This array will be loaded with quadword copies. When an SDA */ /* extension references it for output it can copy the array */ /* address to an FCP_CMND structure and use FCP_CMND$ symbols */ /* */ /* Define language-specific symbols for the CDB length */ /* Define language-specific symbols for the number of quadwords */ char fer$b_fill_18_ [4]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif unsigned __int64 fer$q_fcp_cmnd_quad [4]; /* --------------------- */ /* FCP Response Section */ /* --------------------- */ /* */ /* This array will be loaded with quadword copies. When an SDA */ /* extension references it for output it can copy the array */ /* address to an FCP_RSP structure and use FCP_RSP$ symbols */ /* */ /* Define the number of bytes of sense data we want in this array */ /* Define language-specific symbols for sense info length */ /* Define language-specific symbols for the number of quadwords */ unsigned __int64 fer$q_fcp_rsp_quad [6]; /* SCSI Connection Descriptor Table address */ #pragma __nomember_alignment struct _scdt *fer$ps_scdt; /* FibreChannel Logical Address (FC-LA) */ int fer$l_fc_la; } FCP_EVENT_RECORD; /* Current FC_PROT version */ #define FCPROT$C_STRUCTURE_VERSION 1 /* Supported protocol count */ #define FCPROT$C_SUPPORTED_PROTOCOL_COUNT 3 /* Supported devices-per-protocol protocol count */ #define FCPROT$C_DEVICES_PER_PROTOCOL 26 /* FC protcol connection vectors */ #define FCPROT$C_LENGTH 40 #ifdef __cplusplus /* Define structure prototypes */ struct _fcprot_vectab; #endif /* #ifdef __cplusplus */ #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_prot { /* Pointer to next FCPROT */ #pragma __nomember_alignment struct _fc_prot *fcprot$ps_fcprot_flink; /* Pointer to previous FCPROT */ struct _fc_prot *fcprot$ps_fcprot_blink; /* Structure size */ unsigned short int fcprot$w_size; /* Structure type (DYN$C_MISC) */ unsigned char fcprot$b_type; /* Structure sub-type (DYN$C_FCPROT) */ unsigned char fcprot$b_subtype; /* Version of this structure */ unsigned int fcprot$l_structure_version; /* Protocol count */ unsigned __int64 fcprot$q_protocol_count; /* Pointers to protocol vector blocks */ struct _fcprot_vectab *fcprot$ps_protocols [3]; /****************************************** */ /* Define the length of the structure. */ /****************************************** */ /* Quadword align the length */ char fcprot$t_length_quad_align_fill [4]; /* FCPROT length */ } FC_PROT; /* FC protcol connection vectors */ #ifdef __cplusplus /* Define structure prototypes */ struct _fcprot_descrip; #endif /* #ifdef __cplusplus */ #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 _fcprot_vectab { /* Pointers to protocol descriptors */ #pragma __nomember_alignment struct _fcprot_descrip *fcprot_vectab$ps_descrip [26]; } FCPROT_VECTAB; /* FC protcol descriptors */ #ifdef __cplusplus /* Define structure prototypes */ struct _ucb; #endif /* #ifdef __cplusplus */ #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 _fcprot_descrip { /* Pointer to UCB of driver associated with protocol */ #pragma __nomember_alignment struct _ucb *fcprot_descrip$ps_ucb; /* Pointers to protocol vector */ int (*fcprot_descrip$ps_vector)(); } FCPROT_DESCRIP; #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 /* __FCPDEF_LOADED */