#ifndef __MMG_ROUTINES_LOADED #define __MMG_ROUTINES_LOADED 1 /* module MMG_ROUTINES.H "X-89" * ************************************************************************* * * * © Copyright 1994, 2008 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. * * * ************************************************************************* * *++ * * FACILITY: * * VMS Executive (LIB_H) * * ABSTRACT: * * This module contains the C function prototypes for the VMS system * routines that begin with the MMG$ and MMG_STD$ prefixes and have * a standard call interface. * * NOTE: * * The conventions used in these function prototypes are: * * 1. Case * This header file supports invoking the routines by either using all * lowercase or all uppercase names for the system routines. Either * naming convention works even in the presence of the /NAME=AS_IS * compiler switch. * * 2. Integer size * The generic "int" type is used where it doesn't matter whether the * integer is 32 or 64 bits wide. Thus "int" is the returned value of * most functions and is the type for most integers passed by value. * However, an unambiguous integer type, e.g. int32, is used for any * integer that is passed by reference. Also, int64 is used for any * integer that is expected to be 64 bits wide even if it is passed by * value. * * 3. Types * The function prototypes use the types defined in [SYSLIB]SYS$LIB_C.TLB. * The definitions of all types used are included below. * * 4. Parameter names * Parameter names are used in the prototypes. Although they are ignored * by the compiler they do provide useful documentation. For example: * * void ioc_std$reqcom (int iost1, int iost2, UCB *ucb); * * is used instead of the functionally equivalent: * * void ioc_std$reqcom (int, int, UCB *); * * 5. Parameters passed by reference * The parameter name includes the "_p" suffix if the parameter is passed * by reference unless the parameter type implies that it is always passed * by reference. For example, there is no "_p" suffix in: * * UCB *ucb; * int32 iosb[2]; * * since structures and arrays are always passed by reference. However: * * int32 *outlen_p; * UCB **new_ucb_p; * * include the suffix to denote that outlen_p is a pointer to a 32 bit * integer, and to denote that new_ucb_p is a pointer to a pointer to a * UCB structure. * * 6. Mixed pointer sizes within one argument * If a 64-bit pointer is being passed by reference, the reference to * the pointer should also be 64 bits wide to avoid confusion. * For example: * * PTE_PPQ va_pte_p; * VOID_PPQ start_va_p; * * should be used instead of: * * PTE_PQ *va_pte_p; * VOID_PQ *start_va_p; * * AUTHOR: * * Leonard S. Szubowicz * * CREATION DATE: 9-Jun-1993 * * MODIFICATION HISTORY: * * X-89 GHJ Gregory H. Jordan 10-Feb-2009 * The routine mmg$create_vhpt no longe has an input * parameter. * * X-88 RAB Richard A. Bishop 30-Oct-2008 * Tweak to previous. The two routines must pass PFN * back via PFN_T* instead of uint64* so they can be used * transparently on Alpha. * * X-87 RAB Richard A. Bishop 23-Oct-2008 * Add variants of MMG$ALLOC_SVA_MAP & MMG$ALLOC_PFN_MAP_SVA * that will output a 64-bit PFN (MMG$ALLOC_SVA_MAP_64 & * MMG$ALLOC_PFN_64_MAP_SVA). Fix comments describing * optional arguments to MMG_STD$ALLOC_SYSTEM_VA_MAP & * MMG_STD$ALLOC_PFN_MAP_SYSTEM_VA. Remove definition of * MMG_STD$ALLOC_CTG_PFN_MAP_SVA, it is private to * [SYS]SYSVA_ALLOC.C. * * X-86 KLN3450 Karen L. Noel 5-Mar-2004 * Use vms$defs.h. * * X-85 Andy Kuehnel 1-Mar-2004 * More (final ?) changes to interfaces of new mmg$alloc... routines. * * X-84 Andy Kuehnel 27-Feb-2004 * Tweak mmg$alloc_pfn_map interface. * * X-83 Andy Kuehnel 20-Feb-2004 * - Add optional page_prot to mmg_std$setsecprotown_64. * - Change to parameters for mmg$allocate_contig_pfns and friends * * X-82 Clair Grant 19-Feb-2004 * Replace arch_defs.h with vms$defs.h and add temporary * definition here until the build mechanism is in place. * * X-81 KLN3436 Karen L. Noel 13-Feb-2004 * Fix typo. * * X-80 Clair Grant Friday the 13th-Feb-2004 * Add new routines for expanded PFNs. * * X-79 KLN3420 Karen L. Noel 6-Feb-2004 * Use PFN_T type. * * X-78 KLN3410 Karen L. Noel 12-Jan-2004 * Promote some PFNs to 64-bit. * * X-77 KLN3351 Karen L. Noel 10-Sep-2003 * Add more VHPT routines. * * X-76 KLN3343 Karen L. Noel 2-Sep-2003 * Add mmg$invalidate_vhpt* routines. * * X-75 KLN3322 Karen L. Noel 28-Jul-2003 * Add mmg$setup_tr and mmg$create_vhpt. * * X-74 KLN3290 Karen L. Noel 10-Jul-2003 * Add mmg$lkwset_int and mmg$lock_linker_data. * Add mmg$invo_context* routines. * * X-73 KLN3280 Karen L. Noel 1-May-2003 * Add mmg$find_stack_peak. * * X-72 DAG Doug Gordon 17-Oct-2002 * Add mmg_std$alloc_stack_va_map. * * X-71 KLN Karen L. Noel 22-May-2002 * Fold from Ruby * X-67A1 KLN3061 Karen L. Noel 10-May-2002 * Add mmg$alloc_contig_range. * * X-70 Andy Kuehnel 7-May-2002 * Add prototype for mmg_std$ins_pfnt_64 now that it's * being used. * * X-69 KLN3060 Karen L. Noel 25-Apr-2002 * Add declarations for mmg_std$alcstx and mmg_std$dalcstx. * * X-68 KLN3031 Karen L. Noel 05-Mar-2002 * Add mmg$check_va_access. * * X-67 KLN2213 Karen L. Noel 08-Mar-2001 * Add mmg$update_sysptbr. * * X-66 WBF Burns Fisher 26-Jan-2001 * Add ifdef to inhibit new proto in function definition * (required because of the way we do optional args) * * X-65 WBF Burns Fisher 26-Jan-2001 * Add proto for mmg_std$alloc_ctg_pfn_map_sva * * X-64 KLN2172 Karen L. Noel 29-Mar-2000 * Add proto for mmg$va_to_rad. * * X-63 Andy Kuehnel 23-Mar-2000 * Allow optional start_pfn argument in mmg_std$return_res_mem. * * X-62 KLN2118 Karen L. Noel 09-Dec-1999 * NUMA is now RAD (Resource Affinity Domain). * * X-61 KLN2117 Karen L. Noel 24-Nov-1999 * Add color PFN allocation routine declarations. * * X-60 RAB Richard A. Bishop 29-Oct-1998 * Add MMG$MEM_CONFIG_INFO and MMG$MEM_CONFIG_PFN. * They used to be GLX$* in GLX_ROUTINES.H. * * X-59 KLN2082 Karen L. Noel 04-Jun-1998 * Surround this file with short pointer pragmas in case someone * wants to compile with long pointers from the command line. * * X-58 KLN2077 Karen L. Noel 20-May-1998 * o Add void to prototypes that have no arguments so that * level 4 checking can be used with the C compiler. * o Add prototype for mmg$pfncheck_range. * * X-57 EMB Ellen M. Batbouta 26-Feb-1998 * Add Mmg$ptecheckw_process_ast. * * X-56 KLN2052 Karen L. Noel 12-Feb-1998 * Add PTE/PFN checking routines. * * X-55 Andy Kuehnel 15-Sep-1997 * mmg_std$global_fast_map_64 does return a status. * * X-54 Andy Kuehnel 20-Jun-1997 * Fix a build bug: the struct name for private PFN lists * conflicts with existing private definitions in other * facilities. * * X-53 Andy Kuehnel 16-Jun-1997 * More XFC infrastructure. * - The following routines were eliminated after a major * re-design: * mmg_std$fluid_increase * mmg_std$fluid_decrease * mmg_std$alloc_freepte * mmg_std$dealloc_freepte * - The call interface for mmg_std$establish_freepte_list * changed. * - The following routines were added: * mmg_std$insque_free_pte * mmg_std$remque_free_pte * * X-52 Andy Kuehnel 12-Jun-1997 * MMG_STD$MAP_PFNS is MMG_STD$MAP_PFNS_GH to satify the latest * review comments. * * X-51 Andy Kuehnel 22-May-1997 * Replace MMG_STD$UNMAP_PFNS with MMG_STD$ALLOC_MAP_PFNS * * X-50 Andy Kuehnel 30-Jan-1997 * (Don't know what happened to X-49; VDE expects X-50.) * Allow an additional optional flags argument in * mmg_std$ref_bufobj to support buffer objects without * associated system space. * * X-48 EMB Ellen M. Batbouta 21-Oct-1996 * Fix build bug introduced with previous edit. * * X-47 EMB Ellen M. Batbouta 18-Oct-1996 * Add mmg_std$rem_pfnh_64 and mmg$compute_mem_checksum. * * X-46 EMB Ellen M. Batbouta 06-Sep-1996 * Add mmg$test_page. * * X-45 NYK661 Nitin Y. Karkhanis 29-Aug-1996 * Add mmg_std$create_shpt_mapping_64, mmg_std$delete_pts, and * mmg_std$delete_private_l3pt. * * X-44 KLN1572 Karen L. Noel 6-Aug-1996 * Add return status to mmg_std$return_res_mem * * X-43 NYK647 Nitin Y. Karkhanis 30-Jul-1996 * o Add prototype for mmg_std$ins_pfnh_64. * o Change type of copy_address in mmg_std$copy_rmd to * RMD * for Dave Wall. * * X-42 DFW0274 David F. Wall 23-Jul-1996 * Add prototype for MMG_STD$COPY_RMD. * * X-41 KLN1570 Karen L. Noel 18-Jul-1996 * Fix protos for TBI_DATA routines. The call entry points * are the _std routines. * * X-40 KLN1553 Karen L. Noel 17-Jun-1996 * Move RES_MEM* flags to mmgdef.sdl * * X-39 KLN1550 Karen L. Noel 29-May-1996 * o Add mmg_std$add_pt_win_cnt prototype * o Add mmg_flags argument to mmg_std$try_all_64 and * mmg_std$derive_granhint_64 * * X-38 KLN1548 Karen L. Noel 24-May-1996 * o One more interface change to reserved memory routines. * o Change name of mmg_std$gpfile_gste_64 to * mmg_std$gdzro_gste_64 * * X-37 KLN1547 Karen L. Noel 7-May-1996 * Refine reserved memory routine interfaces based on * changes to functional specification. * * X-36 KLN1545 Karen L. Noel 22-Apr-1996 * Add new reserved memory routines, mmg_std$*_res_mem. * Add name argument to existing reserved memory routines. * * X-35 KLN1542 Karen L. Noel 27-Mar-1996 * o Add new MMG_STD$ALLO_CONTIG routines. * o Add new routine MMG_STD$DALLOC_CONTIG_PFN * o Add new routine MMG_STD$DALLOC_ZERO_PFN_64 * * X-34 KLN1541 Karen L. Noel 22-Mar-1996 * o Restore lost edits (whoops!). * o Add prototypes for MMG_STD$ALLO_CONTIG* routines. * o Add prototype for MMG_STD$REM_PFN_64. * * X-33 KLN1531 Karen L. Noel 16-Oct-1995 * Change name of mmg_std$gblsec_privchk to mmg_std$sec_privchk * because it now handles private sections. * * X-32 NYK494 Nitin Y. Karkhanis 4-Oct-1995 * Add MMG$ALLOC_PFN_ALGND_64, MMG$ALLOC_ZERO_ALGND_64, * MMG_STD$ALLOC_ZERO_PFN_64. * * X-31 LSS0353 Leonard S. Szubowicz 21-Jul-1995 * 64-bits: Add prototype for MMG_STD$GET_PTE_FOR_VA. * * X-30 KLN1482 Karen L. Noel 20-Jul-1995 * Make page counts 64 bits. * * X-29 KLN1478 Karen L. Noel 18-Jul-1995 * Type gs_name as VOID_PQ. * * X-28 KLN1472 Karen L. Noel 11-Jul-1995 * For mmg_std$delpag_64, make page count unsigned. * * X-27 NYK449 Nitin Y. Karkhanis 30-Jun-1995 * Add mmg_std$alloc_system_va_map, * mmg_std$alloc_pfn_map_system_va, & mmg_std$del_contents_pfn_64. * * X-26 KLN1460 Karen L. Noel 19-Jun-1995 * Add WSL address as input to mmg_std$lckulkpag. * * X-25 KLN1452 Karen L. Noel 22-May-1995 * Add routine mmg$pteref_64. * * X-23 KLN1443 Karen L. Noel 25-Apr-1995 * Add routine mmg_std$dealloc_sva. * * X-22 NYK353 Nitin Y. Karkhanis 11-Apr-1995 * MMG_STD$ALLOC_PFN and MMG_STD$DALLOC_PFN underwent interface * changes in order to support a PFN database in S2 space. "_64" * has been appended to the routine names. * * X-21 NYK342 Nitin Y. Karkhanis 6-Apr-1995 * Use long PFN database entry pointers (i.e. PFN_PQ and PFN_PPQ * instead of PFN * and PFN **). * * X-20 LSS0336 Leonard S. Szubowicz 28-Mar-1995 * 64-bits: More appropriate parameter types for mmg_std$svaptechk. * * X-19 LSS0330 Leonard S. Szubowicz 9-Mar-1995 * 64-bits: Remove mmg_std$lock_mem and mmg_std$unlock_mem * which turn out to be inappropriate for their intended use * as replacements for mmg$iolock in PROCESS_SCAN.MAR. * * X-18 LSS0328 Leonard S. Szubowicz 7-Mar-1995 * 64-bits: Add prototypes for mmg_std$lock_mem, mmg_std$ * unlock_mem; mmg_std$iounlock_buf replaces mmg_std$unlock_buf. * Remove soon-to-be-obsolete mmg_std$iolock and mmg_std$unlock. * * X-17 EMB0355 Ellen M. Batbouta 02-Mar-1995 * Add function prototypes for mmg$tbi_single_threads, mmg$tbi_ * data_64, and mmg$tbi_data_64_threads. * * X-16 KLN1378 Karen L. Noel 3-Feb-1995 * Clean up MMG prototypes so they can be used with old * or new C compiler. Add rule about mixing pointer sizes * within an argument. * * X-15 KLN1376 Karen L. Noel 1-Feb-1995 * Conditionalize GSD scan routine based on using 64-bit compiler. * * X-14 KLN1365 Karen L. Noel 18-Jan-1995 * Add prototypes for 64-bit working set service routines. * * X-13 KLN1362 Karen L. Noel 12-Jan-1995 * Fix prototype for mmg_std$gsdscan and mmg_std$chkpro_audit. * * X-12 LSS0314 Leonard S. Szubowicz 10-Jan-1995 * 64-Bits: Add function prototypes for mmg_std$iolock_buf, * mmg_std$unlock_buf, mmg_std$decptref_pfndb, mmg_std$lockpgtb_64. * * X-11 KLN1360 Karen L. Noel 5-Jan-1995 * Add mmg_std$gblsec_privchk. * * X-10 KLN1359 Karen L. Noel 3-Jan-1995 * ...more prototypes for 64-bit MMG services. * * X-9 KLN1355 Karen L. Noel 21-Dec-1994 * Add more prototypes for 64-bit MMG services. * * X-8 KLN1353 Karen L. Noel 15-Dec-1994 * Fix build bug where SECDEF isn't correct if __NEW_STARLET * is not defined. * * X-7 KLN1351 Karen L. Noel 9-Dec-1994 * Fix proto for mmg_std$try_all_64 and add more routines. * * X-6 KLN1347 Karen L. Noel 5-Dec-1994 * More 64-bit MMG routines. * * X-5 KLN1342 Karen L. Noel 28-Nov-1994 * Declare function prototypes for new 64-bit MMG routines. * * X-4 NYK099 Nitin Y. Karkhanis 3-Nov-1994 * Declare function prototypes for mmg_std$alloc_gpt and * mmg_std$dealloc_gpt. * * X-3 JCH703 John C. Hallyburton, Jr. 1-Nov-1994 * Add mmg$ref_bufobj, mmg$deref_bufobj. * * X-2 LSS0308 Leonard S. Szubowicz 5-May-1994 * Add function prototypes for mmg$tbi_all and mmg$tbi_single. * * X-1 LSS0279 Leonard S. Szubowicz 9-Jun-1993 * Initial version containing only those routines commonly used * by device drivers. * *-- */ #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 /* * Define all types that are used in the following function prototypes. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* VMS system routine entry points are defined externally using uppercase names. The following macros allow the usage of the lowercase versions of these names even in the presence of the /NAME=AS_IS compiler switch. */ #define mmg_std$add_pt_win_cnt MMG_STD$ADD_PT_WIN_CNT #define mmg_std$alloc_pfn_64 MMG_STD$ALLOC_PFN_64 #define mmg$alloc_pfn_algnd_64 MMG$ALLOC_PFN_ALGND_64 #define mmg$allocate_contig_pfns MMG$ALLOCATE_CONTIG_PFNS #define mmg$allocate_pfn MMG$ALLOCATE_PFN #define mmg$allocate_pfn_map MMG$ALLOCATE_PFN_MAP #define mmg$allocate_sva_and_pfns MMG$ALLOCATE_SVA_AND_PFNS #define mmg_std$alloc_zero_pfn_64 MMG_STD$ALLOC_ZERO_PFN_64 #define mmg$alloc_zero_algnd_64 MMG$ALLOC_ZERO_ALGND_64 #define mmg_std$allo_contig MMG_STD$ALLO_CONTIG #define mmg_std$allo_contig_a MMG_STD$ALLO_CONTIG_A #define mmg_std$allo_contig_pfn MMG_STD$ALLO_CONTIG_PFN #define mmg_std$allo_contig_pfn_a MMG_STD$ALLO_CONTIG_PFN_A #define mmg_std$dalloc_contig_pfn MMG_STD$DALLOC_CONTIG_PFN #define mmg_std$dalloc_pfn_64 MMG_STD$DALLOC_PFN_64 #define mmg_std$dalloc_zero_pfn_64 MMG_STD$DALLOC_ZERO_PFN_64 #define mmg_std$del_contents_pfn_64 MMG_STD$DEL_CONTENTS_PFN_64 #define mmg_std$alloc_gpt MMG_STD$ALLOC_GPT #define mmg_std$dealloc_gpt MMG_STD$DEALLOC_GPT #define mmg_std$decptref_pfndb MMG_STD$DECPTREF_PFNDB #define mmg_std$deref_bufobj MMG_STD$DEREF_BUFOBJ #define mmg_std$lockpgtb_64 MMG_STD$LOCKPGTB_64 #define mmg_std$iolock_buf MMG_STD$IOLOCK_BUF #define mmg_std$iounlock_buf MMG_STD$IOUNLOCK_BUF #define mmg_std$ref_bufobj MMG_STD$REF_BUFOBJ #define mmg_std$svaptechk MMG_STD$SVAPTECHK #define mmg$tbi_all MMG$TBI_ALL #define mmg$tbi_single MMG$TBI_SINGLE #define mmg$tbi_single_threads MMG$TBI_SINGLE_THREADS #define mmg_std$tbi_data_64 MMG_STD$TBI_DATA_64 #define mmg_std$tbi_data_64_threads MMG_STD$TBI_DATA_64_THREADS #define mmg_std$delpag_64 MMG_STD$DELPAG_64 #define mmg_std$delete_pts MMG_STD$DELETE_PTS #define mmg_std$delete_private_l3pt MMG_STD$DELETE_PRIVATE_L3PT #define mmg_std$check_contract_64_1 MMG_STD$CHECK_CONTRACT_64_1 #define mmg_std$check_contract_64 MMG_STD$CHECK_CONTRACT_64 #define mmg_std$try_all_64 MMG_STD$TRY_ALL_64 #define mmg_std$fast_create_64 MMG_STD$FAST_CREATE_64 #define mmg_std$crepag_64 MMG_STD$CREPAG_64 #define mmg_std$create_shpt_mapping_64 MMG_STD$CREATE_SHPT_MAPPING_64 #define mmg_std$check_window_64 MMG_STD$CHECK_WINDOW_64 #ifdef __NEW_STARLET #define mmg_std$init_pste_64 MMG_STD$INIT_PSTE_64 #define mmg_std$gdzro_gste_64 MMG_STD$GDZRO_GSTE_64 #define mmg_std$gfile_gste_64 MMG_STD$GFILE_GSTE_64 #define mmg_std$setsecprotown_64 MMG_STD$SETSECPROTOWN_64 #define mmg_std$chkpro_audit MMG_STD$CHKPRO_AUDIT #define mmg_std$global_fast_map_64 MMG_STD$GLOBAL_FAST_MAP_64 #endif #define mmg_std$sec_fast_create_64 MMG_STD$SEC_FAST_CREATE_64 #define mmg_std$set_gh_and_fastmap_64 MMG_STD$SET_GH_AND_FASTMAP_64 #define mmg_std$init_orb MMG_STD$INIT_ORB #define mmg_std$dalcstx MMG_STD$DALCSTX #define mmg_std$dalcstxscn MMG_STD$DALCSTXSCN #define mmg_std$subsecrefl MMG_STD$SUBSECREFL #define mmg_std$derive_granhint_64 MMG_STD$DERIVE_GRANHINT_64 #define mmg_std$fastmap_with_gh_64 MMG_STD$FASTMAP_WITH_GH_64 #define mmg_std$set_gh_and_fastmap_64 MMG_STD$SET_GH_AND_FASTMAP_64 #define mmg_std$perform_audit MMG_STD$PERFORM_AUDIT #define mmg_std$delgblwcb MMG_STD$DELGBLWCB #define mmg_std$movgsdnam MMG_STD$MOVGSDNAM #define mmg_std$gblsec_privchk MMG_STD$GBLSEC_PRIVCHK #define mmg_std$lckulkpag MMG_STD$LCKULKPAG #define mmg_std$purgwspag_64 MMG_STD$PURGWSPAG_64 #define mmg_std$lckbufobjpag MMG_STD$LCKBUFOBJPAG #define mmg_std$delbufobjpages MMG_STD$DELBUFOBJPAGES #define mmg_std$setprtpag_64 MMG_STD$SETPRTPAG_64 #define mmg_std$setfltpag_64 MMG_STD$SETFLTPAG_64 #define mmg_std$has_priv_pswapm MMG_STD$HAS_PRIV_PSWAPM #define mmg_std$gsdscan MMG_STD$GSDSCAN #define mmg_std$addprcpgfl MMG_STD$ADDPRCPGFL #define mmg_std$lock_gpt_64 MMG_STD$LOCK_GPT_64 #define mmg$alloc_sva_map MMG$ALLOC_SVA_MAP #define mmg$alloc_sva_map_64 MMG$ALLOC_SVA_MAP_64 #define mmg$alloc_pfn_map_sva MMG$ALLOC_PFN_MAP_SVA #define mmg$alloc_pfn_64_map_sva MMG$ALLOC_PFN_64_MAP_SVA #define mmg_std$alloc_system_va_map MMG_STD$ALLOC_SYSTEM_VA_MAP #define mmg_std$alloc_stack_va_map MMG_STD$ALLOC_STACK_VA_MAP #define mmg_std$alloc_pfn_map_system_va MMG_STD$ALLOC_PFN_MAP_SYSTEM_VA #define mmg_std$dealloc_sva MMG_STD$DEALLOC_SVA #define mmg$pteref_64 MMG$PTEREF_64 #define mmg_std$get_pte_for_va MMG_STD$GET_PTE_FOR_VA #define mmg_std$rem_pfn_64 MMG_STD$REM_PFN_64 #define mmg_std$ins_pfnh_64 MMG_STD$INS_PFNH_64 #define mmg_std$ins_pfnt_64 MMG_STD$INS_PFNT_64 #define mmg_std$use_res_mem MMG_STD$USE_RES_MEM #define mmg$use_res_mem_64 MMG$USE_RES_MEM_64 #define mmg_std$free_res_mem MMG_STD$FREE_RES_MEM #define mmg_std$return_res_mem MMG_STD$RETURN_RES_MEM #define mmg_std$copy_rmd MMG_STD$COPY_RMD #define mmg$test_page MMG$TEST_PAGE #define mmg_std$map_pfns_gh MMG_STD$MAP_PFNS_GH #define mmg_std$alloc_map_pfns MMG_STD$ALLOC_MAP_PFNS #define mmg_std$establish_freepte_list MMG_STD$ESTABLISH_FREEPTE_LIST #define mmg_std$insque_free_pte MMG_STD$INSQUE_FREE_PTE #define mmg_std$remque_free_pte MMG_STD$REMQUE_FREE_PTE #define mmg_std$establish_freepfn_list MMG_STD$ESTABLISH_FREEPFN_LIST #define mmg_std$insque_free_pfn MMG_STD$INSQUE_FREE_PFN #define mmg_std$remque_free_pfn MMG_STD$REMQUE_FREE_PFN #define mmg_std$map_from_lists MMG_STD$MAP_FROM_LISTS #define mmg_std$unmap_to_lists MMG_STD$UNMAP_TO_LISTS #define mmg$pfncheck MMG$PFNCHECK #define mmg$pfncheck_range MMG$PFNCHECK_RANGE #define mmg$ptecheckw_process MMG$PTECHECKW_PROCESS #define mmg$ptecheckw_system MMG$PTECHECKW_SYSTEM #define mmg$ptecheckw_process_ast MMG$PTECHECKW_PROCESS_AST #define mmg$alloc_pfn_color_64 MMG$ALLOC_PFN_COLOR_64 #define mmg$alloc_zero_color_64 MMG$ALLOC_ZERO_COLOR_64 #define mmg$alloc_contig_color_a MMG$ALLOC_CONTIG_COLOR_A #define mmg$alloc_contig_range MMG$ALLOC_CONTIG_RANGE #define mmg$update_sysptbr MMG$UPDATE_SYSPTBR #define mmg$va_to_rad MMG$VA_TO_RAD #define mmg_std$alcstx MMG_STD$ALCSTX #define mmg$find_stack_peak MMG$FIND_STACK_PEAK #define mmg$lkwset_int MMG$LKWSET_INT #define mmg$lock_linker_data MMG$LOCK_LINKER_DATA #define mmg$invo_context_init MMG$INVO_CONTEXT_INIT #define mmg$invo_context_malloc MMG$INVO_CONTEXT_MALLOC #define mmg$invo_context_free MMG$INVO_CONTEXT_FREE #define mmg$invo_context_done MMG$INVO_CONTEXT_DONE #ifdef __ia64 #define mmg$setup_tr MMG$SETUP_TR #define mmg$check_vhpt MMG$CHECK_VHPT #define mmg$create_vhpt MMG$CREATE_VHPT #define mmg$enable_vhpt MMG$ENABLE_VHPT #define mmg$insert_vhpt MMG$INSERT_VHPT #define mmg$invalidate_vhpt MMG$INVALIDATE_VHPT #define mmg$invalidate_vhpt_p MMG$INVALIDATE_VHPT_P #define mmg$invalidate_vhpt_entry MMG$INVALIDATE_VHPT_ENTRY #endif /* Function prototypes for system routines with the MMG$ and MMG_STD$ prefix. */ void mmg_std$add_pt_win_cnt (VOID_PQ va, PTE_PQ va_pte, int win_count); PFN_T mmg$allocate_pfn (uint32 flags, int color, uint64 byte_align); PFN_T mmg$allocate_contig_pfns (uint64 page_count, uint32 flags, int color, uint64 byte_align, PFN_T low_pfn, PFN_T high_pfn, UINT64_PQ largest_chunk); int mmg$allocate_sva_and_pfns (uint64 page_count, uint32 flags, int color, int system_region, int proto_pte, int refcnt, VOID_PPQ ret_sva); int mmg$allocate_pfn_map (uint64 page_count, uint32 flags, int color, PFN_T low_pfn, PFN_T high_pfn, VOID_PQ sva, int proto_pte, int refcnt); #ifdef VMS$PFNBITS_32 PFN_T mmg_std$alloc_pfn_64 (PFN_PPQ pfndbe_p); PFN_T mmg$alloc_pfn_algnd_64 (uint64 vpn, PFN_PPQ pfndbe_p); PFN_T mmg_std$alloc_zero_pfn_64 (PFN_PPQ pfndbe_p); PFN_T mmg$alloc_zero_algnd_64 (uint64 vpn, PFN_PPQ pfndbe_p); PFN_T mmg_std$allo_contig (uint32 pfn_count); PFN_T mmg_std$allo_contig_pfn (uint32 pfn_count, PFN_T max_pfn); PFN_T mmg_std$allo_contig_a (uint32 pfn_count, uint64 byte_align); PFN_T mmg_std$allo_contig_pfn_a (uint32 pfn_count, uint64 byte_align, PFN_T max_pfn); #endif void mmg_std$dalloc_contig_pfn (PFN_T pfn, uint32 pfn_count); void mmg_std$dalloc_pfn_64 (PFN_T pfn, PFN_PQ pfndbe); void mmg_std$dalloc_zero_pfn_64 (PFN_T pfn, PFN_PQ pfndbe); void mmg_std$del_contents_pfn_64 (PFN_T pfn, PFN_PQ pfndbe); int mmg_std$alloc_gpt (const int req_pages, PTE_PPQ gpte_p); int mmg_std$dealloc_gpt (const int page_count, const PTE_PQ gpte); void mmg_std$decptref_pfndb (PFN_PQ const pfndbe); void mmg_std$deref_bufobj (int32 object_handle_1, int32 object_handle_2); int mmg_std$iolock_buf (VOID_PQ const buf, const int bufsiz, const int is_read, PCB *const pcb, PTE_PPQ va_pte_p, VOID_PPQ fault_va_p); void mmg_std$iounlock_buf (const int npages, PTE_PQ const va_pte); void mmg_std$lockpgtb_64 (PTE_PQ const va_pte, PHD *const phd); void mmg_std$svaptechk (VOID_PQ va, PCB *pcb, PHD *phd, PTE **svapte_p); void mmg$tbi_all (void); int mmg_std$ref_bufobj (int32 object_handle_1, int32 object_handle_2, ...); /* [ uint32 flags ] */ void mmg$tbi_single (VOID_PQ va); void mmg$tbi_single_threads (VOID_PQ va); void mmg_std$tbi_data_64 (VOID_PQ va); void mmg_std$tbi_data_64_threads (VOID_PQ va); int mmg_std$delpag_64 (RDE *rde, VOID_PPQ start_va_p, uint64 *pages_1, int acmode, int *mmg_flags); void mmg_std$delete_pts (VOID_PQ start_va, VOID_PQ end_va); void mmg_std$delete_private_l3pt (PTE_PQ l3pt_va, PCB *pcb, PHD *phd); void mmg_std$check_contract_64_1 (RDE *rde, PHD *phd, VOID_PQ start_va); void mmg_std$check_contract_64 (RDE *rde, PHD *phd, VOID_PQ start_va, VOID_PQ end_va); int mmg_std$try_all_64(RDE *rde, VOID_PQ start_va, VOID_PQ end_va, uint64 expbytes, uint64 pages, int *pagefile_cache_p, int *mmg_flags_p); void mmg_std$fast_create_64(RDE *rde, VOID_PQ start_va, VOID_PQ end_va, uint64 pages, PTE prot_pte); int mmg_std$crepag_64(RDE *rde, VOID_PPQ va_p, uint64 *pages_1, int max_mode, PTE proto_pte, int *pagefile_cache_p, int *mmg_flags_p); int mmg_std$create_shpt_mapping_64 (RDE *rde, VOID_PPQ va_p, uint64 *pages_1, int max_mode, PTE proto_pte, int *mmg_flags_p); int mmg_std$check_window_64(int channel, CCB **ccb_p, int *efblk_p); /* The following prototypes are only defined for __NEW_STARLET because * the type SECDEF is not defined in SECDEF.H otherwise. */ #ifdef __NEW_STARLET int mmg_std$init_pste_64(CCB *ccb, uint64 *pagelets_p, int section_flags, uint64 start_vbn, int pfc_pagelets, int *efblk_p, SECDEF **pste_p, int *pstx_p); int mmg_std$gfile_gste_64(GSD *gsd, CCB *ccb, uint64 *pagelets_p, int section_flags, uint64 start_vbn, int pfc_pagelets, int *efblk_p, SECDEF **gste_p, unsigned int *gstx_p); int mmg_std$gdzro_gste_64(GSD *gsd, uint64 *pagelets_p, int section_flags, SECDEF **gste_p, unsigned int *gstx_p); int mmg_std$setsecprotown_64(PTE *proto_pte_p, int section_flags, int acmode, SECDEF *section_table_entry_p, GSD *gsd, ...); /* [uint32 page_prot] */ int mmg_std$chkpro_audit(GSD *gsd, SECDEF *gste, int section_flags, int status, int callers_mode); int mmg_std$global_fast_map_64(VOID_PQ start_va, VOID_PQ end_va, uint64 pages, PTE proto_pte, SECDEF *gste); #endif int mmg_std$sec_fast_create_64 (RDE *rde, VOID_PQ start_va, VOID_PQ end_va, uint64 pages, PTE proto_pte, int mmg_flags); void mmg_std$set_gh_and_fastmap_64 (VOID_PQ start_va, VOID_PQ end_va, uint64 pages, PTE proto_pte); int mmg_std$init_orb(GSD *gsd, CCB *ccb, int prot); void mmg_std$dalcstx(int stx, PHD *phd); void mmg_std$dalcstxscn(PHD *phd); void mmg_std$subsecrefl(int refcnt, int index, PHD *phd); int mmg_std$derive_granhint_64(RDE *rde, VOID_PPQ start_va_p, VOID_PPQ end_va_p, uint64 page_count, PTE proto_pte, int *mmg_flags_p); void mmg_std$fastmap_with_gh_64(VOID_PQ start_va, VOID_PQ end_va, uint64 page_count, PTE proto_pte); void mmg_std$set_gh_and_fastmap_64(VOID_PQ start_va, VOID_PQ end_va, uint64 page_count, PTE proto_pte); void mmg_std$perform_audit(GSD *gsd, int status); void mmg_std$delgblwcb(PCB *pcb); void mmg_std$movgsdnam(char *dest_p, char *source_p, GSD *gsd); int mmg_std$sec_privchk(char *gs_string_p, int flags); int mmg_std$lckulkpag(VOID_PQ start_va, int acmode, int flags, PCB *pcb, PHD *phd, WSL_PQ wsl); void mmg_std$purgwspag_64(VOID_PQ start_va, int acmode, uint64 pages_1, int page_inc); int mmg_std$lckbufobjpag(VOID_PQ start_va, int acmode, int page_inc, BOD *bod, PTE_PPQ va_pte_p); void mmg_std$delbufobjpages(BOD *bod, PCB *pcb); int mmg_std$setprtpag_64(RDE *rde, VOID_PQ start_va, int acmode, int alpha_prot, int *prev_prot_p); int mmg_std$setfltpag_64(RDE *rde, VOID_PQ start_va, int acmode, int fault_mask); int mmg_std$has_priv_pswapm(PCB *pcb); void mmg_std$addprcpgfl(int pages, PHD *phd); void mmg_std$lock_gpt_64(PTE_PQ gpte, PHD *sys_phd,...); int mmg_std$gsdscan(VOID_PQ input_gsnam, UINT64_PQ input_ident, int section_flags, char *return_gsnam, uint64 *return_ident, GSD **gsd); #ifdef VMS$PFNBITS_32 int mmg$alloc_sva_map (int proto_pte, int page_count, int refcnt, PTE ** ret_svapte, void ** ret_sva, int *ret_pfn); int mmg$alloc_pfn_map_sva (int proto_pte, int page_count, int refcnt, PTE * svapte, void ** ret_sva, int *ret_pfn); #endif int mmg$alloc_sva_map_64 (int proto_pte, int page_count, int refcnt, PTE ** ret_svapte, void ** ret_sva, PFN_T *ret_pfn); int mmg$alloc_pfn_64_map_sva (int proto_pte, int page_count, int refcnt, PTE * svapte, void ** ret_sva, PFN_T *ret_pfn); #ifndef MMG_STD$ALLOC_SYSTEM_VA_MAP_SRC #ifdef VMS$PFNBITS_32 int mmg_std$alloc_system_va_map (const int proto_pte, const int page_count, const uint32 refcnt, const uint32 system_region, VOID_PPQ sva, ...); /* [VOID_PQ not_used, int rad, int rad_flags] */ #endif #endif #ifndef MMG_STD$ALLOC_PFN_MAP_SYSTEM_VA_SRC #ifdef VMS$PFNBITS_32 int mmg_std$alloc_pfn_map_system_va (const int proto_pte, const int page_count, const uint32 refcnt, VOID_PQ sva, ...); /* [PFN_T_PQ ret_pfn] */ #endif #endif int mmg_std$dealloc_sva (int page_count, VOID_PQ sva); int mmg$pteref_64 (VOID_PQ va, RDE *rde, PTE_PPQ va_pte); int mmg_std$get_pte_for_va (VOID_PQ const va, PHD *const phd, PTE_PQ pte_p); void mmg_std$rem_pfn_64 (PFN_T pfn, int list, PFN_PQ pfndbe_p); void mmg_std$ins_pfnh_64 (PFN_T pfn, int list, PFN_PQ pfndbe_p); void mmg_std$ins_pfnt_64 (PFN_T pfn, int list, PFN_PQ pfndbe_p); PFN_T mmg_std$rem_pfnh_64(int list, PFN_PPQ pfndbe_p); #ifdef VMS$PFNBITS_32 int mmg_std$use_res_mem (uint32 page_count, uint32 char_count, char *name, uint32 flags, uint32 group, uint32 *return_pfn, uint32 *reserved_pages); #endif int mmg$use_res_mem_64 (uint32 page_count, uint32 char_count, CHAR_PQ name, uint32 flags, uint32 group, UINT64_PQ return_pfn, UINT64_PQ reserved_pages); int mmg_std$free_res_mem (uint32 char_count, char *name, uint32 flags, uint32 group, uint32 *freed_pages); int mmg_std$return_res_mem (uint32 page_count, uint32 char_count, char *name, uint32 flags, uint32 group, ...); /* uint32 start_pfn] */ int mmg_std$copy_rmd (uint32 rmd_count, uint32 char_count, char *name, uint32 flags, uint32 group, RMD *copy_address); int mmg$test_page(uint32 *pfn_count_p); void mmg$compute_mem_checksum(PMREG *pmr, int32 bitmap_size, uint32 flag); int mmg_std$map_pfns_gh (PFN_T first_pfn, uint32 pfn_count, uint32 protection, VOID_PQ sva); int mmg_std$alloc_map_pfns (uint32 pfn_count, uint32 protection, VOID_PQ sva); int mmg_std$establish_freepte_list (PTELIST_PQ pte_list, VOID_PQ sva, uint64 pte_count); int mmg_std$insque_free_pte (PTELIST_PQ pte_list, VOID_PQ sva, uint64 pte_count); int mmg_std$remque_free_pte (PTELIST_PQ pte_list, uint64 pte_count); int mmg_std$establish_freepfn_list (uint32 count, void (*callback_routine)(PRVPFN_PQ pfn_list), uint32 priority, PRVPFN_PPQ prvpfn, UINT32_PQ return_count); int mmg_std$insque_free_pfn (PRVPFN_PQ pfn_list, uint32 count, UINT32_PQ return_count); int mmg_std$remque_free_pfn (PRVPFN_PQ pfn_list, uint32 count); int mmg_std$map_from_lists (PTELIST_PQ pte_list, PRVPFN_PQ prvpfn, uint32 protection, VOID_PPQ sva); int mmg_std$unmap_to_lists (VOID_PQ sva, PTELIST_PQ pte_list, PRVPFN_PQ prvpfn); int mmg$pfncheck (PFN_T pfn, UINT32_PQ which_list); int mmg$pfncheck_range (PFN_T pfn, uint32 page_count); int mmg$ptecheckw_process (void); int mmg$ptecheckw_system (void); void mmg$ptecheckw_process_ast(PCB *pcb, ACB *acb); #define mmg$mem_config_info MMG$MEM_CONFIG_INFO int mmg$mem_config_info (UINT32_PQ max_mem_desc_nodes_p, UINT32_PQ max_frag_per_node_p); #define mmg$mem_config_pfn MMG$MEM_CONFIG_PFN int mmg$mem_config_pfn (PFN_T pfn, INT_PQ page_type_p, UINT64_PQ part_id_p, UINT64_PQ comm_id_p); #ifdef VMS$PFNBITS_32 PFN_T mmg$alloc_pfn_color_64 (uint32 flags, uint64 vpn, uint32 rad, PFN_PPQ pfndbe_p); PFN_T mmg$alloc_zero_color_64 (uint32 flags, uint64 vpn, uint32 rad, PFN_PPQ pfndbe_p); PFN_T mmg$alloc_contig_color_a (uint32 pfn_count, uint32 flags, uint64 byte_align, uint32 rad, UINT32_PQ largest_chunk_p); PFN_T mmg$alloc_contig_range (PFN_T min_pfn, uint32 pfn_count, PFN_T max_pfn, uint64 byte_align, UINT32_PQ largest_chunk_p); #endif void mmg$update_sysptbr(void); int mmg$va_to_rad (VOID_PQ va, UINT32_PQ rad_p); unsigned int mmg$check_va_access (VOID_PQ va); int mmg_std$alcstx (PCB * pcb_p, PHD * phd_p, unsigned int * stx_p); int mmg_std$alloc_stack_va_map (const int proto_pte, const int page_count, const uint32 refcnt, const uint32 system_region, const int rad, const int rad_flags, VOID_PPQ sva); unsigned __int64 mmg$find_stack_peak (VOID_PQ base, VOID_PQ limit, int regstack, int acmode, int type); int mmg$lkwset_int (VOID_PQ start_va_64, uint64 length_64); int mmg$lock_linker_data (VOID_PQ code_va); unsigned __int64 mmg$invo_context_init (int total_length); VOID_PQ mmg$invo_context_malloc (int length, unsigned __int64 ident); void mmg$invo_context_free (VOID_PQ ptr, unsigned __int64 ident); void mmg$invo_context_done (unsigned __int64 ident); #ifdef __ia64 void mmg$purge_tr (VOID_PQ va, unsigned __int64 length, int which_trs); void mmg$setup_tr (VOID_PQ va, unsigned __int64 pa, unsigned __int64 length, int prot, int tr, int which_trs); int mmg$check_vhpt (VOID_PQ va); void mmg$create_vhpt (void); void mmg$enable_vhpt (void); void mmg$insert_vhpt (VOID_PQ va, PTE pte_contents); void mmg$invalidate_vhpt (void); void mmg$invalidate_vhpt_p (void); void mmg$invalidate_vhpt_entry (VOID_PQ va); #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #endif /* __MMG_ROUTINES_LOADED */