/***************************************************************************/ /** **/ /** 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:52 by OpenVMS SDL V3.7 */ /* Source: 29-JUN-2022 19:45:28 $1$DGA8345:[LIB_H.SRC]DMPDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $DMPDEF ***/ #ifndef __DMPDEF_LOADED #define __DMPDEF_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 #include /* */ /* The invocation context block is defined in STARLET, and may materialize */ /* as a typedef or as a struct, depending on whether or not the user of this */ /* module has defined __NEW_STARLET. However, the DMP_IMGDMP_ICB structure */ /* in which it is embedded is declared here as a typedef, meaning that SDL */ /* will generate a reference to the typedef name INVO_CONTEXT_BLK. If */ /* __NEW_STARLET is not enabled, we define the missing INVO_CONTEXT_BLK */ /* to be the equivalent struct reference. */ /* */ #include #ifndef __NEW_STARLET typedef struct invo_context_blk INVO_CONTEXT_BLK; #endif /* */ /* LAYOUT OF THE HEADER BLOCK OF THE SYSTEM DUMP FILE */ /* (WHICH IS THE FIRST TWO DISK BLOCKS OF SYS$SYSTEM:SYSDUMP.DMP) */ /* */ #define DMP$M_OLDDUMP 0x1 #define DMP$M_EMPTY 0x2 #define DMP$M_HDRBLK 0x4 #define DMP$M_ERRLOG 0x8 #define DMP$M_MEMORY 0x10 #define DMP$M_STUB 0x20 #define DMP$M_WRITECOMP 0x40 #define DMP$M_ERRLOGCOMP 0x80 #define DMP$M_TRAP_VALID 0x100 #define DMP$M_ORIGINAL 0x200 #define DMP$M_COLLECT 0x400 #define DMP$M_PARTIAL 0x800 #define DMP$M_X86_64DUMP 0x1000 #define DMP$M_BITS_13_14 0x6000 #define DMP$M_I64DUMP 0x8000 #define DMP$M_COMPRESSED 0x10000 #define DMP$M_NOTSAVED 0x20000 #define DMP$M_VAXDUMP 0x40000 #define DMP$M_ALPHADUMP 0x80000 #define DMP$M_BAD4GBDUMP 0x100000 #define DMP$M_MODIFIED 0x200000 #define DMP$M_SHMEMDUMP 0x400000 #define DMP$M_PROCDUMP 0x800000 #define DMP$M_BITS_24_28 0x1F000000 #define DMP$M_EXCLDATA 0x20000000 #define DMP$M_FEN 0xC0000000 #define DMP$M_FEN_MFL 1 #define DMP$M_FEN_MFH 2 #define DMP$M_DUMPSTYLE 0x1 #define DMP$M_FULL_MESSAGES 0x2 #define DMP$M_DO_DOSD 0x4 #define DMP$M_COMPRESS 0x8 #define DMP$M_SKIP_SHARED 0x10 #define DMP$M_KEY_ONLY 0x20 #define DMP$M_SKIP_S2 0x40 #define DMP$M_INTERLEAVED 0x80 #define DMP$M_BITS_8_9 0x300 #define DMP$M_SUPER_VERBOSE 0x400 #define DMP$M_SKIP_SYSDISK 0x800 #define DMP$M_DO_GLXFATAL 0x1000 #define DMP$M_DISABLE_GLXRMTPFN 0x2000 #define DMP$M_ALLOW_HBVS_DUMPDEV 0x4000 #define DMP$M_DATACHECK 0x8000 #define DMP$M_SKIP_INIT 0x10000 #define DMP$M_TR_BUFFER 0x20000 #define DMP$M_SPL_BUFFER 0x40000 #define DMP$M_BITS_19_23 0xF80000 #define DMP$M_MEM_STACK_PAGES 0xF000000 #define DMP$M_REG_STACK_PAGES 0xF0000000 #define DMP$K_DEFAULT_MEM_STACK_PAGES 1 /* Default memory stack size for x86 */ /* (enough to get the dump kernel started) */ #define DMP$K_DUMPVER 2561 /* DUMP FILE VERSION NUMBER */ #define DMP$K_PROCVER 769 /* PROCESS DUMP FILE VERSION NUMBER */ #define DMP$K_SHMEMVER 769 /* SHARED MEMORY DUMP FILE VERSION NUMBER */ #define DMP$K_LENGTH 1024 /* Length of dump header */ typedef struct _dmp { unsigned int dmp$l_errseq; /* LAST ERROR LOG SEQ. NUMBER */ __union { unsigned int dmp$l_flags; /* DUMP FILE FLAGS **** KEEP AT OFFSET 4. **** */ __struct { unsigned dmp$v_olddump : 1; /* SET IF DUMP ALREADY ANALYZED */ unsigned dmp$v_empty : 1; /* SET IF DUMP HAS NO DATA BLOCKS */ unsigned dmp$v_hdrblk : 1; /* SET IF ERROR WRITING DUMP HEADER */ unsigned dmp$v_errlog : 1; /* SET IF ERROR WRITING ERROR LOGS TO DUMP FILE */ unsigned dmp$v_memory : 1; /* SET IF ERROR WRITING MEMORY CONTENTS TO DUMP FILE */ unsigned dmp$v_stub : 1; /* SET IF SYS$ERRLOG.DMP BEING WRITTEN */ unsigned dmp$v_writecomp : 1; /* SET IF DUMP WRITE WAS COMPLETED */ unsigned dmp$v_errlogcomp : 1; /* SET IF HEADER/ERROR LOGS WRITE WAS COMPLETED */ unsigned dmp$v_trap_valid : 1; /* Set if a trap happened */ unsigned dmp$v_original : 1; /* Set by BUGCHECK, cleared by SDA COPY */ unsigned dmp$v_collect : 1; /* Set if a COLLECT/SAVE file */ unsigned dmp$v_partial : 1; /* Set if a partial dump not including error logs, PT space, etc, */ unsigned dmp$v_x86_64dump : 1; /* Set for X86-64 dumps **** KEEP AT BIT 12. **** */ unsigned dmp$v_bits_13_14 : 2; /* Spare to keep bits in old FLAGS2 in matching positions */ unsigned dmp$v_i64dump : 1; /* Set for IA64 dumps **** KEEP AT BIT 15. **** */ unsigned dmp$v_compressed : 1; /* SET IF DUMP DATA IS COMPRESSED (in this copy) */ unsigned dmp$v_notsaved : 1; /* Set by SYSINIT if SAVEDUMP not set and dump in PAGEFILE.SYS */ unsigned dmp$v_vaxdump : 1; /* Never set **** KEEP AT BIT 18. **** */ unsigned dmp$v_alphadump : 1; /* Set for Alpha dumps **** KEEP AT BIT 19. **** */ unsigned dmp$v_bad4gbdump : 1; /* Set if memory above 4GB written directly (no buffer pages available) */ unsigned dmp$v_modified : 1; /* Dump has been modified with /OVERRIDE */ unsigned dmp$v_shmemdump : 1; /* Galaxy Shared Memory Dump **** KEEP AT BIT 22. **** */ unsigned dmp$v_procdump : 1; /* Process dump **** KEEP AT BIT 23. **** */ unsigned dmp$v_bits_24_28 : 5; /* Spare */ /* Remaining bits are specific to process dumps */ unsigned dmp$v_excldata : 1; /* Set if data wasn't saved because of insufficient privilege */ unsigned dmp$v_fen : 2; /* Set if FEN was set in the process */ /* (1 bit used on Alpha, both on IPF. Not used on X86, MBZ) */ } dmp$r_flags_bits; } dmp$r_flags_overlay; __union { unsigned int dmp$l_dumpstyle; /* Setting of SYSGEN parameter DUMPSTYLE when dump written */ __struct { /* (handcrafted value for process dumps) */ unsigned dmp$v_dumpstyle : 1; /* Full vs. Selective (ignored on X86: Selective or Interleaved only) */ unsigned dmp$v_full_messages : 1; /* Minimal console output vs. Verbose */ unsigned dmp$v_do_dosd : 1; /* System disk vs. DOSD disk (ignored on X86) */ unsigned dmp$v_compress : 1; /* Raw vs. Compressed (for the original dump, ignored for Interleaved) */ unsigned dmp$v_skip_shared : 1; /* Dump shared memory vs. don't dump. (Not used on X86, MBZ) */ unsigned dmp$v_key_only : 1; /* Only dump system space, key processes, key global pages */ unsigned dmp$v_skip_s2 : 1; /* Don't dump S2 space. (Not used on X86, MBZ) */ unsigned dmp$v_interleaved : 1; /* Interleaved Dump (Only on X86, otherwise MBZ) */ unsigned dmp$v_bits_8_9 : 2; /* Spare bits for future documented features */ unsigned dmp$v_super_verbose : 1; /* Diagnostics */ unsigned dmp$v_skip_sysdisk : 1; /* Don't touch system disk */ unsigned dmp$v_do_glxfatal : 1; /* Force Galaxy-wide crash */ unsigned dmp$v_disable_glxrmtpfn : 1; /* Disable Galaxy remote PFN checks */ unsigned dmp$v_allow_hbvs_dumpdev : 1; /* Allow DOSD to be shadow set member */ unsigned dmp$v_datacheck : 1; /* Do a datacheck read after each write I/O */ unsigned dmp$v_skip_init : 1; /* Don't fill in the SCB/IDT (i.e. primitive exception display) */ /* **** Note: SKIP_INIT is not dynamic in SYSGEN!!!! **** */ unsigned dmp$v_tr_buffer : 1; /* Bit 17 = %x20000: Dump TR_PRINT buffer */ unsigned dmp$v_spl_buffer : 1; /* Bit 18 = %x40000: Dump SPL buffer */ unsigned dmp$v_bits_19_23 : 5; /* Spare bits for future undocumented features */ unsigned dmp$v_mem_stack_pages : 4; /* Additional pages for BUGCHECK's stack */ unsigned dmp$v_reg_stack_pages : 4; /* Additional pages for BUGCHECK's stack (only useful on IA64) */ /* Verified for x86 port - Richard Bishop */ } dmp$r_style_bits; } dmp$r_style_overlay; unsigned short int dmp$w_memmap_entries; /* Entries in memory map (full dump) */ unsigned short int dmp$w_erlbufpages; /* # pagelets / S0 error log buffer */ unsigned __int64 dmp$q_ptbr; /* PAGE TABLE BASE REGISTER (SYSPTBR if VIRBND or IA64 or x86) */ unsigned __int64 dmp$q_ksp; /* KERNEL STACK POINTER */ unsigned __int64 dmp$q_esp; /* EXECUTIVE STACK POINTER */ unsigned __int64 dmp$q_ssp; /* SUPERVISOR STACK POINTER */ unsigned __int64 dmp$q_usp; /* USER STACK POINTER */ unsigned __int64 dmp$q_sysident; /* TEXT ident for SYS.EXE **** KEEP AT OFFSET 56. **** */ void *dmp$l_erlbufadr; /* Address of S0 error log buffers */ unsigned short int dmp$w_pagebits; /* Number of bits in page index. (Not used on X86, MBZ) */ unsigned short int dmp$w_va_bits; /* Number of bits in virtual address. (Not used on X86, MBZ) */ void *dmp$l_symvect_va; /* ABSOLUTE VIRTUAL ADDRESS OF SYMBOL VECTOR IN MEMORY */ void *dmp$l_symvect_end; /* ABSOLUTE VIRTUAL ADDRESS OF END OF SYMBOL VECTOR IN MEMORY */ unsigned int dmp$l_dumpblockcnt; /* COUNT OF BLOCKS DUMPED (not interleaved dumps) */ unsigned int dmp$l_nocompblockcnt; /* As DUMPBLOCKCNT with no compression (not interleaved dumps) */ unsigned int dmp$l_sysver; /* SYSTEM VERSION NUMBER **** KEEP AT OFFSET 88. **** */ unsigned int dmp$l_check; /* ONES COMPLEMENT OF SYSVER **** KEEP AT OFFSET 92. **** */ unsigned short int dmp$w_dumpver; /* DUMP FILE VERSION NUMBER **** KEEP AT OFFSET 96. **** */ unsigned short int dmp$w_erlbufcnt; /* # S0 error log buffers */ unsigned short int dmp$w_erlbufhead; /* Index of next S0 error log buffer to be written to file */ unsigned short int dmp$w_erlbuftail; /* Index of next available S0 error log buffer */ __union { __struct { unsigned __int64 dmp$q_l2_base; /* Crash-time contents of mmg$gq_l2_base */ unsigned __int64 dmp$q_l1_base; /* Crash-time contents of mmg$gq_l1_base */ unsigned __int64 dmp$q_pt_base; /* Crash-time contents of mmg$gq_pt_base */ } dmp$r_platform_struct_1a; __struct { unsigned __int64 dmp$q_pte_levels; /* Number of page table levels (4 or 5) */ unsigned __int64 dmp$q_max_pfn; /* Contents of MMG$GQ_MAXPFN */ unsigned int dmp$l_lmb_count; /* The number of LMBs in the dump (X86: interleaved only or MBZ) */ unsigned int dmp$l_x86_spare_1; /* Not used on x86 (MBZ) */ } dmp$r_platform_struct_1b; } dmp$r_platform_overlay_1; unsigned __int64 dmp$q_crashtime; /* Crash date/time */ unsigned __int64 dmp$q_linktime; /* Link date/time of base image in system dumped */ void *dmp$l_chfctxadr; /* Base address of CHFCTX block (process dumps) */ void *dmp$l_call_handl; /* Address of SYS$GL_CALL_HANDL (process dumps) */ void *dmp$l_astdel; /* Address of SYS$GL_ASTDEL (process dumps) */ void *dmp$l_astdel_k; /* Address of SYS$GL_ASTDEL_K (process dumps) */ unsigned int dmp$l_errstatus; /* LAST ERROR STATUS FROM DUMP WRITE */ unsigned int dmp$l_dumperrs; /* COUNT OF ERRORS DURING DUMP WRITE */ unsigned int dmp$l_maxcompentries; /* Worst case count of compression map entries in dump */ unsigned int dmp$l_shortblockcnt; /* THE NUMBER OF ADDITIONAL BLOCKS NEEDED FOR COMPLETE DUMP */ unsigned int dmp$l_compentrypages; /* Max # pages mapped by a data compression map entry */ unsigned int dmp$l_saveprccnt; /* Count of saved processes (subset dump) */ unsigned short int dmp$w_saveradcnt; /* Count of saved RADs (selective dump) */ unsigned short int dmp$w_regioncnt; /* Count of regions dumped (shared memory) */ void *dmp$l_pcbvec; /* Pointer to PCB vector (Process dumps) */ int dmp$l_teb_addr; /* Address of thread environment block (Process dumps) */ unsigned int dmp$l_maxpix; /* Highest process index (Process dumps) */ unsigned int dmp$l_l1_index; __union { unsigned int dmp$l_level_width; /* Width of a page table level (not X86) */ unsigned int dmp$l_perf_blocks; /* Number of blocks of performance data (X86 only) */ } dmp$r_platform_overlay_2; void *dmp$l_npagedyn; void *dmp$l_balbase; void *dmp$l_bal_end; unsigned int dmp$l_bslotsz; void *dmp$l_pixbas; void *dmp$l_ktb_address; void *dmp$l_sysphd; void *dmp$l_hpdesc; unsigned __int64 dmp$q_sys_virt_base; unsigned __int64 dmp$q_shared_va_ptes; /* Not used on x86 (MBZ). Derived from page table ranges. */ unsigned __int64 dmp$q_gpt_base; unsigned __int64 dmp$q_max_gpte; unsigned __int64 dmp$q_pfn_database; unsigned char dmp$b_astsr_asten; /* AST summary register and AST enable bits (process dumps only) */ unsigned char dmp$b_trapinfo_blks; /* # blocks set aside for trap data */ unsigned char dmp$b_crasherl_blks; /* # blocks for crash error log entry */ unsigned char dmp$b_imgdmp_icb_blks; /* # blocks used for invocation context (process dumps only) */ unsigned char dmp$b_imgdmp_reg_blks; /* # blocks used for internal registers (process dumps only) */ char dmp$t_spare_bytes [2]; char dmp$t_nodename [9]; /* ASCIC node name */ char dmp$t_procname [16]; /* ASCIC process name */ char dmp$t_modelname [32]; /* ASCIC model name */ unsigned int dmp$l_bugcode; /* The bugcheck code */ void *dmp$l_mch_array; /* Address of the mechanism array (process dumps) */ #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 *dmp$q_erlbufadr_s2; /* Address of S2 error log buffers */ #else unsigned __int64 dmp$q_erlbufadr_s2; #endif unsigned int dmp$l_erlbufpages_s2; /* # pagelets / S2 error log buffer */ unsigned int dmp$l_erlbufcnt_s2; /* # S2 error log buffers */ unsigned int dmp$l_erlbufhead_s2; /* Index of next S2 error log buffer to be written to file */ unsigned int dmp$l_erlbuftail_s2; /* Index of next available S2 error log buffer */ unsigned int dmp$l_collect_total; /* The total size of the file-ID + unwind-data collection */ unsigned int dmp$l_collect_disk; /* The size of the disk portion of the collection */ /* (a subset of and the final blocks of COLLECT_TOTAL) */ unsigned int dmp$l_keyblockcnt; /* Count of blocks dumped for system space, key processes, key globals */ unsigned int dmp$l_nocompkeycnt; /* As KEYBLOCKCNT with no compression */ unsigned int dmp$l_compentries; /* Count of compression map entries in this (partial copy of a) dump */ unsigned int dmp$l_fragblocks; /* Number of blocks BUGCHECK could use because file too fragmented */ int dmp$l_add_pcb_astcnt; /* ASTCNT adjustment required to take process dump */ int dmp$l_add_pcb_biocnt; /* BIOCNT adjustment required to take process dump */ int dmp$l_add_pcb_diocnt; /* DIOCNT adjustment required to take process dump */ int dmp$l_add_jib_bytcnt; /* BYTCNT adjustment required to take process dump */ int dmp$l_add_jib_filcnt; /* FILCNT adjustment required to take process dump */ int dmp$l_add_jib_tqcnt; /* TQCNT adjustment required to take process dump */ int dmp$l_add_jib_pgflcnt; /* PGFLCNT adjustment required to take process dump */ int dmp$l_add_jib_enqcnt; /* ENQCNT adjustment required to take process dump */ unsigned __int64 dmp$q_add_phd_cpulim; /* CPULIM adjustment required to take process dump */ /* (not yet used, but would be recorded as a delta time) */ unsigned __int64 dmp$q_wslbase; /* Base address of working set pages in S2 space (process dumps) */ unsigned __int64 dmp$q_wsl_end; /* End address of working set pages in S2 space (process dumps) */ unsigned __int64 dmp$q_process_ptbr [4]; /* PTBRs for process (if one active) at crash time */ unsigned __int64 dmp$q_dumpblockcnt; /* COUNT OF BLOCKS DUMPED (interleaved dumps) */ unsigned __int64 dmp$q_nocompblockcnt; /* As DUMPBLOCKCNT with no compression (interleaved dumps) */ unsigned __int64 dmp$q_lost_vbn_list; /* First VBN in a chain of compression map VBNs that weren't */ /* used (one per actor process when its final LMB has its */ /* compression map embedded). First quadword in block is VBN */ /* of next in chain. */ unsigned __int64 dmp$q_keyblockcnt; /* Count of blocks dumped for system space, key processes, key globals */ unsigned __int64 dmp$q_nocompkeycnt; /* As KEYBLOCKCNT with no compression */ char dmp$t_extra_space [492]; unsigned int dmp$l_checksum; /* Last longword of 2-block header **** KEEP AT OFFSET 1020. **** */ } DMP; #if !defined(__VAXC) #define dmp$l_flags dmp$r_flags_overlay.dmp$l_flags #define dmp$v_olddump dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_olddump #define dmp$v_empty dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_empty #define dmp$v_hdrblk dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_hdrblk #define dmp$v_errlog dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_errlog #define dmp$v_memory dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_memory #define dmp$v_stub dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_stub #define dmp$v_writecomp dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_writecomp #define dmp$v_errlogcomp dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_errlogcomp #define dmp$v_trap_valid dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_trap_valid #define dmp$v_original dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_original #define dmp$v_collect dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_collect #define dmp$v_partial dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_partial #define dmp$v_x86_64dump dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_x86_64dump #define dmp$v_bits_13_14 dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_bits_13_14 #define dmp$v_i64dump dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_i64dump #define dmp$v_compressed dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_compressed #define dmp$v_notsaved dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_notsaved #define dmp$v_vaxdump dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_vaxdump #define dmp$v_alphadump dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_alphadump #define dmp$v_bad4gbdump dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_bad4gbdump #define dmp$v_modified dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_modified #define dmp$v_shmemdump dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_shmemdump #define dmp$v_procdump dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_procdump #define dmp$v_bits_24_28 dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_bits_24_28 #define dmp$v_excldata dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_excldata #define dmp$v_fen dmp$r_flags_overlay.dmp$r_flags_bits.dmp$v_fen #define dmp$l_dumpstyle dmp$r_style_overlay.dmp$l_dumpstyle #define dmp$v_dumpstyle dmp$r_style_overlay.dmp$r_style_bits.dmp$v_dumpstyle #define dmp$v_full_messages dmp$r_style_overlay.dmp$r_style_bits.dmp$v_full_messages #define dmp$v_do_dosd dmp$r_style_overlay.dmp$r_style_bits.dmp$v_do_dosd #define dmp$v_compress dmp$r_style_overlay.dmp$r_style_bits.dmp$v_compress #define dmp$v_skip_shared dmp$r_style_overlay.dmp$r_style_bits.dmp$v_skip_shared #define dmp$v_key_only dmp$r_style_overlay.dmp$r_style_bits.dmp$v_key_only #define dmp$v_skip_s2 dmp$r_style_overlay.dmp$r_style_bits.dmp$v_skip_s2 #define dmp$v_interleaved dmp$r_style_overlay.dmp$r_style_bits.dmp$v_interleaved #define dmp$v_bits_8_9 dmp$r_style_overlay.dmp$r_style_bits.dmp$v_bits_8_9 #define dmp$v_super_verbose dmp$r_style_overlay.dmp$r_style_bits.dmp$v_super_verbose #define dmp$v_skip_sysdisk dmp$r_style_overlay.dmp$r_style_bits.dmp$v_skip_sysdisk #define dmp$v_do_glxfatal dmp$r_style_overlay.dmp$r_style_bits.dmp$v_do_glxfatal #define dmp$v_disable_glxrmtpfn dmp$r_style_overlay.dmp$r_style_bits.dmp$v_disable_glxrmtpfn #define dmp$v_allow_hbvs_dumpdev dmp$r_style_overlay.dmp$r_style_bits.dmp$v_allow_hbvs_dumpdev #define dmp$v_datacheck dmp$r_style_overlay.dmp$r_style_bits.dmp$v_datacheck #define dmp$v_skip_init dmp$r_style_overlay.dmp$r_style_bits.dmp$v_skip_init #define dmp$v_tr_buffer dmp$r_style_overlay.dmp$r_style_bits.dmp$v_tr_buffer #define dmp$v_spl_buffer dmp$r_style_overlay.dmp$r_style_bits.dmp$v_spl_buffer #define dmp$v_bits_19_23 dmp$r_style_overlay.dmp$r_style_bits.dmp$v_bits_19_23 #define dmp$v_mem_stack_pages dmp$r_style_overlay.dmp$r_style_bits.dmp$v_mem_stack_pages #define dmp$v_reg_stack_pages dmp$r_style_overlay.dmp$r_style_bits.dmp$v_reg_stack_pages #define dmp$q_l2_base dmp$r_platform_overlay_1.dmp$r_platform_struct_1a.dmp$q_l2_base #define dmp$q_l1_base dmp$r_platform_overlay_1.dmp$r_platform_struct_1a.dmp$q_l1_base #define dmp$q_pt_base dmp$r_platform_overlay_1.dmp$r_platform_struct_1a.dmp$q_pt_base #define dmp$q_pte_levels dmp$r_platform_overlay_1.dmp$r_platform_struct_1b.dmp$q_pte_levels #define dmp$q_max_pfn dmp$r_platform_overlay_1.dmp$r_platform_struct_1b.dmp$q_max_pfn #define dmp$l_lmb_count dmp$r_platform_overlay_1.dmp$r_platform_struct_1b.dmp$l_lmb_count #define dmp$l_x86_spare_1 dmp$r_platform_overlay_1.dmp$r_platform_struct_1b.dmp$l_x86_spare_1 #define dmp$l_level_width dmp$r_platform_overlay_2.dmp$l_level_width #define dmp$l_perf_blocks dmp$r_platform_overlay_2.dmp$l_perf_blocks #endif /* #if !defined(__VAXC) */ #define DMP$K_VAX_EMB_LENGTH 12 /* Length of EMB header on VAX */ typedef struct _dmp_compat { char dmp$t_compat_fill_1 [48]; __union { unsigned __int64 dmp$q_v731_sysident; /* TEXT ident for SYS.EXE **** KEEP AT OFFSET 48. **** */ unsigned __int64 dmp$q_vax_embcr_swvers; /* SOFTWARE VERSION IN VAX CRASH ERRLOG **** KEEP AT OFFSET 48. **** */ } dmp$r_compat_overlay_1; char dmp$t_compat_fill_2 [12]; unsigned int dmp$l_pre_v731_sysver; /* SYSTEM VERSION NUMBER **** KEEP AT OFFSET 68. **** */ unsigned int dmp$l_pre_v731_check; /* ONES COMPLEMENT OF SYSVER **** KEEP AT OFFSET 72. **** */ unsigned short int dmp$w_pre_v731_dumpver; /* DUMP FILE VERSION NUMBER **** KEEP AT OFFSET 76. **** */ char dmp$t_compat_fill_3 [26]; __union { unsigned __int64 dmp$q_pre_v731_sysident; /* TEXT ident for SYS.EXE **** KEEP AT OFFSET 104. **** */ __struct { unsigned int dmp$l_compat_fill_4; unsigned short int dmp$w_vax_dumpver; /* DUMP FILE VERSION NUMBER ON VAX **** KEEP AT OFFSET 108. **** */ unsigned short int dmp$w_compat_fill_5; } dmp$r_compat_struct_1; } dmp$r_compat_overlay_2; char dmp$t_compat_fill_4 [20]; unsigned int dmp$l_vax_crasherl; /* SYSTEM CRASH ERR LOG ENTRY ON VAX **** KEEP AT OFFSET 132. **** */ } DMP_COMPAT; #if !defined(__VAXC) #define dmp$q_v731_sysident dmp$r_compat_overlay_1.dmp$q_v731_sysident #define dmp$q_vax_embcr_swvers dmp$r_compat_overlay_1.dmp$q_vax_embcr_swvers #define dmp$q_pre_v731_sysident dmp$r_compat_overlay_2.dmp$q_pre_v731_sysident #define dmp$l_compat_fill_4 dmp$r_compat_overlay_2.dmp$r_compat_struct_1.dmp$l_compat_fill_4 #define dmp$w_vax_dumpver dmp$r_compat_overlay_2.dmp$r_compat_struct_1.dmp$w_vax_dumpver #define dmp$w_compat_fill_5 dmp$r_compat_overlay_2.dmp$r_compat_struct_1.dmp$w_compat_fill_5 #endif /* #if !defined(__VAXC) */ #define DMP$K_TRAPINFO_LENGTH 512 /* Length of trap entry buffer */ typedef struct _dmp_trapinfo_entry { INTSTK dmp$t_trapinfo; /* Verified for x86 port - Richard Bishop */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _intstk *dmp$pq_trap_intstk; /* address of INTSTK structure */ #else unsigned __int64 dmp$pq_trap_intstk; #endif char dmp$t_trapinfo_fill [24]; } DMP_TRAPINFO_ENTRY; #define DMP$K_CRASHERL_LENGTH 1024 /* Length of crash error log buffer */ typedef struct _dmp_crasherl_entry { char dmp$t_crasherl_header_fill [16]; char dmp$t_crasherl_crash_fill [600]; char dmp$t_crasherl_entry_fill [408]; } DMP_CRASHERL_ENTRY; #define DMP$K_IMGDMP_ICB_LENGTH 2048 /* Length of invo context block */ typedef struct _dmp_imgdmp_icb { INVO_CONTEXT_BLK dmp$r_imgdmp_icb; char dmp$t_spare_icb [304]; /* filler to end of block */ } DMP_IMGDMP_ICB; #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __save /* Save current pointer size */ #pragma __required_pointer_size __long /* Pointers are 64-bit */ typedef struct _dmp_imgdmp_icb * DMP_IMGDMP_ICB_PQ; /* Pointer to a ICB structure. */ #pragma __required_pointer_size __restore /* Return to previous pointer size */ #else typedef unsigned __int64 DMP_IMGDMP_ICB_PQ; #endif /* __INITIAL_POINTER_SIZE */ #define DMP$K_IMGDMP_REGS_LENGTH 512 /* Length of general registers */ typedef struct _dmp_imgdmp_regs { /* Verified for x86 port - Richard Bishop */ unsigned char dmp$b_imgdmp_prevmode; /* Not in the ICB structure */ char dmp$t_imgdmp_spare [7]; /* Keep things on quadword boundaries */ char dmp$t_spare_regs [504]; /* filler to end of block */ } DMP_IMGDMP_REGS; #define DMP$M_NODUMP 0x1 #define DMP$M_POWEROFF 0x2 #define DMP$M_BADMEMORY 0x4 #define DMP$M_BIB_STATE 0x8 #define DMP$M_LONG_FILL 0xFFFFFFF0 typedef struct _dumpmask { unsigned dmp$v_nodump : 1; /* Do not write dumpfile */ unsigned dmp$v_poweroff : 1; /* Request power off of system */ unsigned dmp$v_badmemory : 1; /* Memory is too broken to try dumping it */ unsigned dmp$v_bib_state : 1; /* Request shutdown to BIB state */ unsigned dmp$v_long_fill : 28; /* Longword filler */ } DUMPMASK; #define DMP$C_FRAG_GCT -1 /* if all bits set then GCT fragment */ #define DMP$K_FRAG_MAP_LENGTH 32 #define DMP$C_FRAG_MAP_LENGTH 32 typedef struct _dmp_memmap { int dmp$l_frag_map_length; /* Size of structure */ unsigned int dmp$l_frag_flags; /* See [STARLET]PMMDEF.SDL for these */ unsigned __int64 dmp$q_frag_start_pfn; /* Start PFN of fragment */ unsigned __int64 dmp$q_frag_length; /* Actual block count for memory fragment */ unsigned __int64 dmp$q_frag_nocomp_length; /* As FRAG_LENGTH without compression */ } DMP_MEMMAP; #define DMP$M_BLOCK_BITS 0x7FF #define DMP$M_LMBHDR 0x800 #define DMP$M_UNCOMP 0x1000 #define DMP$M_OVERRUN 0x2000 #define DMP$M_IO_ERROR 0x4000 #define DMP$M_NOCOMP 0x8000 #define DMP$K_REPEAT 0 /* Repeated character sequence */ #define DMP$K_REENCODE_1 1 /* 1-bit re-encoding */ #define DMP$K_REENCODE_2 2 /* 2-bit re-encoding */ #define DMP$K_REENCODE_3 3 /* 3-bit re-encoding */ #define DMP$K_REENCODE_4 4 /* 4-bit re-encoding */ #define DMP$K_REENCODE_5 5 /* 5-bit re-encoding */ #define DMP$K_REENCODE_6 6 /* 6-bit re-encoding */ #define DMP$K_BITMAP_1 7 /* Bitmap (one dominant character) */ #define DMP$K_BITMAP_3 8 /* Bitmap (2-3 dominant characters) */ #define DMP$K_BITMAP_7 9 /* Bitmap (4-7 dominant characters) */ #define DMP$K_INCREMENT 10 /* Incrementing character sequence */ #define DMP$K_DECREMENT 11 /* Decrementing character sequence */ #define DMP$K_NOCOMP 12 /* No compression */ #define DMP$K_COMPRESSION_TYPES 13 /* Number of types */ #define DMP$M_RECOMP 32 /* Recompressed section */ #define DMP$M_FINAL 64 /* Final section to restore */ #define DMP$M_FIRST 128 /* Section is first in a "raw" read */ typedef struct _dmp_cblock { __union { __struct { unsigned __int64 dmp$q_comp_entry; /* An entire entry */ } dmp$r_comp_fields_1; __struct { unsigned int dmp$l_comp_ending_vbn; /* Final uncompressed VBN from this section */ unsigned short int dmp$w_comp_blocks; /* The count of compressed blocks in this section */ __union { __struct { unsigned short int dmp$w_comp_flags; /* Flags for this section */ } dmp$r_comp_fields_3; __struct { unsigned dmp$v_block_bits : 11; /* ILV only: block count & flags share a word. */ unsigned dmp$v_lmbhdr : 1; /* Not ILV: LMB header (to distinguish from map entries for holes) */ unsigned dmp$v_uncomp : 1; /* All types: Uncompressed data section */ unsigned dmp$v_overrun : 1; /* All types: Dumpfile filled while writing this section */ unsigned dmp$v_io_error : 1; /* Not ILV: I/O error occurred while writing this section */ unsigned dmp$v_nocomp : 1; /* Not ILV: Non-compressed section (LMB header, holes) */ } dmp$r_comp_fields_4; } dmp$r_comp_overlay_2; } dmp$r_comp_fields_2; } dmp$r_comp_overlay_1; /* Compression types */ } DMP_CBLOCK; #if !defined(__VAXC) #define dmp$q_comp_entry dmp$r_comp_overlay_1.dmp$r_comp_fields_1.dmp$q_comp_entry #define dmp$l_comp_ending_vbn dmp$r_comp_overlay_1.dmp$r_comp_fields_2.dmp$l_comp_ending_vbn #define dmp$w_comp_blocks dmp$r_comp_overlay_1.dmp$r_comp_fields_2.dmp$w_comp_blocks #define dmp$w_comp_flags dmp$r_comp_overlay_1.dmp$r_comp_fields_2.dmp$r_comp_overlay_2.dmp$r_comp_fields_3.dmp$w_comp_flags #define dmp$v_block_bits dmp$r_comp_overlay_1.dmp$r_comp_fields_2.dmp$r_comp_overlay_2.dmp$r_comp_fields_4.dmp$v_block_bits #define dmp$v_lmbhdr dmp$r_comp_overlay_1.dmp$r_comp_fields_2.dmp$r_comp_overlay_2.dmp$r_comp_fields_4.dmp$v_lmbhdr #define dmp$v_uncomp dmp$r_comp_overlay_1.dmp$r_comp_fields_2.dmp$r_comp_overlay_2.dmp$r_comp_fields_4.dmp$v_uncomp #define dmp$v_overrun dmp$r_comp_overlay_1.dmp$r_comp_fields_2.dmp$r_comp_overlay_2.dmp$r_comp_fields_4.dmp$v_overrun #define dmp$v_io_error dmp$r_comp_overlay_1.dmp$r_comp_fields_2.dmp$r_comp_overlay_2.dmp$r_comp_fields_4.dmp$v_io_error #define dmp$v_nocomp dmp$r_comp_overlay_1.dmp$r_comp_fields_2.dmp$r_comp_overlay_2.dmp$r_comp_fields_4.dmp$v_nocomp #endif /* #if !defined(__VAXC) */ #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __save /* Save current pointer size */ #pragma __required_pointer_size __long /* Pointers are 64-bit */ typedef struct _dmp_cblock * DMP_CBLOCK_PQ; /* Pointer to a compression block structure. */ #pragma __required_pointer_size __restore /* Return to previous pointer size */ #else typedef unsigned __int64 DMP_CBLOCK_PQ; #endif /* __INITIAL_POINTER_SIZE */ #define DMP$K_SQUEEZE_LENGTH 72 #define DMP$K_MAX_COMPRESSIONS 4 #define DMP$K_MAX_IO_RAW 32768 #define DMP$K_MAX_IO_112 57344 /* max full-page I/O without split */ #define DMP$K_MAX_IO_124 63488 /* max raw data when no compression possible */ #define DMP$K_MAX_IO_127 65024 /* max regular I/O without split */ #define DMP$K_MAX_IO 65536 #define DMP$K_COMP_LENGTH 2048 #define DMP$K_MIN_REPEAT 16 #define DMP$K_ERROR_COUNT 156 #define DMP$K_OVERRUN_COUNT 159 #define DMP$K_STATS_ENTRIES 162 #define DMP$K_SHORT_STATS 39 typedef struct _dmp_squeeze { #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ char *dmp$pq_output_start; /* The output buffer being filled */ #else unsigned __int64 dmp$pq_output_start; #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 */ char *dmp$pq_squeeze_work; /* Address of the work area into which data is initially compressed */ #else unsigned __int64 dmp$pq_squeeze_work; #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 */ int *dmp$pq_byte_table; /* Address of array where byte values are counted */ #else unsigned __int64 dmp$pq_byte_table; #endif int dmp$l_output_used; /* How much of the output buffer has been used */ int dmp$l_prior_uncomp; /* Length of prior uncompressed section in output buffer */ int dmp$l_current_uncomp; /* Offset to start of current uncompressed section in output buffer */ int dmp$l_squeeze_flags; /* DMP$M_UNCOMP gets set in here when an uncompressible section is created */ __int64 dmp$q_base_vbn; /* Raw VBN of base of LMB (always zero in full dumps) */ #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 (*dmp$pq_write_compressed_blocks)(); #else unsigned __int64 dmp$pq_write_compressed_blocks; #endif /* Callback routine to write buffer contents */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ unsigned __int64 *dmp$pq_squeeze_stats; #else unsigned __int64 dmp$pq_squeeze_stats; #endif /* Pointer to statistics array - 3 quadwords for each compression type */ /* for each compression attempt */ unsigned int dmp$l_squeeze_uncomp_count; unsigned int dmp$l_squeeze_merge_count; } DMP_SQUEEZE; #define DMP$K_EXPLODE_LENGTH 40 typedef struct _dmp_explode { #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 char *dmp$ps_input_start; /* The input buffer being processed */ char *dmp$ps_explode_work; /* Address of the work area into which data is initially decompressed */ int dmp$l_input_used; /* How much of the input buffer has been used */ int dmp$l_explode_flags; /* DMP$M_UNCOMP gets set in here when an uncompressible section is processed */ int dmp$l_lowest_vbn; /* Lowest VBN exploded left in the output buffer */ int dmp$l_highest_vbn; /* Highest VBN exploded left in the output buffer */ int (*dmp$ps_read_compressed_blocks)(); /* Callback routine to read more compressed data into the input buffer */ unsigned __int64 *dmp$ps_explode_stats; /* Pointer to statistics array - 3 quadwords for each compression type */ /* for each decompression pass */ unsigned int dmp$l_explode_uncomp_count; char *dmp$ps_explode_filedata; /* Pointer to the file_data structure for the file being processed */ } DMP_EXPLODE; #define DMP_DISK$M_NO_ACCESS 0x1 #define DMP_DISK$M_SEPARATE 0x2 #define DMP_DISK$M_UNCOMBINED 0x4 #define DMP_DISK$K_LENGTH 45 /* Base length of DMP_DISK_DATA */ #ifdef __cplusplus /* Define structure prototypes */ struct _dmp_file_data; #endif /* #ifdef __cplusplus */ typedef struct _dmp_disk_data { #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _dmp_disk_data *dmp_disk$pq_next; /* Pointer to next DMP_DISK_DATA structure */ #else unsigned __int64 dmp_disk$pq_next; #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 */ struct _dmp_file_data *dmp_disk$pq_file; /* Pointer to first DMP_FILE_DATA for this disk */ #else unsigned __int64 dmp_disk$pq_file; #endif unsigned int dmp_disk$l_vbn; /* Relative VBN in collection for this disk's file/code/etc data */ unsigned int dmp_disk$l_blocks; /* Count of blocks for this disk's file/code/etc data */ __int64 dmp_disk$q_disk_data_length; /* Length of this DMP_DISK_DATA structure */ __int64 dmp_disk$q_disk_data_total; /* Total length of all this disk's file/code/etc structures */ __union { unsigned short int dmp_disk$w_flags; __struct { unsigned dmp_disk$v_no_access : 1; /* Unable to access the disk */ unsigned dmp_disk$v_separate : 1; /* This DMP_DISK_DATA was allocated separately (pre-reorg) */ unsigned dmp_disk$v_uncombined : 1; /* The attached file/code/etc were allocated separately */ unsigned dmp_disk$v_fill_0_ : 5; } dmp_disk$r_flags_bits; } dmp_disk$r_flags_overlay; unsigned short int dmp_disk$w_name_length; /* Length of the disk name */ char dmp_disk$t_name [1]; /* Start of the disk name */ } DMP_DISK_DATA; #if !defined(__VAXC) #define dmp_disk$w_flags dmp_disk$r_flags_overlay.dmp_disk$w_flags #define dmp_disk$v_no_access dmp_disk$r_flags_overlay.dmp_disk$r_flags_bits.dmp_disk$v_no_access #define dmp_disk$v_separate dmp_disk$r_flags_overlay.dmp_disk$r_flags_bits.dmp_disk$v_separate #define dmp_disk$v_uncombined dmp_disk$r_flags_overlay.dmp_disk$r_flags_bits.dmp_disk$v_uncombined #endif /* #if !defined(__VAXC) */ #define DMP_FILE$M_NO_ACCESS 0x1 #define DMP_FILE$M_NO_UNWIND 0x2 #define DMP_FILE$M_SEPARATE 0x4 #define DMP_FILE$M_COUNTED 0x8 #define DMP_FILE$K_LENGTH 53 /* Base length of DMP_FILE_DATA */ #ifdef __cplusplus /* Define structure prototypes */ struct _dmp_code_data; struct _dmp_unwind_data; #endif /* #ifdef __cplusplus */ typedef struct _dmp_file_data { #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _dmp_file_data *dmp_file$pq_next; /* Pointer to next DMP_FILE_DATA for this disk */ #else unsigned __int64 dmp_file$pq_next; #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 */ struct _dmp_code_data *dmp_file$pq_code; /* Pointer to first DMP_CODE_DATA for this file */ #else unsigned __int64 dmp_file$pq_code; #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 */ struct _dmp_unwind_data *dmp_file$pq_unwind; /* Pointer to first DMP_UNWIND_DATA for this file */ #else unsigned __int64 dmp_file$pq_unwind; #endif unsigned short int dmp_file$w_fid_num; /* File number */ unsigned short int dmp_file$w_fid_seq; /* File sequence number */ unsigned char dmp_file$b_fid_rvn; /* Short form relative volume number */ unsigned char dmp_file$b_fid_nmx; /* File number extension */ short int dmp_file$w_filler; __int64 dmp_file$q_file_data_length; /* Length of this DMP_FILE_DATA structure */ unsigned int dmp_file$l_status; /* Status when we tried to open the file */ unsigned int dmp_file$l_stv; /* Corresponding STV if relevant */ __union { unsigned char dmp_file$b_flags; __struct { unsigned dmp_file$v_no_access : 1; /* Unable to access the file */ unsigned dmp_file$v_no_unwind : 1; /* An image file but no unwind data (e.g. message file) */ unsigned dmp_file$v_separate : 1; /* This DMP_FILE_DATA was allocated separately (pre-reorg) */ unsigned dmp_file$v_counted : 1; /* Any DMP_UNWIND_DATAs for this file have been counted */ unsigned dmp_file$v_fill_1_ : 4; } dmp_file$r_flags_bits; } dmp_file$r_flags_overlay; unsigned char dmp_file$b_spare [1]; /* For alignment and/or reuse */ unsigned short int dmp_file$w_name_length; /* Length of the file name */ char dmp_file$t_name [1]; /* Start of the file name */ } DMP_FILE_DATA; #if !defined(__VAXC) #define dmp_file$b_flags dmp_file$r_flags_overlay.dmp_file$b_flags #define dmp_file$v_no_access dmp_file$r_flags_overlay.dmp_file$r_flags_bits.dmp_file$v_no_access #define dmp_file$v_no_unwind dmp_file$r_flags_overlay.dmp_file$r_flags_bits.dmp_file$v_no_unwind #define dmp_file$v_separate dmp_file$r_flags_overlay.dmp_file$r_flags_bits.dmp_file$v_separate #define dmp_file$v_counted dmp_file$r_flags_overlay.dmp_file$r_flags_bits.dmp_file$v_counted #endif /* #if !defined(__VAXC) */ #define DMP_CODE$M_SEPARATE 0x1 #define DMP_CODE$K_LENGTH 64 /* Length of DMP_CODE_DATA */ #ifdef __cplusplus /* Define structure prototypes */ struct _dmp_unwind_data; #endif /* #ifdef __cplusplus */ typedef struct _dmp_code_data { #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _dmp_code_data *dmp_code$pq_next; /* Pointer to next DMP_CODE_DATA for this file */ #else unsigned __int64 dmp_code$pq_next; #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 */ struct _dmp_unwind_data *dmp_code$pq_unwind; /* Pointer to DMP_UNWIND_DATA for this code segment */ #else unsigned __int64 dmp_code$pq_unwind; #endif __int64 dmp_code$q_segnum; /* Code segment number */ #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 *dmp_code$pq_code_offset; /* Start offset of this code segment within the image */ #else unsigned __int64 dmp_code$pq_code_offset; #endif __int64 dmp_code$q_code_size; /* Size of this code segment */ __int64 dmp_code$q_info_offset; /* Start offset within unwind segment for this code segment (IA64) */ __int64 dmp_code$q_info_size; /* Size of unwind data for this code segment (IA64) */ __union { unsigned char dmp_code$b_flags; __struct { unsigned dmp_code$v_separate : 1; /* This DMP_CODE_DATA was allocated separately (pre-reorg) */ unsigned dmp_code$v_fill_2_ : 7; } dmp_code$r_flags_bits; } dmp_code$r_flags_overlay; unsigned char dmp_code$b_spare [7]; /* For alignment and/or reuse */ } DMP_CODE_DATA; #if !defined(__VAXC) #define dmp_code$b_flags dmp_code$r_flags_overlay.dmp_code$b_flags #define dmp_code$v_separate dmp_code$r_flags_overlay.dmp_code$r_flags_bits.dmp_code$v_separate #endif /* #if !defined(__VAXC) */ #define DMP_UNWIND$M_NOT_HERE 0x1 #define DMP_UNWIND$M_SEPARATE 0x2 #define DMP_UNWIND$K_LENGTH 112 /* Length of DMP_UNWIND_DATA */ typedef struct _dmp_unwind_data { #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _dmp_unwind_data *dmp_unwind$pq_next; /* Pointer to next DMP_UNWIND_DATA for this file */ #else unsigned __int64 dmp_unwind$pq_next; #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 *dmp_unwind$pq_segment; /* Address of in-memory copy of actual unwind segment */ #else unsigned __int64 dmp_unwind$pq_segment; #endif __int64 dmp_unwind$q_seglen; /* Length of in-memory copy of the unwind segment */ unsigned __int64 dmp_unwind$q_segnum; /* Unwind segment number */ unsigned __int64 dmp_unwind$q_image_offset; /* Start offset of this unwind segment within the image */ __int64 dmp_unwind$q_image_seglen; /* Size of unwind segment in image file */ unsigned __int64 dmp_unwind$q_unwtab_length; /* Size (in bytes) of unwind table portion of this segment (IA64) */ unsigned int dmp_unwind$l_codeseg_count; /* Number of code segments described by this segment */ unsigned int dmp_unwind$l_vbn; /* Relative VBN in collection for this unwind segment */ unsigned int dmp_unwind$l_blocks; /* Count of blocks for this unwind segment */ __union { unsigned char dmp_unwind$b_flags; __struct { unsigned dmp_unwind$v_not_here : 1; /* The unwind segment wasn't kept in memory during dump copy */ unsigned dmp_unwind$v_separate : 1; /* This DMP_UNWIND_DATA was allocated separately (pre-reorg) */ unsigned dmp_unwind$v_fill_3_ : 6; } dmp_unwind$r_flags_bits; } dmp_unwind$r_flags_overlay; unsigned char dmp_unwind$b_table_enc; /* Encoding for unwind table entries (only for X86) */ unsigned char dmp_unwind$b_ute_offset; /* Offset to first UTE (aka binary search table, only for X86) */ unsigned char dmp_unwind$b_ute_size; /* Size of a UTE (aka binary search table, only for X86) */ unsigned __int64 dmp_unwind$q_info_offset; /* Start offset within unwind segment for this code segment (X86) */ __int64 dmp_unwind$q_info_size; /* Size of unwind data for this code segment (X86) */ unsigned __int64 dmp_unwind$q_fde_count; /* Count of FDEs in the lookup table (X86) */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _dmp_code_data *dmp_unwind$pq_code; /* Pointer to the DMP_CODE_DATA for this unwind segment (X86) */ #else unsigned __int64 dmp_unwind$pq_code; #endif unsigned __int64 dmp_unwind$q_mem_address; /* Theoretical memory address of unwind segment */ } DMP_UNWIND_DATA; #if !defined(__VAXC) #define dmp_unwind$b_flags dmp_unwind$r_flags_overlay.dmp_unwind$b_flags #define dmp_unwind$v_not_here dmp_unwind$r_flags_overlay.dmp_unwind$r_flags_bits.dmp_unwind$v_not_here #define dmp_unwind$v_separate dmp_unwind$r_flags_overlay.dmp_unwind$r_flags_bits.dmp_unwind$v_separate #endif /* #if !defined(__VAXC) */ #pragma __required_pointer_size __save #pragma __required_pointer_size __long typedef DMP_DISK_DATA * DMP_DISK_DATA_PQ; typedef DMP_DISK_DATA ** DMP_DISK_DATA_PPQ; typedef DMP_FILE_DATA * DMP_FILE_DATA_PQ; typedef DMP_FILE_DATA ** DMP_FILE_DATA_PPQ; typedef DMP_CODE_DATA * DMP_CODE_DATA_PQ; typedef DMP_CODE_DATA ** DMP_CODE_DATA_PPQ; typedef DMP_UNWIND_DATA * DMP_UNWIND_DATA_PQ; typedef DMP_UNWIND_DATA ** DMP_UNWIND_DATA_PPQ; #pragma __required_pointer_size __restore /* Verified for x86 port - Richard Bishop */ #define DMP$K_PT_MODE 0 /* Page table mode (-1 if not PT VA) */ #define DMP$K_PT_LEVEL 1 /* Page table level (-1 if not PT VA) */ #define DMP$K_IS_VALID_VA 2 /* Valid VA? (not in the gap) */ #define DMP$K_IS_PROCESS_VA 3 /* Process VA? (includes private PT pages) */ #define DMP$K_IS_PT_VA 4 /* Page table VA? (regardless of ownership) */ #define DMP$K_IS_SYSTEM_VA 5 /* System VA? (includes shared PT pages) */ #define DMP$K_IS_SELFMAP_VA 6 /* VA in the top-level PTE? */ #define DMP$K_IS_SELFMAP_PAIR 7 /* Is VA in one of the selfmap pair of pages? */ #define DMP$K_IS_SELFMAP_PTE 8 /* Is VA below/in/above the selfmap PTE for its mode? */ #define DMP_PERF$K_PERF_HEADER_LENGTH 24 typedef struct _dmp_perf_header { unsigned short int dmp_perf$w_elapsed_start; /* Offset to the DMP_PERF_ELAPSED structure */ unsigned short int dmp_perf$w_elapsed_length; /* Length of the DMP_PERF_ELAPSED structure */ unsigned short int dmp_perf$w_system_start; /* Offset to the DMP_PERF_SYSTEM structure */ unsigned short int dmp_perf$w_system_length; /* Length of the DMP_PERF_SYSTEM structure */ unsigned short int dmp_perf$w_system_count; /* Count of DMP_PERF_SYSTEM structures (should be 2 = initial+final) */ unsigned short int dmp_perf$w_cpu_start; /* Offset to first DMP_PERF_CPU structure */ unsigned short int dmp_perf$w_cpu_length; /* Length of a DMP_PERF_CPU structure */ unsigned short int dmp_perf$w_cpu_count; /* Count of DMP_PERF_CPU structures */ unsigned short int dmp_perf$w_process_start; /* Offset to first DMP_PERF_PROCESS structure */ unsigned short int dmp_perf$w_process_length; /* Length of a DMP_PERF_PROCESS structure */ unsigned short int dmp_perf$w_process_count; /* Count of DMP_PERF_PROCESS structures */ char dmp_perf$t_perf_header_align [2]; /* filler to quadword */ } DMP_PERF_HEADER; #define DMP_PERF$K_PERF_ELAPSED_LENGTH 32 typedef struct _dmp_perf_elapsed { __int64 dmp_perf$q_init_time; /* Negative delta time between crash and start of memory dump */ __int64 dmp_perf$q_dump_time; /* Negative delta time actually writing the memory dump */ /* CONFIG_TIME (ILV only) is not recorded... It can be derived using (DUMP_TIME - STAGE1_TIME - STAGE2_TIME). */ /* CONFIG_TIME is the time taken to determine the available CPUs and the list of LMBs to be dumped. */ __int64 dmp_perf$q_stage1_time; /* (ILV only) Time taken to determine page ranges to be dumped */ __int64 dmp_perf$q_stage2_time; /* (ILV only) Time taken to compress and write memory contents */ } DMP_PERF_ELAPSED; #define DMP_PERF$K_PERF_SYSTEM_LENGTH 32 typedef struct _dmp_perf_system { __int64 dmp_perf$q_system_uptime; /* Negative delta time since boot (100ns intervals) */ unsigned int dmp_perf$l_total_memory; /* Memory data returned by $GETSYI/SYI$_MAIN_MEMORY */ unsigned int dmp_perf$l_free_memory; unsigned int dmp_perf$l_used_memory; unsigned int dmp_perf$l_modified_memory; unsigned int dmp_perf$l_peak_npagedyn; /* Peak usage of NPAGEDYN */ unsigned int dmp_perf$l_peak_locks; /* Peak number of locks */ } DMP_PERF_SYSTEM; #define DMP_PERF$K_PERF_CPU_LENGTH 64 typedef struct _dmp_perf_cpu { unsigned int dmp_perf$l_cpu_id; /* CPU ID */ __union { __int64 dmp_perf$q_cpu_mode_times [7]; /* Per-mode CPU times collected from each CPUdb */ __struct { /* Saved as negative delta time (100ns intervals) */ __int64 dmp_perf$q_cpu_kernel; __int64 dmp_perf$q_cpu_exec; __int64 dmp_perf$q_cpu_super; __int64 dmp_perf$q_cpu_user; __int64 dmp_perf$q_cpu_interrupt; __int64 dmp_perf$q_cpu_mpsynch; __int64 dmp_perf$q_cpu_idle; } dmp_perf$r_cpu_times_struct; } dmp_perf$r_cpu_times_union; char dmp_perf$t_perf_cpu_align [4]; /* filler to quadword */ } DMP_PERF_CPU; #if !defined(__VAXC) #define dmp_perf$q_cpu_mode_times dmp_perf$r_cpu_times_union.dmp_perf$q_cpu_mode_times #define dmp_perf$q_cpu_kernel dmp_perf$r_cpu_times_union.dmp_perf$r_cpu_times_struct.dmp_perf$q_cpu_kernel #define dmp_perf$q_cpu_exec dmp_perf$r_cpu_times_union.dmp_perf$r_cpu_times_struct.dmp_perf$q_cpu_exec #define dmp_perf$q_cpu_super dmp_perf$r_cpu_times_union.dmp_perf$r_cpu_times_struct.dmp_perf$q_cpu_super #define dmp_perf$q_cpu_user dmp_perf$r_cpu_times_union.dmp_perf$r_cpu_times_struct.dmp_perf$q_cpu_user #define dmp_perf$q_cpu_interrupt dmp_perf$r_cpu_times_union.dmp_perf$r_cpu_times_struct.dmp_perf$q_cpu_interrupt #define dmp_perf$q_cpu_mpsynch dmp_perf$r_cpu_times_union.dmp_perf$r_cpu_times_struct.dmp_perf$q_cpu_mpsynch #define dmp_perf$q_cpu_idle dmp_perf$r_cpu_times_union.dmp_perf$r_cpu_times_struct.dmp_perf$q_cpu_idle #endif /* #if !defined(__VAXC) */ #define DMP_PERF$K_PERF_PROCESS_LENGTH 64 typedef struct _dmp_perf_process { char dmp_perf$t_proc_name [16]; /* Process name (ASCIZ) */ __int64 dmp_perf$q_proc_elapsed; /* Negative delta time (100ns intervals) */ __int64 dmp_perf$q_proc_cputime; /* Negative delta time (100ns intervals) */ unsigned int dmp_perf$l_proc_bufio; unsigned int dmp_perf$l_proc_dirio; unsigned int dmp_perf$l_proc_pgflts; unsigned int dmp_perf$l_proc_ppgcnt; /* Not available from term mailbox, set to -1 */ unsigned int dmp_perf$l_proc_gpgcnt; /* Not available from term mailbox, set to -1 */ unsigned int dmp_perf$l_proc_wspeak; unsigned __int64 dmp_perf$q_proc_virtpeak; /* Not available from term mailbox, set to -1 */ } DMP_PERF_PROCESS; #pragma __required_pointer_size __save #pragma __required_pointer_size __long typedef DMP_PERF_HEADER * DMP_PERF_HEADER_PQ; typedef DMP_PERF_HEADER ** DMP_PERF_HEADER_PPQ; typedef DMP_PERF_SYSTEM * DMP_PERF_SYSTEM_PQ; typedef DMP_PERF_SYSTEM ** DMP_PERF_SYSTEM_PPQ; typedef DMP_PERF_CPU * DMP_PERF_CPU_PQ; typedef DMP_PERF_CPU ** DMP_PERF_CPU_PPQ; typedef DMP_PERF_PROCESS * DMP_PERF_PROCESS_PQ; typedef DMP_PERF_PROCESS ** DMP_PERF_PROCESS_PPQ; #pragma __required_pointer_size __restore #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 /* __DMPDEF_LOADED */