/**/ /***************************************************************************/ /** **/ /** © 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:36 by OpenVMS SDL EV3-3 */ /* Source: 30-MAR-2005 12:59:24 $1$DGA7274:[LIB_H.SRC]IMCBDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $IMCBDEF ***/ #ifndef __IMCBDEF_LOADED #define __IMCBDEF_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 #define IMCB$K_MAIN_PROGRAM 1 /* Object of RUN command */ #define IMCB$K_MERGED_IMAGE 2 /* Additional image mapped */ #define IMCB$K_GLOBAL_IMAGE_SECTION 3 /* Image described by global ISD */ #define IMCB$M_EXPREG 0x1 #define IMCB$M_SHAREABLE 0x2 #define IMCB$M_OPEN_FOR_WRITE 0x4 #define IMCB$M_RES_HEADER 0x8 #define IMCB$M_LOAD_IMAGE 0x10 #define IMCB$M_INITIALIZE 0x20 #define IMCB$M_DONE 0x40 #define IMCB$M_SYS_STB 0x80 #define IMCB$M_IN_CIRCULARITY 0x100 #define IMCB$M_MAPPED 0x200 #define IMCB$M_PROTECTED 0x400 #define IMCB$M_PARENT_PROT 0x800 #define IMCB$M_CMOD_VECTOR_MAPPED 0x1000 #define IMCB$M_XLATED 0x2000 #define IMCB$M_PROTSECT 0x4000 #define IMCB$M_NOTPROTSECT 0x8000 #define IMCB$M_DISCONTIGUOUS 0x10000 #define IMCB$M_FORKABLE 0x20000 #define IMCB$M_COMPRESS_DATASEC 0x40000 #define IMCB$M_VERSION_SAFE 0x80000 #define IMCB$M_PRIMARY_FIX 0x100000 #define IMCB$M_DATA_RESIDENT 0x200000 #define IMCB$M_SHARE_LINK 0x400000 #define IMCB$M_AUTOACT 0x800000 #define IMCB$M_MKTHREADS 0x1000000 #define IMCB$M_UPCALLS 0x2000000 #define IMCB$M_SYSTEM_IMAGE 0x4000000 #define IMCB$M_PERM 0x8000000 #define IMCB$M_RELOCATE 0x10000000 #define IMCB$M_MATCH_CONTROL 0x7 #define IMCB$M_MINOR_ID 0xFFFFFF #define IMCB$M_MAJOR_ID 0xFF000000 #define IMCB$C_LENGTH 292 /* Length of IMCB */ #define IMCB$K_LENGTH 292 /* Length of IMCB */ #define IMCB$S_IMCB$DEF 292 /* Old size name - synonym */ #ifdef __cplusplus /* Define structure prototypes */ struct _eihd; struct _kfe; struct _eiaf; struct _plv; struct _kferes; struct _ldrimg; #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 _imcb { #pragma __nomember_alignment struct _imcb *imcb$l_flink; /* Forward link in list */ struct _imcb *imcb$l_blink; /* Backward link in list */ unsigned short int imcb$w_size; /* Size of IMCB in bytes */ unsigned char imcb$b_type; /* Structure type for IMCB (DYN$C_PGD) */ unsigned char imcb$b_subtype; /* Structure subtype for IMCB (DYN$C_IMCB) */ unsigned char imcb$b_access_mode; /* Access mode of image */ unsigned char imcb$b_act_code; /* Activation code */ unsigned short int imcb$w_chan; /* Channel on which image file is opened */ __union { unsigned int imcb$l_flags; /* Name attributes */ __struct { unsigned imcb$v_expreg : 1; /* Image mapped at end of address space */ unsigned imcb$v_shareable : 1; /* Image installed /SHAREABLE */ unsigned imcb$v_open_for_write : 1; /* Image will be opened for write */ unsigned imcb$v_res_header : 1; /* Image header already decoded */ unsigned imcb$v_load_image : 1; /* Load image from sequential device */ unsigned imcb$v_initialize : 1; /* Image contains initialization code */ unsigned imcb$v_done : 1; /* Image is completely activated */ unsigned imcb$v_sys_stb : 1; /* Image is linked against SYS.STB */ unsigned imcb$v_in_circularity : 1; /* Image is involved in an image circularity */ unsigned imcb$v_mapped : 1; /* Image is mapped in address space */ unsigned imcb$v_protected : 1; /* Image installed protected */ unsigned imcb$v_parent_prot : 1; /* Parent image installed protected */ unsigned imcb$v_cmod_vector_mapped : 1; /* Change mode vectors already mapped */ unsigned imcb$v_xlated : 1; /* Image is a translated VAX image */ unsigned imcb$v_protsect : 1; /* Image contains some protected sections */ unsigned imcb$v_notprotsect : 1; /* Image does not contain some protected sections */ unsigned imcb$v_discontiguous : 1; /* Some image sections are resident */ unsigned imcb$v_forkable : 1; /* Protected image allows POSIX fork() */ unsigned imcb$v_compress_datasec : 1; /* Data sections will be laid out one after another */ /* Flag is only meaningful if DISCONTIGUOUS bit is set */ unsigned imcb$v_version_safe : 1; /* Image is exempt from system version checks */ unsigned imcb$v_primary_fix : 1; /* Image has had primary fixups performed on it */ unsigned imcb$v_data_resident : 1; /* Image has it's read-only data sections placed in */ /* the data granularity hint region. */ unsigned imcb$v_share_link : 1; /* Image was installed with shareable linkage */ unsigned imcb$v_autoact : 1; /* Image is being automatically activated (currently */ /* this is just SYS$SSISHR). Certain errors in */ /* activation can, and should, be ignored. */ unsigned imcb$v_mkthreads : 1; /* Multiple kernel threads enabled */ unsigned imcb$v_upcalls : 1; /* Upcalls enabled */ unsigned imcb$v_system_image : 1; /* image is SYS$BASE_IMAGE or SYS$PUBLIC_VECTORS */ unsigned imcb$v_perm : 1; /* image is permanent. */ unsigned imcb$v_relocate : 1; /* image relocations [to be/have been] applied */ unsigned imcb$v_fill_22_ : 3; } imcb$r_fill_1_; } imcb$r_fill_0_; /* The image name is stored as a counted ASCII string. */ char imcb$t_image_name [40]; /* Name string (counted ASCII) */ unsigned int imcb$l_symbol_vector_size; /* Entries in symbol vector. */ __union { unsigned __int64 imcb$q_ident; __struct { __union { unsigned int imcb$l_match_control; __struct { unsigned imcb$v_match_control : 3; unsigned imcb$v_fill_23_ : 5; } imcb$r_fill_5_; } imcb$r_fill_4_; __union { unsigned int imcb$l_version; __struct { unsigned imcb$v_minor_id : 24; unsigned imcb$v_major_id : 8; } imcb$r_fill_7_; } imcb$r_fill_6_; } imcb$r_fill_3_; } imcb$r_fill_2_; __union { unsigned __int64 imcb$q_address_range; __struct { void *imcb$l_starting_address; void *imcb$l_end_address; } imcb$r_fill_9_; } imcb$r_fill_8_; struct _eihd *imcb$l_ihd; /* Address of IHD for image */ struct _kfe *imcb$l_kfe; /* Address of KFE for image */ void *imcb$l_context; /* Address of context block */ void *imcb$l_base_address; /* Base address at which image is mapped */ void (*imcb$l_initialize)(); /* Address of initialization code */ unsigned int imcb$l_active_sons; /* Count of not yet mapped son images */ /* Valid only during activation */ __union { __int64 imcb$q_fixup_vector_address; /* Address of priv fixup vec */ __struct { struct _eiaf *imcb$ps_fixup_vector_address; } imcb$r_fill_11_; } imcb$r_fill_10_; __union { __int64 imcb$q_symbol_vector_address; /* Address of the symbol vector */ __struct { void *imcb$ps_symbol_vector_address; } imcb$r_fill_13_; } imcb$r_fill_12_; __union { __int64 imcb$q_plv_address; /* Address of PLVDEF for image */ __struct { struct _plv *imcb$ps_plv_address; } imcb$r_fill_15_; } imcb$r_fill_14_; __union { __int64 imcb$q_cmod_kernel_address; /* Address of kernel CMOD routines */ __struct { void *imcb$ps_cmod_kernel_address; } imcb$r_fill_17_; } imcb$r_fill_16_; __union { __int64 imcb$q_cmod_exec_address; /* Address of exec CMOD routines */ __struct { void *imcb$ps_cmod_exec_address; } imcb$r_fill_19_; } imcb$r_fill_18_; __union { __int64 imcb$q_ssi_plv; /* Address of system service intercept PLV */ __struct { struct _plv *imcb$ps_ssi_plv; } imcb$r_fill_21_; } imcb$r_fill_20_; struct _kferes *imcb$l_kferes_ptr; /* Pointer to resident section description */ /* The global section name of a shareable image is stored as a counted ASCII string. */ char imcb$t_log_image_name [40]; /* Name string (counted ASCII) */ char imcb$t_dvi [16]; /* device id */ unsigned short int imcb$w_fid [3]; /* file id */ char imcb$b_risig [32]; /* image signiture */ short int imcb$w_fill1; /* fill for long alignment */ struct _kferes *imcb$l_kferes64_ptr; /* Pointer to 64-bit resident section descs */ #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 *imcb$pq_starting_address_64; /* Start addr of 64-bit image VA */ #else unsigned __int64 imcb$pq_starting_address_64; #endif #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 *imcb$pq_end_address_64; /* End addr of 64-bit image VA */ #else unsigned __int64 imcb$pq_end_address_64; #endif unsigned __int64 imcb$q_linktime; /* link time */ #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 struct _ldrimg *imcb$l_ldrimg; /* pointer to loaded image structure */ struct _imcb *imcb$l_prot_image_flink; /* Forward link in list of protected images */ int imcb$l_lkwset_count; /* Count of times image has been locked in WS */ char imcb$b_fill_24_ [4]; } IMCB; #if !defined(__VAXC) #define imcb$l_flags imcb$r_fill_0_.imcb$l_flags #define imcb$v_expreg imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_expreg #define imcb$v_shareable imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_shareable #define imcb$v_open_for_write imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_open_for_write #define imcb$v_res_header imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_res_header #define imcb$v_load_image imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_load_image #define imcb$v_initialize imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_initialize #define imcb$v_done imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_done #define imcb$v_sys_stb imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_sys_stb #define imcb$v_in_circularity imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_in_circularity #define imcb$v_mapped imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_mapped #define imcb$v_protected imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_protected #define imcb$v_parent_prot imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_parent_prot #define imcb$v_cmod_vector_mapped imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_cmod_vector_mapped #define imcb$v_xlated imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_xlated #define imcb$v_protsect imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_protsect #define imcb$v_notprotsect imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_notprotsect #define imcb$v_discontiguous imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_discontiguous #define imcb$v_forkable imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_forkable #define imcb$v_compress_datasec imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_compress_datasec #define imcb$v_version_safe imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_version_safe #define imcb$v_primary_fix imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_primary_fix #define imcb$v_data_resident imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_data_resident #define imcb$v_share_link imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_share_link #define imcb$v_autoact imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_autoact #define imcb$v_mkthreads imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_mkthreads #define imcb$v_upcalls imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_upcalls #define imcb$v_system_image imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_system_image #define imcb$v_perm imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_perm #define imcb$v_relocate imcb$r_fill_0_.imcb$r_fill_1_.imcb$v_relocate #define imcb$q_ident imcb$r_fill_2_.imcb$q_ident #define imcb$l_match_control imcb$r_fill_2_.imcb$r_fill_3_.imcb$r_fill_4_.imcb$l_match_control #define imcb$v_match_control imcb$r_fill_2_.imcb$r_fill_3_.imcb$r_fill_4_.imcb$r_fill_5_.imcb$v_match_control #define imcb$l_version imcb$r_fill_2_.imcb$r_fill_3_.imcb$r_fill_6_.imcb$l_version #define imcb$v_minor_id imcb$r_fill_2_.imcb$r_fill_3_.imcb$r_fill_6_.imcb$r_fill_7_.imcb$v_minor_id #define imcb$v_major_id imcb$r_fill_2_.imcb$r_fill_3_.imcb$r_fill_6_.imcb$r_fill_7_.imcb$v_major_id #define imcb$q_address_range imcb$r_fill_8_.imcb$q_address_range #define imcb$l_starting_address imcb$r_fill_8_.imcb$r_fill_9_.imcb$l_starting_address #define imcb$l_end_address imcb$r_fill_8_.imcb$r_fill_9_.imcb$l_end_address #define imcb$ps_fixup_vector_address imcb$r_fill_10_.imcb$r_fill_11_.imcb$ps_fixup_vector_address #define imcb$ps_symbol_vector_address imcb$r_fill_12_.imcb$r_fill_13_.imcb$ps_symbol_vector_address #define imcb$ps_plv_address imcb$r_fill_14_.imcb$r_fill_15_.imcb$ps_plv_address #define imcb$ps_cmod_kernel_address imcb$r_fill_16_.imcb$r_fill_17_.imcb$ps_cmod_kernel_address #define imcb$ps_cmod_exec_address imcb$r_fill_18_.imcb$r_fill_19_.imcb$ps_cmod_exec_address #define imcb$ps_ssi_plv imcb$r_fill_20_.imcb$r_fill_21_.imcb$ps_ssi_plv #endif /* #if !defined(__VAXC) */ /* */ /* Define the layout of the page header for locked-down image activator */ /* pool within P1 pool */ /* */ #define IMGACT_POOL$K_LENGTH 16 /* Length of IMGACT_POOL */ #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 _imgact_pool { #pragma __nomember_alignment struct _imgact_pool *imgact_pool$l_flink; /* Forward link in list */ struct _imgact_pool *imgact_pool$l_blink; /* Backward link in list */ unsigned short int imgact_pool$w_size; /* Size of IMGACT_POOL in bytes (multiple of pages) */ unsigned char imgact_pool$b_type; /* Structure type for IMGACT_POOL (DYN$C_PGD) */ unsigned char imgact_pool$b_subtype; /* Structure subtype for IMGACT_POOL (DYN$C_IMGACT_POOL) */ void *imgact_pool$l_free_list; /* Header for free list (first IMGACT_POOL only) */ } IMGACT_POOL; #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 /* __IMCBDEF_LOADED */