#ifndef __GLX_ROUTINES_LOADED #define __GLX_ROUTINES_LOADED 1 /* module GLX_ROUTINES.H "X-62" * * Copyright © Digital Equipment Corporation, 1998 All Rights Reserved. * Unpublished rights reserved under the copyright laws of the United States. * * The software contained on this media is proprietary to and embodies the * confidential technology of Digital Equipment Corporation. Possession, use, * duplication or dissemination of the software and media is authorized only * pursuant to a valid written license from Digital Equipment Corporation. * * RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure by the U.S. * Government is subject to restrictions as set forth in Subparagraph * (c)(1)(ii) of DFARS 252.227-7013, or in FAR 52.227-19, as applicable. * *++ * * FACILITY: * * VMS Executive (LIB_H) * * ABSTRACT: * * This module contains the C function prototypes for the VMS system * routines that begin with the GLX$ prefix. * * 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: * * Karen L. Noel based on header file authored by Leonard S. Szubowicz. * * CREATION DATE: 9-Sep-1997 * * MODIFICATION HISTORY: * * X-62 KLN3450 Karen L. Noel 5-Mar-2004 * Use vms$defs.h. * * X-61 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-60 Clair Grant Friday the 13th-Feb-2004 * Add new routines for expanded PFNs * * X-59 JRK393 Jim Kauffman 2-May-2001 * Update hotswap routine declarations * * X-57 WBF Burns Fisher 21-Apr-2000 * Add optional arg for glx$get_lock_info * * X-56 JRK393 Jim Kauffman 5-Aug-1999 * Update callbacks to support different FRU formats * * X-55 WBF Burns Fisher 27-Jul-1999 * Add glx$cfg_compat * * X-54 RAB Richard A. Bishop 29-Oct-1998 * Remove GLX$MEM_CONFIG_INFO and GLX$MEM_CONFIG_PFN. * They are now MMG$* and are found in MMG_ROUTINES.H. * * X-53 JRK390 Jim Kauffman 5-Oct-1998 * Add flags parameter to glx$_instance_packet_notify * * X-52 DMB Dave Bernardo 14-Aug-1998 * Add some cruft around GLOCKDEF to get __NEW_STARLET * defined. See comments below. * * X-51 PKH-G034 Paul K. Harter, Jr. 21-Jul-1998 * Modify prototype for glx$log_message to add message length * and optional OPC type and FAO arguments. * * X-50 KLN2091 Karen L. Noel 8-Jul-1998 * Add new routines to read shared memory bitmaps. * * X-49 Dave Bernardo 24-Jun-1998 * Add accmode parameter to glx$init_lock_table. * * X-48 KLN2087 Karen L. Noel 24-Jun-1998 * Change shm_cpp routines to accept wait context. * * X-47 JRK390 Jim Kauffman 23-May-1998 * Add incarnation parameter to glx$find_instance_primary * * X-46 Dave Bernardo 14-Apr-1998 * Remove galaxy locking system services. They are in * STARLET now. * * X-45 JRK390 Jim Kauffman 3-Apr-1998 * Add several of SMP/Galaxy communication routines * * X-44 AHM043 Drew Mason 5-Mar-1998 * Change prototype for glx$leave_galaxy. Add * glx$finish_leaving. * * X-43 Tom Benson 24-Feb-1998 * Added glx$shm_reg_recover, glx$shm_reg_reset, and * glx$shm_cpp_recover. * * X-42 DMB Dave Bernardo 25-Feb-1998 * Add glx$break_locks. * * X-41 WBF Burns Fisher 27-Feb-1998 * Add wait_context parameter to GLX$SHM_REG_ADD_PAGES * * X-40 AHM040 Drew Mason 25-Feb-1998 * Add glx$shmem_reform_galaxy, glx$reform_rejoin_fork, * and glx$check_dead_node_fork. Change glx$reform_galaxy * to take an int parameter. * * X-39 AHM039 Drew Mason 24-Feb-1998 * Change prototype for membership callbacks. Remove * glx$mem_change_wrapper. Add glx$reform_galaxy and * glx$validate_galaxy. * * X-38 PKH-G013 Paul K. Harter, Jr. 19-Feb-1998 * Add prototype for glx$leave_galaxy. * * X-37 Tom Benson 16-Feb-1998 * Added glx$shm_cpp_galaxy_exit and glx$shm_reg_galaxy_exit. * * X-36 DMB Dave Bernardo 13-Feb01998 * Another change the the *lock_table routines. * Add prototypes for $reset_lock and $delete*lock_table. * Add internal use only get_member_info. * * X-35 EMB Ellen M. Batbouta 11-Feb-1998 * Remove glx$event_notify. * * X-34 AHM037 Drew Mason 3-Feb-1998 * PKH-G010 Paul K. Harter, Jr. * Add prototypes for glx$remove_node_start, * glx$remote_crash_fork, glx$reform_galaxy_fork, * glx$get_member_info, glx$start_validate_fork, * glx$done_validate_fork, glx$node_leaving_fork. * Include mbr_infodef.h. * * X-33 EMB Ellen M. Batbouta 03-Feb-1998 * Add glx$event_notify. * * X-32 JRK390 Jim Kauffman 29-Jan-1998 * Add glx$all_instance_bit_notify and glx$find_all_primaries * * X-31 AHM035 Drew Mason 29-Jan-1998 * Add glx$remove_node and glx$mem_change_wrapper. * * X-30 Tom Benson 27-Jan-1998 * Added glx$shm_reg_id_to_va and glx$mmap_get_fragments. * * X-29 JRK390 Jim Kauffman 23-Jan-1998 * Resynch glx$get_cpu_handle_owner parameter definitions * with new console GCT structures * * X-28 DMB Dave Bernardo 20-Jan-1998 * The init_lock_table routines needs two size parameters * the create_lock_table routines needs one size parameter. * * X-27 KLN2048 Karen L. Noel 21-Jan1-998 * Change glx$shm_reg prototypes again. They weren't * quite right... * * X-26 AHM033 Drew Mason 15-Jan-1998 * Added prototype for glx$mem_change_fork. * * X-25 KLN2046 Karen L. Noel 14-Jan-1998 * o Add routine glx$shm_reg_va_to_id. * o Change prototype for glx$shm_reg_create. * o Change prototype for glx$shm_reg_delete. * * X-24 AHM033 Drew Mason 13-Jan-1998 * Change prototype for glx$kick_off_join to have no * parameters. * * X-23 AHM032 Drew Mason 13-Jan-1998 * Added glx$reg_member_callback and * glx$del_member_callback. * * X-22 AHM031 Drew Mason 12-Jan-1998 * Added glx$crash_all_nodes. * * X-21 Tom Benson 08-Jan-1998 * Corrected glx$shm_cpp_get_info args. * * X-20 Dave Bernardo 07-Jan-1998 * More locking prototypes. * * X-19 JRK390 Jim Kauffman 18-Dec-1997 * Add prototypes for communication routines * * X-18 AHM029 Drew Mason 18-Dec-1997 * Add prototypes for the IP interrupt handlers. * * X-17 KLN2035 Karen L. Noel 17-Dec-1997 * o Add a prototype for glx$log_message. * o Add proto_pte and return_virt_length arguments to * glx$shm_reg_create. * * X-16 KLN2031 Karen L. Noel 11-Dec-1997 * The prototype for glx$shm_cpp_get_info doesn't match * the declaration. This is okay. It has some optional * arguments. * * X-15 KLN2030 Karen L. Noel 09-Dec-1997 * Allow glx$shm_cpp_disconnect to specify gNode id. * * X-14 PKH-G004 Paul K. Harter, Jr. 05-Dec-1997 * Corrected null parameter lists for glocks, cpucom, * member services and cpuinfo to "(void)" and changed * shmem_gmdb_init and shmem_gmdb_init to use null * parameter lists. * Moved member services protos from LONG pointer scope. * * X-13 KLN2026 Karen L. Noel 04-Dec-1997 * Change MMAP prototypes to include region id. * * X-12 Dave Bernardo 04-Dec-1997 * Fix prototypes for glx$glock_*. Add glx$init_galaxy_lock. * Add missing glx$glock membership services routines. * * X-11 AHM025 Drew Mason 3-Dec-1997 * Add prototypes for membership services and CPU * communications. * * X-10 Karen L. Noel 24-Nov-1997 * Add change X-8 back. * * X-9 KLN2021 Karen L. Noel 20-Nov-1997 * Update the glx$shm_cpp_alloc_pages prototype to use the * proper type for flags. * * X-8 Dave Bernardo 20-Nov-1997 * Fix $reset_lock protypes. * * X-7 KLN2019 Karen L. Noel 13-Nov-1997 * Update some prototypes. * * X-6 KLN2018 Karen L. Noel 7-Nov-1997 * Add prototype for glx$mem_config_pfn. * * X-5 Dave Bernardo 06-Nov-1997 * Add locking prototypes. * * X-4 KLN2013 Karen L. Noel 23-Oct-1997 * Add prototypes for memory config info functions. * * X-3 KLN2010 Karen L. Noel 22-Oct-1997 * Add GMDB definition. * * X-2 KLN2005 Karen L. Noel 13-Oct-1997 * Add SHM_REG and SHMEM routines. * * X-1 KLN2003 Karen L. Noel 9-Sep-1997 * Initial version containing primitive GLX shared memory * managment routine interfaces. * *-- */ #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __save #pragma __required_pointer_size __short #endif /* * Define all types that are used in the following function prototypes. */ #include #include #include #include #include #include #include #include #include #include /* MMAP and PFNLST definitions */ #include /* PFN and PMAP definitions */ #include #include #include #include #include /* The following crockery is the result of moving GLOCKDEF from LIB to Starlet. There is code on the masterpack which includes GLX_ROUTINES but is not built with __NEW_STARLET defined. Unfortunately, it's required for GLX_ROUTINES and GLOCKDEF to play nice together. */ #ifndef __NEW_STARLET #define __glockdef_defined_new_starlet__ = 1 #define __NEW_STARLET = 1 #endif #include #ifdef __glockdef_defined_new_starlet__ #undef __glockdef_defined_new_starlet__ #undef __NEW_STARLET #endif /* VMS system routine entry points are defined externally using uppercase names. The macro preceding each prototype allows the usage of the lowercase versions of these names even in the presence of the /NAME=AS_IS compiler switch. */ /* Memory configuration info functions */ #define glx$shmem_config_desc GLX$SHMEM_CONFIG_DESC int glx$shmem_config_desc (uint32 max_fragments, UINT64_PQ wildcard_context_p, UINT32_PQ frag_count_p, PMAP_PQ pmap_p); #define glx$shmem_config_all GLX$SHMEM_CONFIG_ALL int glx$shmem_config_all (uint32 max_mem_desc_nodes, uint32 max_frag_per_node, UINT32_PQ total_frag_count_p, PMAP_PQ pmap_p); #ifdef VMS$PFNBITS_32 #define glx$shmem_config_gmdb GLX$SHMEM_CONFIG_GMDB int glx$shmem_config_gmdb (UINT32_PQ gmdb_pfn_p, UINT32_PQ gmdb_pages_p); #endif /* GMDB mapping and allocation functions */ #define glx$gmdb_map_initial GLX$GMDB_MAP_INITIAL int glx$gmdb_map_initial (uint64 initial_gmdb_length, GMDB_PPQ return_gmdb_p); #define glx$gmdb_allocate GLX$GMDB_ALLOCATE int glx$gmdb_allocate (GMDB_PQ initial_gmdb_p, uint64 initial_gmdb_length, uint64 total_gmdb_length, GMDB_PPQ return_gmdb_p); #define glx$gmdb_map_continue GLX$GMDB_MAP_CONTINUE int glx$gmdb_map_continue (GMDB_PQ inital_gmdb_p, uint64 initial_gmdb_length, GMDB_PPQ return_gmdb_p, UINT64_PQ return_gmdb_length_p); #define glx$gmdb_unmap GLX$GMDB_UNMAP int glx$gmdb_unmap (GMDB_PQ gmdb_p, uint64 gmdb_length); /* Shared memory CPP functions */ #define glx$shm_cpp_get_size GLX$SHM_CPP_GET_SIZE void glx$shm_cpp_get_size (UINT64_PQ return_size_p); #ifndef __SHM_CPP_SOURCE #ifdef VMS$PFNBITS_32 #define glx$shm_cpp_get_info GLX$SHM_CPP_GET_INFO int glx$shm_cpp_get_info (SHM_CPP_ID shm_cpp_id, ...); #endif /* Optional arguments: UINT32_PQ free_pages_p, UINT32_PQ total_pgcnt_p, UINT32_PQ min_pfn_p, UINT32_PQ max_pfn_p, SHMEM_FLAGS_PQ shmem_flags_p, UINT32_PQ bad_pages_p */ #define glx$shm_cpp_init GLX$SHM_CPP_INIT int glx$shm_cpp_init (SHM_CPP_ID shm_cpp_id, uint32 min_pfn, uint32 max_pfn, PMAP_PQ pmap_p, uint32 flags, ...); #endif #define glx$shm_cpp_add_pages GLX$SHM_CPP_ADD_PAGES int glx$shm_cpp_add_pages (SHM_CPP_ID shm_cpp_id, uint32 first_pfn, uint32 pfn_count); #define glx$shm_cpp_connect GLX$SHM_CPP_CONNECT int glx$shm_cpp_connect (SHM_CPP_ID shm_cpp_id, VOID_PQ wait_context_p); #define glx$shm_cpp_disconnect GLX$SHM_CPP_DISCONNECT int glx$shm_cpp_disconnect (SHM_CPP_ID shm_cpp_id, uint32 gnode_id, VOID_PQ wait_context_p); #define glx$shm_cpp_acquire_glock GLX$SHM_CPP_ACQUIRE_GLOCK int glx$shm_cpp_acquire_glock (SHM_CPP_ID shm_cpp_id, VOID_PQ wait_context_p); #define glx$shm_cpp_release_glock GLX$SHM_CPP_RELEASE_GLOCK int glx$shm_cpp_release_glock (SHM_CPP_ID shm_cpp_id); #ifdef VMS$PFNBITS_32 #define glx$shm_cpp_alloc_pages GLX$SHM_CPP_ALLOC_PAGES int glx$shm_cpp_alloc_pages (SHM_CPP_ID shm_cpp_id, uint32 page_count, uint32 list_id, SHM_CPP_ALLOC flags, UINT32_PQ return_pfn_p, UINT32_PQ return_count_p); #endif #define glx$shm_cpp_dealloc_pages GLX$SHM_CPP_DEALLOC_PAGES int glx$shm_cpp_dealloc_pages (SHM_CPP_ID shm_cpp_id, uint32 pfn, uint32 page_count, uint32 list_id); #define glx$shm_cpp_galaxy_exit GLX$SHM_CPP_GALAXY_EXIT int glx$shm_cpp_galaxy_exit (void); #define glx$shm_cpp_recover GLX$SHM_CPP_RECOVER int glx$shm_cpp_recover (uint32 gnode_id); /* Memory map manipulation functions */ #define glx$mmap_init GLX$MMAP_INIT int glx$mmap_init (MMAP_PQ mmap_p, uint64 virt_size, uint64 phys_size, SHM_CPP_ID shm_cpp_id, VOID_PQ wait_context, SHM_ID shm_reg_id, UINT64_PQ phys_size_p); #define glx$mmap_alloc_pages GLX$MMAP_ALLOC_PAGES int glx$mmap_alloc_pages (MMAP_PQ mmap_p, uint64 virt_offset, uint64 phys_size, SHM_CPP_ID shm_cpp_id, VOID_PQ wait_context, SHM_ID shm_reg_id, UINT64_PQ phys_size_p); #define glx$mmap_delete GLX$MMAP_DELETE int glx$mmap_delete (MMAP_PQ mmap_p, VOID_PQ wait_context); #define glx$mmap_map_object GLX$MMAP_MAP_OBJECT int glx$mmap_map_object (MMAP_PQ mmap_p, PTE_PQ pte_p, PTE proto_pte); #define glx$mmap_get_fragments GLX$MMAP_GET_FRAGMENTS int glx$mmap_get_fragments (MMAP_PQ mmap_ptr, UINT32_PQ fragment_count, uint32 max_pmap_count, PMAP_PQ pmap_ptr); /* Shared Memory Region Functions */ #define glx$shm_reg_create GLX$SHM_REG_CREATE #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __long int glx$shm_reg_create (VOID_PQ tag_p, SHMEM_FLAGS flags, uint64 reserved, VOID_PQ sys_va, uint64 virt_length, uint64 phys_length, uint64 context, PTE proto_pte, int (*callback_routine)( int reason, uint32 gnode_id, SHM_ID shm_reg_id, VOID_PQ sys_va, uint64 virt_length), VOID_PQ wait_context_p, SHM_ID_PQ shm_reg_id_p); #pragma __required_pointer_size __short #endif #define glx$shm_reg_delete GLX$SHM_REG_DELETE int glx$shm_reg_delete (SHM_ID shm_reg_id, VOID_PQ wait_context_p); #define glx$shm_reg_add_pages GLX$SHM_REG_ADD_PAGES int glx$shm_reg_add_pages (SHM_ID shm_reg_id, uint32 flags, uint64 reserverd, uint64 shm_reg_offset, uint64 length, VOID_PQ wait_context_p); #define glx$shm_reg_get_info GLX$SHM_REG_GET_INFO int glx$shm_reg_get_info (VOID_PQ tag_p, SHM_ID shm_reg_id, SHMEM_INFO flags, UINT64_PQ wildcard_context, SHM_ID_PQ shm_reg_id_p, SHMEM_FLAGS_PQ shmem_flags_p, VOID_PPQ sys_va_p, UINT64_PQ virt_length_p, UINT64_PQ phys_length_p, UINT32_PQ fragment_count, SHORT_PQ return_tag_length, UINT64_PQ return_context_p); #define glx$shm_reg_get_nodes GLX$SHM_REG_GET_NODES int glx$shm_reg_get_nodes (VOID_PQ tag_p, SHM_ID shm_reg_id, SHMEM_INFO flags, CBB_PQ nodes_cbb_p); #define glx$shm_reg_get_pmap GLX$SHM_REG_GET_PMAP int glx$shm_reg_get_pmap (SHM_ID shm_reg_id, uint32 max_pmap_count, PMAP_PQ pmap_p, UINT32_PQ pmap_count_p); #define glx$shm_reg_size GLX$SHM_REG_SIZE int glx$shm_reg_size (UINT64_PQ size_p); #define glx$shm_reg_init GLX$SHM_REG_INIT int glx$shm_reg_init (SHM_ID shm_reg_id); #define glx$shm_reg_va_to_id GLX$SHM_REG_VA_TO_ID int glx$shm_reg_va_to_id (VOID_PQ sys_va, int acmode, SHM_ID_PQ shm_reg_id_p, UINT64_PQ offset_p, INT_PQ valid_p); #define glx$shm_reg_id_to_va GLX$SHM_REG_ID_TO_VA int glx$shm_reg_id_to_va (SHM_ID shm_reg_id, VOID_PPQ sys_va_p, UINT64_PQ virt_length_p); #define glx$shm_reg_incref GLX$SHM_REG_INCREF int glx$shm_reg_incref (PFN_PQ pfndbe_p); #define glx$shm_reg_decref GLX$SHM_REG_DECREF int glx$shm_reg_decref (PFN_PQ pfndbe_p); #define glx$shm_reg_galaxy_exit GLX$SHM_REG_GALAXY_EXIT int glx$shm_reg_galaxy_exit (void); #define glx$shm_reg_recover GLX$SHM_REG_RECOVER int glx$shm_reg_recover (uint32 gnode_id); #define glx$shm_reg_reset GLX$SHM_REG_RESET int glx$shm_reg_reset (void); /* Shared Memory Management Functions */ #ifndef __SHMEM_SOURCE #ifdef VMS$PFNBITS_32 #define glx$shmem_get_info GLX$SHMEM_GET_INFO int glx$shmem_get_info (uint32 pfn, SHMEM_INFO flags, UINT64_PQ wildcard_context, SHM_CPP_ID_PQ shm_cpp_id_p, UINT32_PQ low_pfn_p, UINT32_PQ pfn_count_p, SHMEM_FLAGS_PQ shmem_flags_p, UINT32_PQ free_pages_p, UINT32_PQ bad_pages_p, ...); #endif #endif /* __SHMEM_SOURCE*/ #define glx$config_new_shmem GLX$CONFIG_NEW_SHMEM int glx$config_new_shmem (uint32 first_pfn, uint32 page_count); #define glx$shmem_gmdb_size GLX$SHMEM_GMDB_SIZE int glx$shmem_gmdb_size (UINT64_PQ size_p); #define glx$shmem_gmdb_init GLX$SHMEM_GMDB_INIT int glx$shmem_gmdb_init (void); #define glx$shmem_gmdb_join GLX$SHMEM_GMDB_JOIN int glx$shmem_gmdb_join (void); #define glx$shmem_recover_gmdb GLX$SHMEM_RECOVER_GMDB int glx$shmem_recover_gmdb (uint32 gnode_id); #define glx$shmem_reform_galaxy GLX$SHMEM_REFORM_GALAXY int glx$shmem_reform_galaxy(void); #define glx$shmem_galaxy_exit GLX$SHMEM_GALAXY_EXIT int glx$shmem_galaxy_exit (void); /* Galaxy locking internal routines */ #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __long #define glx$acquire_lock GLX$ACQUIRE_LOCK int glx$acquire_lock(uint64 lock_handle, uint32 timeout, uint32 flags, VOID_PQ context); #define glx$break_locks GLX$BREAK_LOCKS int glx$break_locks(GLCKTBL *lcktbl_va, uint32 lcktbl_handle, uint64 reg_va, int32 gnode, int32 cpu, int32 epid); #define glx$create_lock GLX$CREATE_LOCK int glx$create_lock(uint32 lcktbl_handle, CHAR_PQ name, uint32 size, uint32 timeout, uint32 ipl, uint32 rank, UINT64_PQ lock_handle); #define glx$create_galaxy_lock GLX$CREATE_GALAXY_LOCK int glx$create_galaxy_lock(uint32 lcktbl_handle, CHAR_PQ name, uint32 size, uint32 timeout, uint32 ipl, uint32 rank, UINT64_PQ lock_handle); #define glx$create_lock_table GLX$CREATE_LOCK_TABLE int glx$create_lock_table(CHAR_PQ name, uint32 accmode, uint64 section_size, uint32 section_type, uint32 prot, uint32 lock_size, UINT32_PQ lcktbl_handle); #define glx$create_galaxy_lock_table GLX$CREATE_GALAXY_LOCK_TABLE int glx$create_galaxy_lock_table(CHAR_PQ name, uint32 accmode, uint64 section_size, uint32 section_type, uint32 prot, uint32 lock_size, UINT32_PQ lcktbl_handle); #define glx$delete_lock GLX$DELETE_LOCK int glx$delete_lock(uint64 lock_handle); #define glx$delete_galaxy_lock GLX$DELETE_GALAXY_LOCK int glx$delete_galaxy_lock(uint64 lock_handle); #define glx$delete_lock_table GLX$DELETE_LOCK_TABLE int glx$delete_lock_table(uint32 lcktbl_handle); #define glx$delete_galaxy_lock_table GLX$DELETE_GALAXY_LOCK_TABLE int glx$delete_galaxy_lock_table(uint32 lcktbl_handle); #define glx$get_lock_info GLX$GET_LOCK_INFO int glx$get_lock_info(uint64 lock_handle, CHAR_PQ name, UINT32_PQ timeout, UINT32_PQ size, UINT32_PQ ipl, UINT32_PQ rank, USHORT_PQ flags, ...); /* Allow SHORT_PQ to return name length */ #define glx$get_lock_size GLX$GET_LOCK_SIZE int glx$get_lock_size(UINT32_PQ min_size, UINT32_PQ max_size ); #define glx$init_lock GLX$INIT_LOCK int glx$init_lock(GLOCK *va, CHAR_PQ name, uint32 size, uint32 timeout, uint32 ipl, uint32 rank, UINT64_PQ lock_handle); #define glx$init_galaxy_lock GLX$INIT_GALAXY_LOCK int glx$init_galaxy_lock(GLOCK *va, CHAR_PQ name, uint32 size, uint32 timeout, uint32 ipl, uint32 rank, UINT64_PQ lock_handle); #define glx$init_lock_table GLX$INIT_LOCK_TABLE int glx$init_lock_table(VOID_PQ region_va, uint32 accmode, uint64 reg_phys_size, uint64 reg_virt_size, uint32 section_type, uint32 lock_size, UINT32_PQ lcktbl_handle); #define glx$init_galaxy_lock_table GLX$INIT_GALAXY_LOCK_TABLE int glx$init_galaxy_lock_table(VOID_PQ region_va, uint64 reg_phys_size, uint64 reg_virt_size, uint32 section_type, uint32 lock_size, UINT32_PQ lcktbl_handle); #define glx$release_lock GLX$RELEASE_LOCK int glx$release_lock(uint64 lock_handle); #define glx$reset_lock GLX$RESET_LOCK int glx$reset_lock(uint64 lock_handle, GLOCK **lock_va_ret); #define glx$reset_galaxy_lock GLX$RESET_GALAXY_LOCK int glx$reset_galaxy_lock(uint64 lock_handle, GLOCK **lock_va_ret); #define glx$wait_on_glock GLX$WAIT_ON_GLOCK int glx$wait_on_glock(uint64 lock_handle, uint32 timeout); #define glx$notify_glock_waiters GLX$NOTIFY_GLOCK_WAITERS int glx$notify_glock_waiters(uint64 lock_handle, uint64 waiters ); #define glx$check_process GLX$CHECK_PROCESS void glx$check_process(void); #define glx$release_glock_waiters GLX$RELEASE_GLOCK_WAITERS void glx$release_glock_waiters(void); /* Galaxy membership services routines for locking */ #define glx$glock_galaxy_exit GLX$GLOCK_GALAXY_EXIT int glx$glock_galaxy_exit(uint64 time_limit); #define glx$glock_gmdb_init GLX$GLOCK_GMDB_INIT int glx$glock_gmdb_init(void); #define glx$glock_gmdb_join GLX$GLOCK_GMDB_JOIN int glx$glock_gmdb_join(void); #define glx$glock_gmdb_size GLX$GLOCK_GMDB_SIZE int glx$glock_gmdb_size(UINT64_PQ seq_size); #define glx$glock_recover_gmdb GLX$GLOCK_RECOVER_GMDB int glx$glock_recover_gmdb(uint32 node_id); #define glx$glock_reform_galaxy GLX$GLOCK_REFORM_GALAXY int glx$glock_reform_galaxy(void); #define glx$glock_validate_gmdb GLX$GLOCK_VALIDATE_GMDB int glx$glock_validate_gmdb(uint32 scope); /* Galaxy CPU Communications routines */ #define glx$cpucom_galaxy_exit GLX$CPUCOM_GALAXY_EXIT int glx$cpucom_galaxy_exit(int time_limit[2]); #define glx$cpucom_validate_gmdb GLX$CPUCOM_VALIDATE_GMDB int glx$cpucom_validate_gmdb(int scope); #define glx$cpucom_recover_gmdb GLX$CPUCOM_RECOVER_GMDB int glx$cpucom_recover_gmdb(int node_id); #define glx$cpucom_gmdb_init GLX$CPUCOM_GMDB_INIT int glx$cpucom_gmdb_init(void); #define glx$cpucom_gmdb_join GLX$CPUCOM_GMDB_JOIN int glx$cpucom_gmdb_join(void); #define glx$cpucom_gmdb_size GLX$CPUCOM_GMDB_SIZE int glx$cpucom_gmdb_size(UINT64_PQ seg_size); #define glx$cpucom_reform_galaxy GLX$CPUCOM_REFORM_GALAXY int glx$cpucom_reform_galaxy(void); #define glx$init_node_flags GLX$INIT_NODE_FLAGS void glx$init_node_flags (NODEB_PQ node_block_ptr); /* Galaxy CPU Information routines */ #define glx$cpuinfo_galaxy_exit GLX$CPUINFO_GALAXY_EXIT int glx$cpuinfo_galaxy_exit(int time_limit[2]); #define glx$cpuinfo_validate_gmdb GLX$CPUINFO_VALIDATE_GMDB int glx$cpuinfo_validate_gmdb(int scope); #define glx$cpuinfo_recover_gmdb GLX$CPUINFO_RECOVER_GMDB int glx$cpuinfo_recover_gmdb(int node_id); #define glx$cpuinfo_gmdb_init GLX$CPUINFO_GMDB_INIT int glx$cpuinfo_gmdb_init(void); #define glx$cpuinfo_gmdb_join GLX$CPUINFO_GMDB_JOIN int glx$cpuinfo_gmdb_join(void); #define glx$cpuinfo_gmdb_size GLX$CPUINFO_GMDB_SIZE int glx$cpuinfo_gmdb_size(UINT64_PQ seg_size); #define glx$cpuinfo_reform_galaxy GLX$CPUINFO_REFORM_GALAXY int glx$cpuinfo_reform_galaxy(void); #pragma __required_pointer_size __short #endif /* Galaxy Communication routines */ #define glx$instance_bit_notify GLX$INSTANCE_BIT_NOTIFY int glx$instance_bit_notify(int instance_id, uint64 bitdefs); #define glx$all_instance_bit_notify GLX$ALL_INSTANCE_BIT_NOTIFY int glx$all_instance_bit_notify(uint64 bitdefs,uint64 flags); #define glx$cpu_bit_notify GLX$CPU_BIT_NOTIFY int glx$cpu_bit_notify(int cpu_id, uint64 bitdefs); #define glx$cpu_packet_notify GLX$CPU_PACKET_NOTIFY int glx$cpu_packet_notify(int cpu_id, int instance_id, VOID_PQ packet); #define glx$instance_packet_notify GLX$INSTANCE_PACKET_NOTIFY int glx$instance_packet_notify(int instance_id, uint32 comp_id, uint32 flags, CHAR_PQ packet, uint64 length); #define glx$find_instance_primary GLX$FIND_INSTANCE_PRIMARY int glx$find_instance_primary(int instance_id, INT_PQ cpuid_ptr, UINT64_PQ incarn_ptr); #define glx$find_all_primaries GLX$FIND_ALL_PRIMARIES int glx$find_all_primaries(UINT64_PQ cpumask, UINT64_PQ partmask); #define glx$get_cpu_handle_owner GLX$GET_CPU_HANDLE_OWNER int glx$get_cpu_handle_owner(int cpu_id, VOID_PPQ handle_ptr, VOID_PPQ owner_ptr); #define glx$validate_partition_id GLX$VALIDATE_PARTITION_ID int glx$validate_partition_id(int node_id, VOID_PPQ handle_ptr); #define glx$validate_config_tree GLX$VALIDATE_CONFIG_TREE int glx$validate_config_tree(void); #define glx$find_partition_name GLX$FIND_PARTITION_NAME int glx$find_partition_name (CHAR_PQ name_string, INT64_PQ part_id_ptr, VOID_PPQ handle_ptr); /* Galaxy Membership Services routines */ #define acquire_gmdb ACQUIRE_GMDB int acquire_gmdb(void); #define release_gmdb RELEASE_GMDB void release_gmdb (unsigned broken); #define glx$init_gmdb GLX$INIT_GMDB void glx$init_gmdb (void); #define glx$join_gmdb GLX$JOIN_GMDB int glx$join_gmdb (void); #define glx$initialize GLX$INITIALIZE int glx$initialize (void * image_data_block, INIRTN * flags); #define glx$kick_off_join GLX$KICK_OFF_JOIN void glx$kick_off_join (void); #define glx$join_galaxy GLX$JOIN_GALAXY void glx$join_galaxy (KPB * kpb); #define glx$leave_galaxy GLX$LEAVE_GALAXY int glx$leave_galaxy (void); #define glx$finish_leaving GLX$FINISH_LEAVING void glx$finish_leaving (void); #define glx$exit_cleanup_done GLX$EXIT_CLEANUP_DONE void glx$exit_cleanup_done (int subfac, int cleanupstatus); #define glx$local_crash GLX$LOCAL_CRASH void glx$local_crash (int bugcheckcode); #define glx$crash_all_nodes GLX$CRASH_ALL_NODES int glx$crash_all_nodes (int reason_code); #define glx$update_heartbeat GLX$UPDATE_HEARTBEAT void glx$update_heartbeat (void); #define glx$log_message GLX$LOG_MESSAGE void glx$log_message (char *console_string, int console_len, ... ); #define glx$reg_member_callback GLX$REG_MEMBER_CALLBACK int glx$reg_member_callback (void routine (uint64 info, int type), uint64 info); #define glx$del_member_callback GLX$DEL_MEMBER_CALLBACK int glx$del_member_callback (void routine (uint64 info, int type), uint64 info); #define glx$mem_change_fork GLX$MEM_CHANGE_FORK void glx$mem_change_fork (void * foo1, void * foo2, FKB * fkb); #define glx$remote_crash_fork GLX$REMOTE_CRASH_FORK void glx$remote_crash_fork (void * foo1, void * foo2, FKB * fkb); #define glx$remove_node_start GLX$REMOVE_NODE_START void glx$remove_node_start (KPB * kpb); #define glx$remove_node GLX$REMOVE_NODE int glx$remove_node (int node_id); #define glx$reform_galaxy_fork GLX$REFORM_GALAXY_FORK void glx$reform_galaxy_fork (void * foo1, void * foo2, FKB * fkb); #define glx$reform_galaxy GLX$REFORM_GALAXY int glx$reform_galaxy (int reason); #define glx$start_validate_fork GLX$START_VALIDATE_FORK void glx$start_validate_fork (void * foo1, void * foo2, FKB * fkb); #define glx$done_validate_fork GLX$DONE_VALIDATE_FORK void glx$done_validate_fork (void * foo1, void * foo2, FKB * fkb); #define glx$validate_galaxy GLX$VALIDATE_GALAXY int glx$validate_galaxy (void); #define glx$node_leaving_fork GLX$NODE_LEAVING_FORK void glx$node_leaving_fork (void * foo1, void * foo2, FKB * fkb); #define glx$get_member_info GLX$GET_MEMBER_INFO int glx$get_member_info (int request, int node_id, MBR_INFO_PQ buf, int len); #define glx$reform_rejoin_fork GLX$REFORM_REJOIN_FORK void glx$reform_rejoin_fork (void * foo1, void * foo2, FKB * fkb); #define glx$check_dead_node_fork GLX$CHECK_DEAD_NODE_FORK void glx$check_dead_node_fork (void * foo1, void * foo2, FKB * fkb); /* Galaxy execlet internal use only - only does check for the GMDB */ #define get_member_info GET_MEMBER_INFO int get_member_info (int request, int node_id, MBR_INFO_PQ buf, int len); /* Galaxy IP interrupt handlers */ #define glx$hnd_crash_all_nodes GLX$HND_CRASH_ALL_NODES void glx$hnd_crash_all_nodes (void); #define glx$hnd_reform_galaxy GLX$HND_REFORM_GALAXY void glx$hnd_reform_galaxy (void); #define glx$hnd_reform_rejoin GLX$HND_REFORM_REJOIN void glx$hnd_reform_rejoin (void); #define glx$hnd_remote_crash GLX$HND_REMOTE_CRASH void glx$hnd_remote_crash (void); #define glx$hnd_remote_pfn_found GLX$HND_REMOTE_PFN_FOUND void glx$hnd_remote_pfn_found (void); #define glx$hnd_start_validate GLX$HND_START_VALIDATE void glx$hnd_start_validate (void); #define glx$hnd_done_validate GLX$HND_DONE_VALIDATE void glx$hnd_done_validate (void); #define glx$hnd_node_leaving GLX$HND_NODE_LEAVING void glx$hnd_node_leaving (void); #define glx$hnd_membership_change GLX$HND_MEMBERSHIP_CHANGE void glx$hnd_membership_change (void); #define glx$map_bitmap GLX$MAP_BITMAP int glx$map_bitmap (uint32 start_pfn, uint32 page_count, UINT64_PPQ bitmap_va_p); #define glx$unmap_bitmap GLX$UNMAP_BITMAP int glx$unmap_bitmap (uint32 start_pfn, uint32 page_count, UINT64_PQ bitmap_va); #define glx$good_page_in_bitmap GLX$GOOD_PAGE_IN_BITMAP int glx$good_page_in_bitmap (uint32 start_pfn, uint32 page_count, UINT64_PQ bitmap_va, uint32 pfn); #ifdef VMS$PFNBITS_32 #define glx$good_range_in_bitmap GLX$GOOD_RANGE_IN_BITMAP int glx$good_range_in_bitmap (uint32 start_pfn, uint32 page_count, INT_PQ good_status_p, UINT32_PQ first_bad_page_p); #endif #define glx$cfg_compat GLX$CFG_COMPAT int glx$cfg_compat(void); #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __restore #endif #endif /* __GLX_ROUTINES_LOADED */