/**/ /***************************************************************************/ /** **/ /** © 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:40 by OpenVMS SDL EV3-3 */ /* Source: 01-AUG-2005 15:38:17 $1$DGA7274:[LIB_H.SRC]SSIDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $SSIDEF ***/ #ifndef __SSIDEF_LOADED #define __SSIDEF_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 /* */ /* System Service Intercept Control Block Definitions */ /* */ #define SSID$M_DOUBLE_MAP_FAILED 0x1 #define SSID$M_PROMOTE_COPIED 0x2 typedef struct _ssi_data { /* Definitions for flags in */ /* CTL$GQ_SSI_DATA */ __union { __int64 ssid$q_bits; __struct { unsigned ssid$v_double_map_failed : 1; /* Attempt to doublemap */ /* S2 promote area failed */ unsigned ssid$v_promote_copied : 1; /* Process has a private copy */ /* of the promote area */ unsigned ssid$v_fill_2_ : 6; } ssid$r_fill_1_; } ssid$r_fill_0_; } SSI_DATA; #if !defined(__VAXC) #define ssid$v_double_map_failed ssid$r_fill_0_.ssid$r_fill_1_.ssid$v_double_map_failed #define ssid$v_promote_copied ssid$r_fill_0_.ssid$r_fill_1_.ssid$v_promote_copied #endif /* #if !defined(__VAXC) */ #define SSI$M_CLOSEST 0x1 #define SSI$C_LENGTH 28 /* Length of SSI_BLOCK */ typedef struct _ssi_block { __union { struct _ssi_block *ssi$ps_flink; /* Forward link */ struct _ssi_block *ssi$ps_pre_next; /* Pointer to next pre-processing routine */ } ssi$r_flink_overlay; __union { struct _ssi_block *ssi$ps_blink; /* Backward link */ struct _ssi_block *ssi$ps_post_next; /* Pointer to next post-processing routine */ } ssi$r_blink_overlay; unsigned short int ssi$w_size; /* Size, in bytes */ unsigned char ssi$b_type; /* Structure type code for SSI_BLOCK */ unsigned char ssi$b_subtype; /* Structure subtype code */ unsigned int ssi$l_version; /* Version number */ __union { unsigned int ssi$l_flags; /* Flags longword */ __struct { unsigned ssi$v_closest : 1; /* Closest to system service */ unsigned ssi$v_fill_5_ : 7; } ssi$r_fill_4_; } ssi$r_fill_3_; void (*ssi$ps_pre_routine)(); /* Address of pre-processing routine */ void (*ssi$ps_post_routine)(); /* Address of post-processing routine */ } SSI_BLOCK; #if !defined(__VAXC) #define ssi$ps_flink ssi$r_flink_overlay.ssi$ps_flink #define ssi$ps_pre_next ssi$r_flink_overlay.ssi$ps_pre_next #define ssi$ps_blink ssi$r_blink_overlay.ssi$ps_blink #define ssi$ps_post_next ssi$r_blink_overlay.ssi$ps_post_next #define ssi$l_flags ssi$r_fill_3_.ssi$l_flags #define ssi$v_closest ssi$r_fill_3_.ssi$r_fill_4_.ssi$v_closest #endif /* #if !defined(__VAXC) */ /* */ /* Definition for System Service Intercept Specific Service Control Block */ /* */ #define SSISP$M_NOT_AVAIL 0x1 #define SSISP$C_LENGTH 48 /* Length of SSI_SPEC_BLOCK */ typedef struct _ssi_spec_block { struct _ssi_block *ssisp$ps_pre_next; /* Forward link */ int ssisp$l_pre_proc_count; /* Number of SSIs on list */ struct _ssi_block *ssisp$ps_post_next; /* Forward link */ int ssisp$l_post_proc_count; /* Number of SSIs on list */ unsigned int ssisp$o_original_bundle [4]; /* On I64, orig. bundle contents */ /* before replacement */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ int (*ssisp$pq_replacement)(); /* On I64, code entry of */ #else unsigned __int64 ssisp$pq_replacement; #endif /* replacement routine */ __union { unsigned int ssisp$l_flags; /* Service-specific flags longword */ __struct { unsigned ssisp$v_not_avail : 1; /* Service may not be intercepted: */ /* e.g., SYS$SRCHANDLER, etc. */ unsigned ssisp$v_fill_8_ : 7; } ssisp$r_fill_7_; } ssisp$r_fill_6_; int ssisp$l_reserved_1; /* Pad to integral number of quadwords */ } SSI_SPEC_BLOCK; #if !defined(__VAXC) #define ssisp$l_flags ssisp$r_fill_6_.ssisp$l_flags #define ssisp$v_not_avail ssisp$r_fill_6_.ssisp$r_fill_7_.ssisp$v_not_avail #endif /* #if !defined(__VAXC) */ /* */ /* Extensions to bound procedure descriptors for System Service Intercept */ /* */ typedef struct _ssi_pdsc { __int64 ssi_pdsc$q_fill_1; /* Quadword which contains flags */ __int64 ssi_pdsc$q_fill_2; /* Quadword which contains entry address */ __int64 ssi_pdsc$q_fill_3; /* Quadword which contains bound procedure value */ __union { __int64 ssi_pdsc$q_ss_ssadr; /* Address of system service in system space */ __struct { #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 int (*ssi_pdsc$ps_ss_ssadr)(); } ssi_pdsc$r_fill_10_; } ssi_pdsc$r_fill_9_; __union { __int64 ssi_pdsc$q_replacement_routine; /* Address of replacement routine */ __struct { int (*ssi_pdsc$ps_replacement_routine)(); } ssi_pdsc$r_fill_12_; } ssi_pdsc$r_fill_11_; } SSI_PDSC; #if !defined(__VAXC) #define ssi_pdsc$q_ss_ssadr ssi_pdsc$r_fill_9_.ssi_pdsc$q_ss_ssadr #define ssi_pdsc$ps_ss_ssadr ssi_pdsc$r_fill_9_.ssi_pdsc$r_fill_10_.ssi_pdsc$ps_ss_ssadr #define ssi_pdsc$q_replacement_routine ssi_pdsc$r_fill_11_.ssi_pdsc$q_replacement_routine #define ssi_pdsc$ps_replacement_routine ssi_pdsc$r_fill_11_.ssi_pdsc$r_fill_12_.ssi_pdsc$ps_replacement_routine #endif /* #if !defined(__VAXC) */ /* */ /* Function prototypes */ /* */ #define ssi$get_intercept_main SSI$GET_INTERCEPT_MAIN int ssi$get_intercept_main(void); #define ssi$declare_intercept SSI$DECLARE_INTERCEPT #ifdef __cplusplus /* Define structure prototypes */ struct _ssi_block; #endif /* #ifdef __cplusplus */ int ssi$declare_intercept(__unknown_params); #define ssi$cancel_intercept SSI$CANCEL_INTERCEPT #ifdef __cplusplus /* Define structure prototypes */ struct _ssi_block; #endif /* #ifdef __cplusplus */ int ssi$cancel_intercept(__unknown_params); #define ssi$declare_replacement SSI$DECLARE_REPLACEMENT int ssi$declare_replacement(__unknown_params); #define ssi$cancel_replacement SSI$CANCEL_REPLACEMENT int ssi$cancel_replacement(__unknown_params); #define ssi$declare_spec_intercept SSI$DECLARE_SPEC_INTERCEPT #ifdef __cplusplus /* Define structure prototypes */ struct _ssi_pdsc; struct _ssi_block; #endif /* #ifdef __cplusplus */ int ssi$declare_spec_intercept(__unknown_params); #define ssi$cancel_spec_intercept SSI$CANCEL_SPEC_INTERCEPT #ifdef __cplusplus /* Define structure prototypes */ struct _ssi_pdsc; struct _ssi_block; #endif /* #ifdef __cplusplus */ int ssi$cancel_spec_intercept(__unknown_params); /* */ /* Define a constant to be placed in the SSI$L_VERSION field of the SSI block. */ /* SYS$SSISHR will verify that the contents of the SSI$L_VERSION field match */ /* the constant below. If for any reason a change in the SSI interface occurs */ /* (as it did because of the 64-Bit Project) the version number must change, as */ /* must the name of this constant. A change of the symbol name enables users */ /* of SSI to realize at compile-time that SSI has changed. If the value */ /* of the constant changed without an accompanying symbol name change, SSI */ /* cannot determine whether its callers are aware of an SSI interface change. */ /* */ #define SSI$C_VERSION_QUAD_LIST 65536 #define SSI$K_VERSION_QUAD_LIST 65536 #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 /* __SSIDEF_LOADED */