/***************************************************************************/ /** **/ /** 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: 19-OCT-2022 11:26:01 $1$DGA8345:[LIB_H.SRC]PFNDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $PFNDEF ***/ #ifndef __PFNDEF_LOADED #define __PFNDEF_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 /* Define the SHM_ID type; PFN contains embedded SHM_ID types */ /*+ */ /* PFN memory data structure definition. This structure is used to access the */ /* fields within the PFN memory maps. In Galaxy systems, there is a PFN */ /* memory map for I/O space, private and shared memory. */ /* */ /* In non-Galaxy systems, there is only a PFN memory map for private memory. */ /* */ /*- */ /* Verified for x86 port--Drew Mason */ #define PMAP$M_CONSOLE 0x1 #define PMAP$M_OPENVMS 0x2 #define PMAP$M_AVAILABLE 0x4 #define PMAP$M_UNDEFINED_3_4 0x18 #define PMAP$M_MEMORY_DISK 0x20 #define PMAP$M_UEFI_PAGE_TABLE 0x40 #define PMAP$M_KERNEL_BASE 0x80 #define PMAP$M_HWRPB 0x100 #define PMAP$M_UNDEFINED_9_15 0xFE00 #define PMAP$C_LENGTH 32 /* Length of PMAP */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #else #pragma __nomember_alignment #endif typedef struct _pmap { /* 32-byte alignment */ #pragma __nomember_alignment unsigned __int64 pmap$iq_start_pfn; unsigned __int64 pmap$iq_pfn_count; unsigned __int64 pmap$iq_memory_attribute; unsigned int pmap$l_memory_type; unsigned short int pmap$w_rad; __union { unsigned short int pmap$w_flags; __struct { unsigned pmap$v_console : 1; unsigned pmap$v_openvms : 1; unsigned pmap$v_available : 1; unsigned pmap$v_undefined_3_4 : 2; unsigned pmap$v_memory_disk : 1; /* boot memory disk, console bit also set */ unsigned pmap$v_uefi_page_table : 1; /* console bit also set */ unsigned pmap$v_kernel_base : 1; /* console bit also set */ unsigned pmap$v_hwrpb : 1; /* console bit also set */ unsigned pmap$v_undefined_9_15 : 7; } pmap$r_flag_bits; } pmap$r_flags_overlay; } PMAP; #if !defined(__VAXC) #define pmap$w_flags pmap$r_flags_overlay.pmap$w_flags #define pmap$v_console pmap$r_flags_overlay.pmap$r_flag_bits.pmap$v_console #define pmap$v_openvms pmap$r_flags_overlay.pmap$r_flag_bits.pmap$v_openvms #define pmap$v_available pmap$r_flags_overlay.pmap$r_flag_bits.pmap$v_available #define pmap$v_memory_disk pmap$r_flags_overlay.pmap$r_flag_bits.pmap$v_memory_disk #define pmap$v_uefi_page_table pmap$r_flags_overlay.pmap$r_flag_bits.pmap$v_uefi_page_table #define pmap$v_kernel_base pmap$r_flags_overlay.pmap$r_flag_bits.pmap$v_kernel_base #define pmap$v_hwrpb pmap$r_flags_overlay.pmap$r_flag_bits.pmap$v_hwrpb #endif /* #if !defined(__VAXC) */ /*+ */ /* In Galaxy shared memory, PLNKs are used as the structure that links PFN */ /* database entries in the free page list (and other lists). */ /* */ /*- */ /* Verified for x86 port - Clair Grant */ #define PLNK$C_LENGTH 16 /* Length of PLNK */ #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 _plnk { #pragma __nomember_alignment __union { __struct { unsigned __int64 plnk$i_next_pfn; /* Next PFN in this list, -1 terminates list */ unsigned __int64 plnk$i_pfn_count; /* Number of PFNs in this cluster */ } plnk$r_plnk_i_quadwords; } plnk$r_link_union; } PLNK; #if !defined(__VAXC) #define plnk$r_plnk_i_quadwords plnk$r_link_union.plnk$r_plnk_i_quadwords #define plnk$i_next_pfn plnk$r_plnk_i_quadwords.plnk$i_next_pfn #define plnk$i_pfn_count plnk$r_plnk_i_quadwords.plnk$i_pfn_count #endif /* #if !defined(__VAXC) */ /*+ */ /* PFN Data Base Definitions */ /*- */ /* */ /* Define the PFN database record offsets. */ /* */ /* XDELTA provides embedded command strings for displaying the PFN database records. Any */ /* change to the PFN database record here must be implemented in the XDELTA command strings */ /* as well to avoid breaking them. */ /* */ #define PFN$M_PAGTYP 0x7 #define PFN$M_LOC 0xF0 #define PFN$M_BUFOBJ 0x100 #define PFN$M_COLLISION 0x200 #define PFN$M_BADPAG 0x400 #define PFN$M_RPTEVT 0x800 #define PFN$M_DELCON 0x1000 #define PFN$M_MODIFY 0x2000 #define PFN$M_UNAVAILABLE 0x4000 #define PFN$M_SWPPAG_VALID 0x8000 #define PFN$M_TOP_LEVEL_PT 0x10000 #define PFN$M_SLOT 0x20000 #define PFN$M_SHARED 0x40000 #define PFN$M_ZEROED 0x80000 #define PFN$M_OUTER_MODE_BPT 0x100000 #define PFN$M_BIG_PAGE_PTE 0x200000 #define PFN$M_PAGE_SIZE 0xC00000 #define PFN$M_GHOST_ENTRY 0x1000000 #define PFN$M_PTE_INDEX1 0x7FFFFFFFFFFF #define PFN$M_VRNX 0x800000000000 #define PFN$S_VRNX_WIDTH 1 #define PFN$S_INDEX_WIDTH 47 #define PFN$M_GBLBAK 0x2 #define PFN$M_TYP0 0x100000000000000 #define PFN$M_PARTIAL_SECTION 0x200000000000000 #define PFN$M_STX 0xFFFF000 #define PFN$M_CRF 0x10000000 #define PFN$M_DZRO 0x20000000 #define PFN$M_WRT 0x40000000 #define PFN$M_STX_HIBIT 0x80000000 #define PFN$M_PGFLPAG 0xFFFFFF000 #define PFN$M_PGFLX 0xFF000000000 #define PFN$M_PGFLMAP 0xFFFFFFFF000 #define PFN$M_BAKX 0xFFFFFFFFFF000 #define PFN$M_GPTX 0xFFFFFFFF000 #define PFN$C_ENTRY_SIZE 64 /* */ #define PFN$C_FREPAGLST 0 /* On FREE page list */ #define PFN$C_MFYPAGLST 1 /* On MODIFIED page list */ #define PFN$C_BADPAGLST 2 /* On BAD page list */ #define PFN$C_RELPEND 3 /* RELease PENDing */ /* (when REFCNT=0 release PFN) */ #define PFN$C_UNTESTED 3 /* On UNTESTED memory list */ #define PFN$C_RDERR 4 /* Read error while paging in */ #define PFN$C_WRTINPROG 5 /* Write in progress (by MFY PAG WRITER) */ #define PFN$C_RDINPROG 6 /* Read in progress (page in) */ #define PFN$C_ZERO_LIST 7 /* On ZEROED page list */ #define PFN$C_PRVPFN 8 /* On private PFN list */ #define PFN$C_ACTIVE 15 /* Page is ACTIVE and VALID */ /* */ #define PFN$C_PROCESS 0 /* Process page */ #define PFN$C_SYSTEM 1 /* System page */ #define PFN$C_GLOBAL 2 /* Global page (read only) */ #define PFN$C_GBLWRT 3 /* Global Writable page */ #define PFN$C_PPGTBL 4 /* Process Page Table */ #define PFN$C_GPGTBL 5 /* Global Page Table */ #define PFN$C_RESERVED 6 /* reserved */ #define PFN$C_UNKNOWN 7 /* Uninitialized db for this PFN */ #define PFN$C_PFNLST 1 /* Shared memory PFNLST page */ #define PFN$C_SHM_REG 3 /* Shared memory region page */ /* Verified for x86 port--Drew Mason */ #define PFN$C_PAGE_SIZE_8KB 0 /* PFN for 8-kB page (pair of 4-kB pages) */ #define PFN$C_PAGE_SIZE_2MB 1 /* PFN for 4-MB page */ #define PFN$C_PAGE_SIZE_4MB 1 /* PFN for 4-MB page */ #define PFN$C_PAGE_SIZE_1GB 2 /* PFN for 2-GB page */ #define PFN$C_PAGE_SIZE_2GB 2 /* PFN for 2-GB page */ #define PFN$S_PFNDEF 64 #ifdef __cplusplus /* Define structure prototypes */ struct _phd; #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 _pfn { #pragma __nomember_alignment __union { PLNK pfn$r_shm_list_link; SHM_ID pfn$r_shm_reg_id; /* Shared memory region ID */ __struct { /* Verified for x86 port - Clair Grant */ __union { unsigned __int64 pfn$i_flink; /* Forward PFN link index */ unsigned int pfn$l_shrcnt; /* Number of process PTEs mapped to global page */ } pfn$r_flink_overlay; /* Verified for x86 port - Clair Grant */ __union { unsigned __int64 pfn$i_blink; /* Backward PFN link index */ unsigned int pfn$l_wslx_qw; /* Working Set List Index for valid page, quadword index */ unsigned int pfn$l_gbl_lck_cnt; /* Count of memory locks for global page */ } pfn$r_blink_overlay; } pfn$r_flink_blink_struct; } pfn$r_flink_blink_union; __union { unsigned int pfn$l_page_state; /* Page state information */ /* */ /* VIELD definitions in PFN$AL_PAGE_STATE */ /* */ __struct { unsigned pfn$v_pagtyp : 3; /* Page type */ unsigned pfndef$$_fill_1 : 1; /* Reserved */ unsigned pfn$v_loc : 4; /* Location of page */ unsigned pfn$v_bufobj : 1; /* Set if any buffer objects reference this PFN */ unsigned pfn$v_collision : 1; /* Empty collision queue when page read complete */ unsigned pfn$v_badpag : 1; /* Bad page bit */ unsigned pfn$v_rptevt : 1; /* Report event on I/O complete */ unsigned pfn$v_delcon : 1; /* Delete PFN contents when REF=0 */ unsigned pfn$v_modify : 1; /* Modify bit, indicates page is dirty */ unsigned pfn$v_unavailable : 1; /* PFN is unavailable to software (such as for console) */ unsigned pfn$v_swppag_valid : 1; /* Set if SWPPAG contains a swap page number */ unsigned pfn$v_top_level_pt : 1; /* Denotes a page table at the highest level of translation hierarchy */ unsigned pfn$v_slot : 1; /* Donotes a page mapped into a process's balance slot */ unsigned pfn$v_shared : 1; /* Shared memory page */ unsigned pfn$v_zeroed : 1; /* SHMGS page is zeroed */ /* Verified for x86 port - Greg Jordan */ unsigned pfn$v_outer_mode_bpt : 1; /* PFN is for an outer mode Bottom PT Page */ unsigned pfn$v_big_page_pte : 1; /* PFN is for a PTE that maps a big page */ unsigned pfn$v_page_size : 2; /* Size of page represented by this entry */ /* 0 = 8 kB, 1 = 4 MB, 2 = 2 GB, 3 = Reserved */ unsigned pfn$v_ghost_entry : 1; /* PFN is part of a big page and does not really exist */ unsigned pfndef$$_fill_3 : 7; /* Reserved */ } pfn$r_pfndef_bits0; } pfn$r_page_state_overlay; /* Alpha */ /* Verified for x86 port - Clair Grant */ unsigned int pfn$l_reserved1; __union { unsigned __int64 pfn$i_pt_pfn; /* PFN of the PT that contains the PTE that maps target PFN */ unsigned int pfn$l_shm_cpp_id; /* SHM_CPP id that this page belongs to (if shared memory) */ } pfn$r_pt_pfn_overlay; /* IA64 */ /* X86 VRNX width is 1 */ /* IA64 */ __union { unsigned __int64 pfn$q_pte_index; /* Container QW for the PTE index, vrnx, and refcnt */ /* PTE Index must occupies low 48 bits of this QW */ __struct { #if defined(__VAXC) unsigned pfn$v_pte_index1_1 : 32; unsigned pfn$v_pte_index1_2 : 15; #else unsigned __int64 pfn$v_pte_index1 : 47; /* PTE Index */ #endif unsigned pfn$v_vrnx : 1; /* Virtual address space number */ short int pfn$w_refcnt; /* Number of references to this PFN's contents */ /* Must be SIGNED so that the decref macro in */ /* pfn_macros.h works properly */ } pfn$r_refcnt1_overlay; } pfn$r_pte_index_overlay; __union { unsigned __int64 pfn$q_bak; /* Backing store address for this page */ struct _phd *pfn$l_phd; /* PHD VA (L1PT PFN only) */ /* Verified for x86 port - Clair Grant */ unsigned __int64 pfn$i_color_flink; /* Forward PFN link for page's color list */ __struct { unsigned pfn$v_fill_5 : 1; unsigned pfn$v_gblbak : 1; /* Global backing store address (GPTX form) */ unsigned pfn$v_fill_6_1 : 32; unsigned pfn$v_fill_6_2 : 22; unsigned pfn$v_typ0 : 1; /* Backing store in section (not pagefile) */ unsigned pfn$v_partial_section : 1; /* Page only partially maps a section */ unsigned pfn$v_fill_0_ : 6; } pfn$r_pfndef_bits2; __struct { unsigned pfn$v_fill_13 : 12; /* [0-11] skip to PFN field */ unsigned pfn$v_stx : 16; /* Section Table Index */ unsigned pfn$v_crf : 1; /* Copy on Reference */ unsigned pfn$v_dzro : 1; /* Demand Zero */ unsigned pfn$v_wrt : 1; /* Section file accessed for write */ unsigned pfn$v_stx_hibit : 1; } pfn$r_bak_stx; __struct { unsigned pfn$v_fill_9 : 12; /* [0-11] skip to PGFLPAG field */ unsigned pfn$v_pgflpag : 24; /* Page file page (not a VBN) */ unsigned pfn$v_pgflx : 8; /* SYSTEM page file index */ unsigned pfn$v_fill_1_ : 4; } pfn$r_bak_pgfl; __struct { unsigned pfn$v_fill_10 : 12; /* [0-11] skip to PGFLMAP field */ unsigned pfn$v_pgflmap : 32; /* PGFLPAG/PGFLX combination */ unsigned pfn$v_fill_2_ : 4; } pfn$r_bak_pgflmap; __struct { unsigned pfn$v_fill_11 : 12; /* [0-11] skip to PFN field */ #if defined(__VAXC) unsigned pfn$v_bakx_1 : 32; unsigned pfn$v_bakx_2 : 8; #else unsigned __int64 pfn$v_bakx : 40; /* Backup Address (uninterpreted) */ #endif unsigned pfn$v_fill_3_ : 4; } pfn$r_bakx_bits; __struct { unsigned pfn$v_fill_12 : 12; /* [0-11] skip to GPTX field */ unsigned pfn$v_gptx : 32; /* Global Page Table Index */ unsigned pfn$v_fill_4_ : 4; } pfn$r_bak_gptx; unsigned __int64 pfn$q_bak_prvpfn; /* Pointer to "owning" private list of (free) PFNs */ } pfn$r_bak_overlay; /* Verified for x86 port - Clair Grant */ __union { unsigned __int64 pfn$i_color_blink; /* Backward PFN link for page's color list */ unsigned __int64 pfn$i_top_pt; /* Top level Page Table (for PROCESS PFNs) */ } pfn$r_color_blink_union; __union { unsigned short int pfn$w_swppag; /* Page number in swap area to receive this page */ unsigned short int pfn$w_bo_refc; /* Buffer Object reference count (no swap possible) */ unsigned short int pfn$w_io_sts; } pfn$r_swppag_overlay; unsigned short int pfn$w_pt_val_cnt; unsigned short int pfn$w_pt_lck_cnt; unsigned short int pfn$w_pt_win_cnt; /* Location VIELD values */ /* */ /* Page Type VIELD definitions */ /* */ } PFN; #if !defined(__VAXC) #define pfn$r_shm_list_link pfn$r_flink_blink_union.pfn$r_shm_list_link #define pfn$r_shm_reg_id pfn$r_flink_blink_union.pfn$r_shm_reg_id #define pfn$i_flink pfn$r_flink_blink_union.pfn$r_flink_blink_struct.pfn$r_flink_overlay.pfn$i_flink #define pfn$l_shrcnt pfn$r_flink_blink_union.pfn$r_flink_blink_struct.pfn$r_flink_overlay.pfn$l_shrcnt #define pfn$i_blink pfn$r_flink_blink_union.pfn$r_flink_blink_struct.pfn$r_blink_overlay.pfn$i_blink #define pfn$l_wslx_qw pfn$r_flink_blink_union.pfn$r_flink_blink_struct.pfn$r_blink_overlay.pfn$l_wslx_qw #define pfn$l_gbl_lck_cnt pfn$r_flink_blink_union.pfn$r_flink_blink_struct.pfn$r_blink_overlay.pfn$l_gbl_lck_cnt #define pfn$l_page_state pfn$r_page_state_overlay.pfn$l_page_state #define pfn$v_pagtyp pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_pagtyp #define pfn$v_loc pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_loc #define pfn$v_bufobj pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_bufobj #define pfn$v_collision pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_collision #define pfn$v_badpag pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_badpag #define pfn$v_rptevt pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_rptevt #define pfn$v_delcon pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_delcon #define pfn$v_modify pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_modify #define pfn$v_unavailable pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_unavailable #define pfn$v_swppag_valid pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_swppag_valid #define pfn$v_top_level_pt pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_top_level_pt #define pfn$v_slot pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_slot #define pfn$v_shared pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_shared #define pfn$v_zeroed pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_zeroed #define pfn$v_outer_mode_bpt pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_outer_mode_bpt #define pfn$v_big_page_pte pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_big_page_pte #define pfn$v_page_size pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_page_size #define pfn$v_ghost_entry pfn$r_page_state_overlay.pfn$r_pfndef_bits0.pfn$v_ghost_entry #define pfn$i_pt_pfn pfn$r_pt_pfn_overlay.pfn$i_pt_pfn #define pfn$l_shm_cpp_id pfn$r_pt_pfn_overlay.pfn$l_shm_cpp_id #define pfn$q_pte_index pfn$r_pte_index_overlay.pfn$q_pte_index #define pfn$v_pte_index1 pfn$r_pte_index_overlay.pfn$r_refcnt1_overlay.pfn$v_pte_index1 #define pfn$v_vrnx pfn$r_pte_index_overlay.pfn$r_refcnt1_overlay.pfn$v_vrnx #define pfn$w_refcnt pfn$r_pte_index_overlay.pfn$r_refcnt1_overlay.pfn$w_refcnt #define pfn$q_bak pfn$r_bak_overlay.pfn$q_bak #define pfn$l_phd pfn$r_bak_overlay.pfn$l_phd #define pfn$i_color_flink pfn$r_bak_overlay.pfn$i_color_flink #define pfn$v_gblbak pfn$r_bak_overlay.pfn$r_pfndef_bits2.pfn$v_gblbak #define pfn$v_typ0 pfn$r_bak_overlay.pfn$r_pfndef_bits2.pfn$v_typ0 #define pfn$v_partial_section pfn$r_bak_overlay.pfn$r_pfndef_bits2.pfn$v_partial_section #define pfn$v_stx pfn$r_bak_overlay.pfn$r_bak_stx.pfn$v_stx #define pfn$v_crf pfn$r_bak_overlay.pfn$r_bak_stx.pfn$v_crf #define pfn$v_dzro pfn$r_bak_overlay.pfn$r_bak_stx.pfn$v_dzro #define pfn$v_wrt pfn$r_bak_overlay.pfn$r_bak_stx.pfn$v_wrt #define pfn$v_stx_hibit pfn$r_bak_overlay.pfn$r_bak_stx.pfn$v_stx_hibit #define pfn$v_pgflpag pfn$r_bak_overlay.pfn$r_bak_pgfl.pfn$v_pgflpag #define pfn$v_pgflx pfn$r_bak_overlay.pfn$r_bak_pgfl.pfn$v_pgflx #define pfn$v_pgflmap pfn$r_bak_overlay.pfn$r_bak_pgflmap.pfn$v_pgflmap #define pfn$v_bakx pfn$r_bak_overlay.pfn$r_bakx_bits.pfn$v_bakx #define pfn$v_gptx pfn$r_bak_overlay.pfn$r_bak_gptx.pfn$v_gptx #define pfn$q_bak_prvpfn pfn$r_bak_overlay.pfn$q_bak_prvpfn #define pfn$i_color_blink pfn$r_color_blink_union.pfn$i_color_blink #define pfn$i_top_pt pfn$r_color_blink_union.pfn$i_top_pt #define pfn$w_swppag pfn$r_swppag_overlay.pfn$w_swppag #define pfn$w_bo_refc pfn$r_swppag_overlay.pfn$w_bo_refc #define pfn$w_io_sts pfn$r_swppag_overlay.pfn$w_io_sts #endif /* #if !defined(__VAXC) */ /* PRVPFN - head of a private list of free PFNs */ #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 _prvpfn { #pragma __nomember_alignment struct _prvpfn *prvpfn$l_sqfl; /* PRVPFN queue flink */ struct _prvpfn *prvpfn$l_sqbl; /* PRVPFN queue blink */ unsigned short int prvpfn$w_size; /* structure size */ unsigned char prvpfn$b_type; /* structure type code (MISC) */ unsigned char prvpfn$b_subtype; /* structure type subcode (PRVPFN) */ /* Verified for x86 port - Clair Grant */ unsigned int prvpfn$l_rsrvd; /* Filler for alignment */ unsigned __int64 prvpfn$i_count; /* number of elements in list */ /* Verified for x86 port - Clair Grant */ unsigned __int64 prvpfn$i_head; /* PFN of first element in queue */ /* Verified for x86 port - Clair Grant */ unsigned __int64 prvpfn$i_tail; /* PFN of last element in queue */ unsigned int prvpfn$l_reclaimable; /* # PFNs attributed to this list */ unsigned int prvpfn$l_reclaimed; /* # PFNs reclaimed but not yet returned */ int prvpfn$l_priority; /* priority of elements on this list */ void (*prvpfn$a_callback)(); /* callback routine */ } PRVPFN; #define PRVPFN$K_LENGTH 56 /* length of block */ #define PRVPFN$C_LENGTH 56 /* length of block */ #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __save /* Save current pointer size */ #pragma __required_pointer_size __long /* Pointers are 64-bit */ typedef PFN * PFN_PQ; /* Long pointer to a PFN structure. */ typedef PFN ** PFN_PPQ; /* Long pointer to a pointer to a PFN structure. */ typedef PRVPFN * PRVPFN_PQ; /* Long pointer to a PRVPFN structure. */ typedef PRVPFN ** PRVPFN_PPQ; /* Long pointer to a pointer to a PRVPFN structure. */ typedef PMAP * PMAP_PQ; /* Long pointer to a PMAP structure */ typedef PMAP ** PMAP_PPQ; /* Long pointer to a pointer to a PMAP structure */ typedef PLNK * PLNK_PQ; /* Long pointer to a PLNK structure */ #pragma __required_pointer_size __short /* Pointers are 32-bit */ typedef PFN * PFN_PL; /* Short pointer to a PFN structure. */ typedef PFN ** PFN_PPL; /* Short pointer to a pointer to a PFN structure. */ typedef PRVPFN * PRVPFN_PL; /* Short pointer to a PRVPFN structure. */ typedef PRVPFN ** PRVPFN_PPL; /* Short pointer to a pointer to a PRVPFN structure. */ typedef PMAP * PMAP_PL; /* Short pointer to a PMAP structure */ typedef PMAP ** PMAP_PPL; /* Short pointer to a pointer to a PMAP structure */ typedef PLNK * PLNK_PL; /* Short pointer to a PLNK structure */ #pragma __required_pointer_size __restore /* Return to previous pointer size */ #else typedef unsigned __int64 PFN_PQ; typedef unsigned __int64 PFN_PPQ; typedef unsigned __int64 PRVPFN_PQ; typedef unsigned __int64 PRVPFN_PPQ; typedef unsigned __int64 PMAP_PQ; typedef unsigned __int64 PMAP_PPQ; typedef unsigned __int64 PLNK_PQ; typedef unsigned __int32 PFN_PL; typedef unsigned __int32 PFN_PPL; typedef unsigned __int32 PRVPFN_PL; typedef unsigned __int32 PRVPFN_PPL; typedef unsigned __int32 PMAP_PL; typedef unsigned __int32 PMAP_PPL; typedef unsigned __int32 PLNK_PL; #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 /* __PFNDEF_LOADED */