/***************************************************************************/ /** **/ /** 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:07:53 by OpenVMS SDL V3.7 */ /* Source: 27-APR-2022 11:23:39 $1$DGA8345:[LIB_H.SRC]LMBDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $LMBDEF ***/ #ifndef __LMBDEF_LOADED #define __LMBDEF_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 /*+ */ /* LMB - Logical Memory Block */ /* */ /* Logical Memory Block definitions (for subsetted crash dumps) */ /* Layout of each Logical Memory Block and accompanying hole descriptor. */ /* Logical Memory Blocks are portions of selective memory dumps. "Holes" */ /* refer to areas of invalid or inaccessible virtual address space at the */ /* time of the dump. */ /*- */ #define LMB$C_SYSTEM_PTK 0 /* 0 PT Space (Kernel mode) */ #define LMB$C_SYSTEM_PTE 1 /* 1 PT Space (Executive mode) */ #define LMB$C_SYSTEM_PTS 2 /* 2 PT Space (Supervisor mode) */ #define LMB$C_SYSTEM_PTU 3 /* 3 PT Space (User mode) */ #define LMB$C_S0S1 4 /* 4 S0/S1 Space (excluding SPT window) */ #define LMB$C_S2_EXEC 5 /* 5 S2 Space: NPP, errlog buffers, execlets */ #define LMB$C_S2_PFNDB 6 /* 6 S2 Space: PFN database */ #define LMB$C_S2_WSL_GPT 7 /* 7 S2 Space: WSL & GPT */ #define LMB$C_S2_LCKMGR_XFC 8 /* 8 S2 Space: Locks, Resources, XFC metadata */ #define LMB$C_KEY_PROCESS_PTK 9 /* 9 Process page tables (Kernel mode) */ #define LMB$C_KEY_PROCESS_PTE 10 /* 10 Process page tables (Executive mode) */ #define LMB$C_KEY_PROCESS_PTS 11 /* 11 Process page tables (Supervisor mode) */ #define LMB$C_KEY_PROCESS_PTU 12 /* 12 Process page tables (User mode) */ #define LMB$C_KEY_PROCESS_MEM 13 /* 13 Process memory (current/swapper/etc., site- or VSI-defined) */ #define LMB$C_KEY_GBL 14 /* 14 Global Pages (associated with key processes) */ #define LMB$C_OTHER_PROCESS_PTK 15 /* 15 Process page tables (Kernel mode) */ #define LMB$C_OTHER_PROCESS_PTE 16 /* 16 Process page tables (Executive mode) */ #define LMB$C_OTHER_PROCESS_PTS 17 /* 17 Process page tables (Supervisor mode) */ #define LMB$C_OTHER_PROCESS_PTU 18 /* 18 Process page tables (User mode) */ #define LMB$C_OTHER_PROCESS_MEM 19 /* 19 Process memory (all other processes) */ #define LMB$C_OTHER_GBL 20 /* 20 Global Pages (not associated with key processes) */ /* Make changes and additions before this line */ #define LMB$C_NUMTYPES 21 /* 21 The number of LMB types */ #define LMB$C_SDMP_PRCMSK 1031680 /* Bitmask of LMBs for processes */ /* (9-13, 15-19) */ #define LMB$C_SDMP_PTMSK 499215 /* Bitmask of LMBs for page tables */ /* (0-3, 9-12, 15-18) */ #define LMB$C_PROCESS_SPACE 256 /* 256 Entire process space from zero to the gap */ #define LMB$C_PPT_KERNEL 257 /* 257 Process half of kernel mode page table */ #define LMB$C_PPT_EXEC 258 /* 258 Process half of executive mode page table */ #define LMB$C_PPT_SUPER 259 /* 259 Process half of supervisor mode page table */ #define LMB$C_PPT_USER 260 /* 260 Process half of user mode page table */ #define LMB$C_SYSTEM_SPACE 261 /* 261 Process-pertinent data in system space */ #define LMB$C_PDMP_PRCMSK 31 /* Bitmask of LMBs for processes */ /* (256-260) */ #define LMB$C_PDMP_PTMSK 30 /* Bitmask of LMBs for page tables */ /* (257-260) */ #define LMB_AXP_I64$C_SHARED_MEMORY -2 /* -2 Galaxy shared memory (complete) */ #define LMB_AXP_I64$C_SHARED_REGION -1 /* -1 Galaxy shared memory region (single) */ #define LMB_AXP_I64$C_PT 0 /* 0 PT Space */ #define LMB_AXP_I64$C_S0S1 1 /* 1 S0/S1 Space (excluding SPT window) */ #define LMB_AXP_I64$C_S2 2 /* 2 S2 Space (includes PFN database, GPT) */ #define LMB_AXP_I64$C_REPLICATED_SYS 3 /* 3 Replicated system space (Wildfires etc) */ #define LMB_AXP_I64$C_MMAPS 4 /* 4 Galaxy memory map pages */ #define LMB_AXP_I64$C_KEY_PROCESS_PT 5 /* 5 Process page tables ... */ #define LMB_AXP_I64$C_KEY_PROCESS_MEM 6 /* 6 ... and memory (current/swapper/etc., site- or VSI-defined) */ #define LMB_AXP_I64$C_KEY_GBL 7 /* 7 Global Pages (associated with key processes) */ #define LMB_AXP_I64$C_OTHER_PROCESS_PT 8 /* 8 Process page tables ... */ #define LMB_AXP_I64$C_OTHER_PROCESS_MEM 9 /* 9 ... and memory (all other processes) */ #define LMB_AXP_I64$C_OTHER_GBL 10 /* 10 Global Pages (not associated with key processes) */ /* Make changes and additions before this line */ #define LMB_AXP_I64$C_NUMTYPES 11 /* 11 The number of LMB types */ #define LMB_AXP_I64$C_SDMP_PRCMSK 3456 /* Bitmask of LMBs for processes */ /* (5-6, 8-9, all offset by 2) */ #define LMB_AXP_I64$C_PROCESS_SPACE 256 /* 256 Entire process space from zero to the L1PT page */ #define LMB_AXP_I64$C_SYSTEM_SPACE 257 /* 257 Process-pertinent data in system space */ #define LMB_AXP_I64$C_PDMP_PRCMSK 1 /* Bitmask of LMBs for processes */ /* (256) */ #define LMB_X86$C_SYSTEM_PTK 0 /* 0 PT Space (Kernel mode) */ #define LMB_X86$C_SYSTEM_PTE 1 /* 1 PT Space (Executive mode) */ #define LMB_X86$C_SYSTEM_PTS 2 /* 2 PT Space (Supervisor mode) */ #define LMB_X86$C_SYSTEM_PTU 3 /* 3 PT Space (User mode) */ #define LMB_X86$C_S0S1 4 /* 4 S0/S1 Space (excluding SPT window) */ #define LMB_X86$C_S2_EXEC 5 /* 5 S2 Space: NPP, errlog buffers, execlets */ #define LMB_X86$C_S2_PFNDB 6 /* 6 S2 Space: PFN database */ #define LMB_X86$C_S2_WSL_GPT 7 /* 7 S2 Space: WSL & GPT */ #define LMB_X86$C_S2_LCKMGR_XFC 8 /* 8 S2 Space: Locks, Resources, XFC metadata */ #define LMB_X86$C_KEY_PROCESS_PTK 9 /* 9 Process page tables (Kernel mode) */ #define LMB_X86$C_KEY_PROCESS_PTE 10 /* 10 Process page tables (Executive mode) */ #define LMB_X86$C_KEY_PROCESS_PTS 11 /* 11 Process page tables (Supervisor mode) */ #define LMB_X86$C_KEY_PROCESS_PTU 12 /* 12 Process page tables (User mode) */ #define LMB_X86$C_KEY_PROCESS_MEM 13 /* 13 Process memory (current/swapper/etc., site- or VSI-defined) */ #define LMB_X86$C_KEY_GBL 14 /* 14 Global Pages (associated with key processes) */ #define LMB_X86$C_OTHER_PROCESS_PTK 15 /* 15 Process page tables (Kernel mode) */ #define LMB_X86$C_OTHER_PROCESS_PTE 16 /* 16 Process page tables (Executive mode) */ #define LMB_X86$C_OTHER_PROCESS_PTS 17 /* 17 Process page tables (Supervisor mode) */ #define LMB_X86$C_OTHER_PROCESS_PTU 18 /* 18 Process page tables (User mode) */ #define LMB_X86$C_OTHER_PROCESS_MEM 19 /* 19 Process memory (all other processes) */ #define LMB_X86$C_OTHER_GBL 20 /* 20 Global Pages (not associated with key processes) */ /* Make changes and additions before this line */ #define LMB_X86$C_NUMTYPES 21 /* 21 The number of LMB types */ #define LMB_X86$C_SDMP_PRCMSK 1031680 /* Bitmask of LMBs for processes */ /* (9-13, 15-19) */ #define LMB_X86$C_SDMP_PTMSK 499215 /* Bitmask of LMBs for page tables */ /* (0-3, 9-12, 15-18) */ #define LMB_X86$C_PROCESS_SPACE 256 /* 256 Entire process space from zero to the gap */ #define LMB_X86$C_PPT_KERNEL 257 /* 257 Process half of kernel mode page table */ #define LMB_X86$C_PPT_EXEC 258 /* 258 Process half of executive mode page table */ #define LMB_X86$C_PPT_SUPER 259 /* 259 Process half of supervisor mode page table */ #define LMB_X86$C_PPT_USER 260 /* 260 Process half of user mode page table */ #define LMB_X86$C_SYSTEM_SPACE 261 /* 261 Process-pertinent data in system space */ #define LMB_X86$C_PDMP_PRCMSK 31 /* Bitmask of LMBs for processes */ /* (256-260) */ #define LMB_X86$C_PDMP_PTMSK 30 /* Bitmask of LMBs for page tables */ /* (257-260) */ #define LMB$M_INCOMPLETE 0x1 #define LMB$M_KEYPROC_LMB 0x2 #define LMB$M_REMPROC_LMB 0x4 #define LMB$M_GLOBAL_LMB 0x8 #define LMB$M_EMBED_HOLES 0x10 #define LMB$M_EMBED_MAP 0x20 #define LMB$K_LENGTH 136 /* Logical mem block length */ #define LMB$C_LENGTH 136 /* Logical mem block length */ #define LMB$S_LMBDEF 136 /* Old size name - synonym */ #ifdef __cplusplus /* Define structure prototypes */ struct _phd; struct _pcb; #endif /* #ifdef __cplusplus */ typedef struct _lmb { short int lmb$w_type; /* Type of LMB */ /* X86_64 */ /* */ /* LMB types list #3: The system dump list for X86_64 */ /* */ /* LMB flavors */ /* */ /* LMB types list #4: The process dump list for X86_64 */ /* */ /* LMB flavors for process dumps */ /* */ /* This variant of the list exists so that SHOW DUMP can work on Alpha/IA64 system dumps. */ /* The contents must be identical to list #1 above. */ /* */ /* LMB flavors for Alpha & IA64 */ /* */ /* This variant of the list exists so that SHOW DUMP can work on Alpha/IA64 process dumps. */ /* The contents must be identical to list #2 above. */ /* */ /* LMB flavors for process dumps */ /* */ /* This variant of the list exists so that SHOW DUMP can work on X86 system dumps. */ /* The contents must be identical to list #3 above. */ /* */ /* LMB flavors */ /* */ /* This variant of the list exists so that SHOW DUMP can work on X86 process dumps. */ /* The contents must be identical to list #4 above. */ /* */ /* LMB flavors for process dumps */ __union { __struct { unsigned short int lmb$w_flags; /* Flags for this LMB */ } lmb$r_lmb_fields; __struct { unsigned lmb$v_incomplete : 1; /* LMB not completely written */ unsigned lmb$v_keyproc_lmb : 1; /* A key process LMB (x86 interleaved dumps only) */ unsigned lmb$v_remproc_lmb : 1; /* A non-key process LMB (x86 interleaved dumps only) */ unsigned lmb$v_global_lmb : 1; /* A global pages LMB (x86 interleaved dumps only) */ unsigned lmb$v_embed_holes : 1; /* Hole table is embedded in the LMB header (x86 interleaved dumps only) */ unsigned lmb$v_embed_map : 1; /* Compression map is embedded in the LMB header (x86 interleaved dumps only) */ unsigned lmb$v_fill_0_ : 2; } lmb$r_lmb_bits; } lmb$r_lmb_overlay; __union { __struct { int lmb$l_act_length; /* LMB data actual length (blocks) (not used for interleaved dumps) */ int lmb$l_nocomp_length; /* as ACT_LENGTH without compression (not used for interleaved dumps) */ } lmb$r_lmb_8; __struct { struct _phd *lmb$l_phdadr; /* SVA of this process's PHD */ int lmb$l_spare_1; } lmb$r_lmb_9; } lmb$r_lmb_7; __union { unsigned short int lmb$w_hole_tbl; /* Relative VBN in dump of start of the table describing the holes in the */ /* virtual address space. In an interleaved dump, nonzero value is the */ /* offset in bytes to the hole table within the LMB header block. */ unsigned short int lmb$w_pmap_tbl; /* Just another name for the same relative VBN in dump with */ /* shared memory dumps. */ } lmb$r_lmb_1; unsigned short int lmb$w_cmap_tbl; /* In an interleaved dump, nonzero value is the offset in bytes to the */ /* compression map within the LMB header block */ __union { unsigned int lmb$l_total_holes; /* Count of holes in LMB */ unsigned int lmb$l_total_pmaps; /* count of PMAPs (fragments) in shared memory LMB */ } lmb$r_lmb_2; __union { struct _pcb *lmb$l_pcbadr; /* SVA of this process's PCB */ unsigned int lmb$l_rad; /* RAD for this LMB of replicated system space */ } lmb$r_lmb_3; unsigned __int64 lmb$q_time_check; /* Ones-complement of EMB$Q_CR_TIME */ char lmb$t_process_name [16]; /* Process name (only for TYPE=PROCESS) */ __union { __struct { #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 *lmb$pq_start_va; /* Start of range of addresses searched */ #else unsigned __int64 lmb$pq_start_va; #endif /* for holes by BUGCHECK */ #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 *lmb$pq_end_va; /* End of range of addresses searched */ #else unsigned __int64 lmb$pq_end_va; #endif /* for holes by BUGCHECK */ } lmb$r_lmb_5; __struct { unsigned __int64 lmb$q_start_offset; /* Start of range of addresses dumped */ /* by DUMP_SHARED_MEMORY */ unsigned __int64 lmb$q_end_offset; /* End of range of addresses dumped */ /* by DUMP_SHARED_MEMORY */ } lmb$r_lmb_6; } lmb$r_lmb_4; char lmb$t_region_tag [8]; /* No GLX$ symbols for X86, just leave a stub for SDA */ /* */ /* Use the reclaimed space here for some interleaved dumps cells. 56 bytes available. */ /* */ __int64 lmb$q_act_length; /* LMB data actual length (blocks) */ __int64 lmb$q_nocomp_length; /* as ACT_LENGTH without compression */ unsigned __int64 lmb$q_holetbl_vbn; /* Start VBN of the LMB's hole table, zero if embedded in header */ unsigned __int64 lmb$q_compmap_vbn; /* Start VBN of the LMB's compression map, zero if embedded in header */ unsigned int lmb$l_holetbl_bytes; /* Bytes used by hole table (even if appended to header) */ unsigned int lmb$l_compmap_bytes; /* Bytes used for the compression map if embedded in header (otherwise zero) */ unsigned int lmb$l_compmap_blocks; /* Blocks used for the compression map, zero if embedded in header */ unsigned int lmb$l_compmap_entries; /* Count of compression map entries for LMB (embedded or not) */ unsigned int lmb$l_slice; /* 1-based slice number for a sliced LMB (e.g. S2_PFNDB) */ unsigned short int lmb$w_scan_actor; /* Actor used to do page table scan */ unsigned short int lmb$w_dump_actor; /* Actor used to do memory dump */ unsigned int lmb$l_cmap_start; /* Offset into compression map of first entry for this LMB (interleaved=MBZ) */ unsigned int lmb$l_cmap_count; /* Count of compression map entries for this LMB (interleaved=MBZ) */ char lmb$t_expansion_space [376]; /* Space available for hole table and/or compression map */ } LMB; #if !defined(__VAXC) #define lmb$w_flags lmb$r_lmb_overlay.lmb$r_lmb_fields.lmb$w_flags #define lmb$v_incomplete lmb$r_lmb_overlay.lmb$r_lmb_bits.lmb$v_incomplete #define lmb$v_keyproc_lmb lmb$r_lmb_overlay.lmb$r_lmb_bits.lmb$v_keyproc_lmb #define lmb$v_remproc_lmb lmb$r_lmb_overlay.lmb$r_lmb_bits.lmb$v_remproc_lmb #define lmb$v_global_lmb lmb$r_lmb_overlay.lmb$r_lmb_bits.lmb$v_global_lmb #define lmb$v_embed_holes lmb$r_lmb_overlay.lmb$r_lmb_bits.lmb$v_embed_holes #define lmb$v_embed_map lmb$r_lmb_overlay.lmb$r_lmb_bits.lmb$v_embed_map #define lmb$l_act_length lmb$r_lmb_7.lmb$r_lmb_8.lmb$l_act_length #define lmb$l_nocomp_length lmb$r_lmb_7.lmb$r_lmb_8.lmb$l_nocomp_length #define lmb$l_phdadr lmb$r_lmb_7.lmb$r_lmb_9.lmb$l_phdadr #define lmb$w_hole_tbl lmb$r_lmb_1.lmb$w_hole_tbl #define lmb$w_pmap_tbl lmb$r_lmb_1.lmb$w_pmap_tbl #define lmb$l_total_holes lmb$r_lmb_2.lmb$l_total_holes #define lmb$l_total_pmaps lmb$r_lmb_2.lmb$l_total_pmaps #define lmb$l_pcbadr lmb$r_lmb_3.lmb$l_pcbadr #define lmb$l_rad lmb$r_lmb_3.lmb$l_rad #define lmb$pq_start_va lmb$r_lmb_4.lmb$r_lmb_5.lmb$pq_start_va #define lmb$pq_end_va lmb$r_lmb_4.lmb$r_lmb_5.lmb$pq_end_va #define lmb$q_start_offset lmb$r_lmb_4.lmb$r_lmb_6.lmb$q_start_offset #define lmb$q_end_offset lmb$r_lmb_4.lmb$r_lmb_6.lmb$q_end_offset #endif /* #if !defined(__VAXC) */ #define LMB$K_HOLE_LENGTH 16 #define LMB$C_HOLE_LENGTH 16 /* Size of each hole table entry. */ typedef struct _lmb_hole { #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 *lmb$pq_hole_start_va; /* Starting VA for this hole */ #else unsigned __int64 lmb$pq_hole_start_va; #endif unsigned __int64 lmb$q_hole_total_pages; /* Running total of pages of holes */ /* up to the starting VA of this hole */ /* Offset to get to the next hole */ /* table entry. */ } LMB_HOLE; #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __save /* Save current pointer size */ #pragma __required_pointer_size __long /* Pointers are 64-bit */ typedef struct _lmb_hole * LMB_HOLE_PQ; /* Pointer to an LMB hole structure */ #pragma __required_pointer_size __restore /* Return to previous pointer size */ #else typedef unsigned __int64 LMB_HOLE_PQ; #endif /* __INITIAL_POINTER_SIZE */ #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 /* __LMBDEF_LOADED */