/**/ /***************************************************************************/ /** **/ /** © Copyright 2010, 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. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 30-Mar-2010 17:37:56 by OpenVMS SDL EV3-3 */ /* Source: 20-MAR-2000 08:55:58 $1$DGA7274:[LIB_H.SRC]GMDBDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $gmdbdef ***/ #ifndef __GMDBDEF_LOADED #define __GMDBDEF_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 /* */ /* Ident X-24 */ /* */ /* GMDBDEF.SDL -- Galaxy GMDB definitions */ /* */ /* Copyright © Digital Equipment Corporation, 1997 - 1998. */ /* All rights reserved. */ /* */ /* 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. */ /* */ /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */ /* */ /* */ /* Description: This file contains the definitions for values and structures */ /* needed contained in the Galaxy Management Database (GMDB) */ /* */ /* Environment: OpenVMS Operating System, privileged kernel-mode */ /* */ /* Author: Paul Harter */ /* */ /* Modifications: */ /* */ /* X-24 Susan M. Lewis 20-Mar-2000 */ /* Add a glxint$ code for Galaxy machine check handling. */ /* */ /* X-23 CMOS Christian Moser 26-OCT-1998 */ /* Obsolete old version fields in GMDB and NODEB. */ /* */ /* X-22 CMOS Christian Moser 22-SEP-1998 */ /* Remove the semi-colon of the quadword constant definitions, */ /* otherwise they cannot be used within an IF statement. */ /* Add crash timestamp field to nodeblock, so we know when the */ /* crash reason field was written. */ /* */ /* X-21 RAB Richard A. Bishop 8-Sep-1998 */ /* Change names of reserved fields so that as changes */ /* are made over time, SDA can see them */ /* */ /* X-20 CMOS Christian Moser 7-SEP-1998 */ /* Remove duplicate constants GLX_ST$_xxx instroduced in X-19, */ /* Bliss doesn't like them. */ /* */ /* X-19 CMOS Christian Moser 17-AUG-1998 */ /* Add Revision and version fields, move important and static */ /* fields (offset/length pairs) to the beginning and add */ /* padding. This is needed for possible future changes to the */ /* GMDB without forcing the whole Galaxy to be shut off for */ /* a version upgrade. */ /* */ /* X-18 RAB Richard A. Bishop 6-Jul-1998 */ /* Fix up reserved field name */ /* */ /* X-17 JRK390 Jim Kauffman 23-Jun-1998 */ /* Add glxint$ code for packet passing */ /* */ /* X-16 LGD Linda G. Duffell 26-May-1998 */ /* Add a GLXINT$ code for Shared Memory LAN. */ /* */ /* X-15 PKH-G026 Paul K. Harter, Jr. 2-Apr-1998 */ /* Change last_heartbeat field in node block to a quadword. */ /* */ /* X-14 AHM044 Drew Mason 2-Apr-1998 */ /* Add crash status code field to the node block. */ /* */ /* X-13 PKH-G019 Paul K. Harter, Jr. 10-Mar-1998 */ /* Add node timeout field to gmdb and some tracking fields */ /* to the node block. */ /* */ /* X-12 GHJ Gregory H. Jordan 5-Mar-1998 */ /* Add a glxint$ code for Shared Memory CI. */ /* */ /* X-11 AHM043 Drew Mason 5-Mar-1998 */ /* Add gmdb$q_died_time and gmdb$l_last_node. */ /* */ /* X-10 AHM043 Drew Mason 4-Mar-1998 */ /* Add nodeb$q_leaving_time. */ /* */ /* X-9 KLN2058 Karen L. Noel 3-Mar-1998 */ /* Add glxint$ codes for nodes attaching and detaching */ /* to and from shared memory regions. */ /* */ /* X-8 RAB Richard A. Bishop 26-Feb-1998 */ /* Add changes to enhance SDA support: word for gmdbl flags, */ /* some reserved fields, type/subtype for node block. */ /* */ /* X-7 AHM039 Drew Mason 18-Feb-1998 */ /* Add fields for node being removed and removal start time. */ /* */ /* X-6 AHM031 Drew Mason 12-Jan-1998 */ /* Add crash reason to the node block. */ /* */ /* X-5 JRK390 Jim Kauffman 8-Jan-1998 */ /* Locking communication bit definitions */ /* */ /* X-4 PKH-G005 Paul K. Harter, Jr. 18-Dec-1997 */ /* Added upper-bound values to galaxy and node state. */ /* */ /* X-3 PKH-G003 Paul K. Harter, Jr. 2-Dec-1997 */ /* Made fields in gmdb_lock naturally aligned. Added */ /* last_joiner to gmdb, and made incarnations into */ /* quadwords. Fixed typo in "to_remove_off" */ /* */ /* X-2 PKH-G001 Paul K. Harter, Jr. 19-Nov-1997 */ /* Added GMDB and NODEB fields and comments. Inserted */ /* alignment and padding. Added "broken" to gmdb lock. */ /* */ /* X-1 KLN2010 Karen L. Noel 23-Oct-1997 */ /* Initial entry */ /* */ #include /* Define the MMAP type; GMDB contains an embedded MMAP type */ /* values for galaxy state. */ #define GLX_ST$_ALL_DEAD 0 #define GLX_ST$_CREATING 1 #define GLX_ST$_NODE_JOINING 2 #define GLX_ST$_NODE_LEAVING 3 #define GLX_ST$_OPERATIONAL 4 #define GLX_ST$_RECOVERING 5 #define GLX_ST$_VALIDATING 6 #define GLX_ST$_REFORMING 7 #define GLX_ST$_REFORM_PEND 8 #define GLX_ST$_CRASHING 9 #define GLX_ST$_CRASH_PEND 10 #define GLX_ST$_TOO_BIG 11 #define NB_ST$_DEAD 0 #define NB_ST$_BOOTING 1 #define NB_ST$_CREATING 2 #define NB_ST$_JOINING 3 #define NB_ST$_LEAVING 4 #define NB_ST$_MEMBER 5 #define NB_ST$_TOO_BIG 6 #define GMDBL$M_LOCKED 0x1 #define GMDBL$M_BROKEN 0x2 #define GMDBL$M_RESERVED_2_15 0xFFFC #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef union _gmdb_lock { #pragma __nomember_alignment unsigned __int64 gmdbl$q_quad; __struct { __union { unsigned short int gmdbl$w_flags; __struct { unsigned gmdbl$v_locked : 1; /* lock is currently held */ unsigned gmdbl$v_broken : 1; /* lock was taken from dead node */ unsigned gmdbl$v_reserved_2_15 : 14; } gmdbl$r_flags_bits; } gmdbl$r_flags_overlay; unsigned short int gmdbl$w_extra; unsigned int gmdbl$l_owner; /* if held, current owner */ } gmdbl$r_fields; } GMDB_LOCK; #if !defined(__VAXC) #define gmdbl$w_flags gmdbl$r_fields.gmdbl$r_flags_overlay.gmdbl$w_flags #define gmdbl$v_locked gmdbl$r_fields.gmdbl$r_flags_overlay.gmdbl$r_flags_bits.gmdbl$v_locked #define gmdbl$v_broken gmdbl$r_fields.gmdbl$r_flags_overlay.gmdbl$r_flags_bits.gmdbl$v_broken #define gmdbl$v_reserved_2_15 gmdbl$r_fields.gmdbl$r_flags_overlay.gmdbl$r_flags_bits.gmdbl$v_reserved_2_15 #define gmdbl$w_extra gmdbl$r_fields.gmdbl$w_extra #define gmdbl$l_owner gmdbl$r_fields.gmdbl$l_owner #endif /* #if !defined(__VAXC) */ /* GMDB revision and Galaxy version */ /* */ /* The Galaxy creator will fill in the GMDB revision field with GMDB$K_REVISION */ /* and any joining instances will verify their GMDB$K_MIN_REV against the GMDB */ /* revision. Any compatible change to the GMDB will bump the revision, and any */ /* incompatible change will also bump the minimum revision. */ /* Each Galaxy instance has a major and minor version, which will be used */ /* during the join decision. */ /* */ #define GMDB$K_PATTERN_L 1481393956 /* string "$GLX" */ #define GMDB$K_PATTERN_H 1111772487 /* string "GMDB" */ /* GMDB Revision Matrix: */ /* --------------------- */ /* Current Rev: Compatible with: Comment: */ /* 1.0 1.0 Initial Galaxy Implementation */ /* */ #define GMDB$K_REV_MAJ 1 /* major GMDB revision */ #define GMDB$K_REV_MIN 0 /* minor GMDB revision */ #define GMDB$K_REV1 1 /* initial Galaxy V1.0 */ /* Galaxy Version Matrix: */ /* ---------------------- */ /* Current Vers: Compatible with: Comment: */ /* 1.0 1.0 Initial Galaxy Implementation */ /* */ #define GLX$K_VERS_MAJ 1 /* Major Galaxy version */ #define GLX$K_VERS_MIN 0 /* Minor Galaxy version */ #define GLX$K_MIN_ALLOWED_MAJ 1 /* minimum Galaxy version allowed */ #define GLX$K_MIN_ALLOWED_MIN 0 /* minimum Galaxy version allowed */ #define GMDB$M_GLOCK 0x1 #define GMDB$M_SHMEM 0x2 #define GMDB$M_CPUCOM 0x4 #define GMDB$M_CPUINFO 0x8 #define GMDB$M_MEMBER 0x10 #define GMDB$M_RESERVED_5_31 0xFFFFFFE0 #define GMDB$C_LENGTH 8192 /* length of fixed-size portion of GMDB */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __octaword #else #pragma __nomember_alignment #endif typedef struct _gmdb { /* Galaxy Management Database Header */ /* */ /* This is the fixed-length portion of the GMDB header. The rest */ /* of the header (the variable-length portion) is allocated immediately */ /* following this portion from a single PFN allocation. */ /* */ /* The total size of the header is the sum of the following rounded up */ /* to the nearest full page: */ /* */ /* GMDB$C_LENGTH - fixed length portion */ /* MAX_NODES * NODEB$C_LENGTH - node block array */ /* 1 * padTo128(exe$cbb_get_size(MAX_NODES)) - membership bit mask CBB */ /* */ /* */ #pragma __nomember_alignment unsigned __int64 gmdb$q_pattern; /* GMDB Pattern */ /* New Standard VMS type/subtype word at offset 8 */ unsigned short int gmdb$w_mbo; /* Must be one: implies quad size field */ unsigned char gmdb$b_type; /* Dynamic structure type */ unsigned char gmdb$b_subtype; /* Dynamic structure subtype */ char gmdb$b_fill_0_ [4]; unsigned __int64 gmdb$q_base_size; /* size of gmdb base section */ unsigned __int64 gmdb$q_total_size; /* size of entire gmdb */ /* GMDB lock quadword - synchronize access to GMDB - uses special acquire */ /* and release that verify node heartbeat to break */ /* lock held by a crashed node. */ /* */ GMDB_LOCK gmdb$r_lock; unsigned int gmdb$l_spares_0 [6]; /* pad to next 64-byte boundary */ __union { unsigned __int64 gmdb$q_revision; /* GMDB Revision */ __struct { unsigned int gmdb$l_revision_minor; unsigned int gmdb$l_revision_major; } gmdb$r_revision_fields; } gmdb$r_revision_overlay; /* The following operational version fields are filled in by looking at the */ /* Galaxy version field of all members. The lowest version becomes the current */ /* minimum operational version, and the highest the maximum operational version */ /* The minimum version allowed is needed during the join decision to figure */ /* out if an instance can join an existing Galaxy or not. */ /* */ __union { unsigned __int64 gmdb$q_min_vers_operational; /* min Galaxy version */ __struct { unsigned int gmdb$l_min_vers_op_minor; unsigned int gmdb$l_min_vers_op_major; } gmdb$r_min_vers_op_fields; } gmdb$r_min_vers_op_overlay; __union { unsigned __int64 gmdb$q_max_vers_operational; /* max Galaxy version */ __struct { unsigned int gmdb$l_max_vers_op_minor; unsigned int gmdb$l_max_vers_op_major; } gmdb$r_max_vers_op_fields; } gmdb$r_max_vers_op_overlay; __union { unsigned __int64 gmdb$q_min_vers_allowed; /* min Galaxy version allowed */ __struct { unsigned int gmdb$l_min_vers_allowed_minor; unsigned int gmdb$l_min_vers_allowed_major; } gmdb$r_min_vers_allowed_fields; } gmdb$r_min_vers_allowed_overlay; /* */ /* Offset-length pairs for sub-facility specific segments */ /* */ unsigned __int64 gmdb$q_nodeb_off; /* offset to node block array */ unsigned __int64 gmdb$q_nodeb_size; /* nodeblock size */ unsigned __int64 gmdb$q_mmask_off; /* offset to galaxy membership mask (CBB) */ unsigned __int64 gmdb$q_mmask_len; /* membership mask length */ unsigned __int64 gmdb$q_glock_off; /* offset to galaxy locks segment */ unsigned __int64 gmdb$q_glock_len; /* galaxy locks segment length */ unsigned __int64 gmdb$q_shmem_off; /* offset to shared memory segment */ unsigned __int64 gmdb$q_shmem_len; /* shared memory segment length */ unsigned __int64 gmdb$q_cpucom_off; /* offset to cpu communications segment */ unsigned __int64 gmdb$q_cpucom_len; /* cpu communications segment length */ unsigned __int64 gmdb$q_cpuinfo_off; /* offset to cpu information segment */ unsigned __int64 gmdb$q_cpuinfo_len; /* cpu information segment length */ unsigned __int64 gmdb$q_member_off; /* (reserved) offset to membership segment */ unsigned __int64 gmdb$q_member_len; /* (reserved) membership segment length */ unsigned int gmdb$l_spares_1 [76]; /* pad to next 512-byte boundary */ /* */ MMAP gmdb$r_mmap; /* MMAP for the rest of the GMDB */ unsigned int gmdb$l_fill_1; /* unused field */ unsigned int gmdb$l_max_node_id; /* maximum node_id this platform */ unsigned int gmdb$l_break_owner; /* node holding lock while it was broken */ unsigned int gmdb$l_breaker_id; /* node breaking lock */ __int64 gmdb$q_incarnation; /* galaxy incarnation count */ unsigned __int64 gmdb$q_time; /* galaxy creation time (systime) */ unsigned __int64 gmdb$q_died_time; /* systime galaxy died */ unsigned int gmdb$l_state; /* galaxy state */ unsigned int gmdb$l_node_timeout; /* time in msecs. to call a node dead. */ unsigned int gmdb$l_creator_node; /* creator node for this incarnation */ unsigned int gmdb$l_remover_node; /* node_id of node removing dead members */ unsigned int gmdb$l_last_joiner; /* node_id of last node to join galaxy. */ unsigned int gmdb$l_last_leaver; /* node_id of last node to leave galaxy. */ unsigned __int64 gmdb$q_to_remove_off; /* offset to list of nodes to be removed */ unsigned int gmdb$l_crash_node; /* node_id of node requesting crash */ unsigned int gmdb$l_crash_reason; /* reason for crash_all_nodes */ unsigned int gmdb$l_reform_node; /* node_id of node requesting reform */ unsigned int gmdb$l_reform_reason; /* reason for reform */ unsigned int gmdb$l_valid_node; /* node_id of node requesting validate */ unsigned int gmdb$l_valid_reason; /* reason for validate */ unsigned __int64 gmdb$q_remove_time; /* start time of most recent removal */ unsigned int gmdb$l_being_removed; /* node_id of node currently being removed */ unsigned int gmdb$l_last_member; /* node_id of last node out when the */ /* galaxy died */ __union { unsigned int gmdb$l_subvlong; __struct { unsigned gmdb$v_glock : 1; unsigned gmdb$v_shmem : 1; unsigned gmdb$v_cpucom : 1; unsigned gmdb$v_cpuinfo : 1; unsigned gmdb$v_member : 1; unsigned gmdb$v_reserved_5_31 : 27; } gmdb$r_subvdone; } gmdb$r_subfac_valid; /* */ /* This is the end of the fixed-length portion of the gmdb header. */ /* Following this are structures whose size depends on the */ /* maximum number of galaxy nodes allowed for a particular platform. */ /* */ /* Offsets to these (from the base of the fixed length portion) are */ /* stored in the fixed length portion. */ /* */ /* nodeb array of node blocks */ /* */ /* members galaxy members */ /* crash_ack members who've confirmed crash (or in node block) */ /* validate_done members who've finished validate (or in node block) */ /* */ /* The sub-facility specific portions comprising the rest of the GMDB are */ /* allocated in segments of page granularity and have offsets stored in */ /* the gmdb */ /* */ /* */ /* The fixed-length portion of the header ends on a page boundary */ /* */ unsigned int gmdb$l_spares_3 [1875]; /* pad to next page boundary */ } GMDB; #if !defined(__VAXC) #define gmdb$q_revision gmdb$r_revision_overlay.gmdb$q_revision #define gmdb$l_revision_minor gmdb$r_revision_overlay.gmdb$r_revision_fields.gmdb$l_revision_minor #define gmdb$l_revision_major gmdb$r_revision_overlay.gmdb$r_revision_fields.gmdb$l_revision_major #define gmdb$q_min_vers_operational gmdb$r_min_vers_op_overlay.gmdb$q_min_vers_operational #define gmdb$l_min_vers_op_minor gmdb$r_min_vers_op_overlay.gmdb$r_min_vers_op_fields.gmdb$l_min_vers_op_minor #define gmdb$l_min_vers_op_major gmdb$r_min_vers_op_overlay.gmdb$r_min_vers_op_fields.gmdb$l_min_vers_op_major #define gmdb$q_max_vers_operational gmdb$r_max_vers_op_overlay.gmdb$q_max_vers_operational #define gmdb$l_max_vers_op_minor gmdb$r_max_vers_op_overlay.gmdb$r_max_vers_op_fields.gmdb$l_max_vers_op_minor #define gmdb$l_max_vers_op_major gmdb$r_max_vers_op_overlay.gmdb$r_max_vers_op_fields.gmdb$l_max_vers_op_major #define gmdb$q_min_vers_allowed gmdb$r_min_vers_allowed_overlay.gmdb$q_min_vers_allowed #define gmdb$l_min_vers_allowed_minor gmdb$r_min_vers_allowed_overlay.gmdb$r_min_vers_allowed_fields.gmdb$l_min_vers_allowed_minor #define gmdb$l_min_vers_allowed_major gmdb$r_min_vers_allowed_overlay.gmdb$r_min_vers_allowed_fields.gmdb$l_min_vers_allowed_major #define gmdb$l_subvlong gmdb$r_subfac_valid.gmdb$l_subvlong #define gmdb$v_glock gmdb$r_subfac_valid.gmdb$r_subvdone.gmdb$v_glock #define gmdb$v_shmem gmdb$r_subfac_valid.gmdb$r_subvdone.gmdb$v_shmem #define gmdb$v_cpucom gmdb$r_subfac_valid.gmdb$r_subvdone.gmdb$v_cpucom #define gmdb$v_cpuinfo gmdb$r_subfac_valid.gmdb$r_subvdone.gmdb$v_cpuinfo #define gmdb$v_member gmdb$r_subfac_valid.gmdb$r_subvdone.gmdb$v_member #define gmdb$v_reserved_5_31 gmdb$r_subfac_valid.gmdb$r_subvdone.gmdb$v_reserved_5_31 #endif /* #if !defined(__VAXC) */ #define GLXINT$M_BUGCHECK 0x1 #define GLXINT$M_MEMBER_CHANGE 0x2 #define GLXINT$M_NODE_CRASHING 0x4 #define GLXINT$M_CRASH_ALL_NODES 0x8 #define GLXINT$M_NODE_LEAVING 0x10 #define GLXINT$M_VALIDATE_START 0x20 #define GLXINT$M_VALIDATE_DONE 0x40 #define GLXINT$M_REFORM_GALAXY 0x80 #define GLXINT$M_REFORM_REJOIN 0x100 #define GLXINT$M_WRITABLE_PFN 0x200 #define GLXINT$M_CHECK_PROCESS 0x400 #define GLXINT$M_RELEASE_WAITERS 0x800 #define GLXINT$M_SHM_REG_ATTACH 0x1000 #define GLXINT$M_SHM_REG_DETACH 0x2000 #define GLXINT$M_SMCI_WORKQ 0x4000 #define GLXINT$M_SMLAN_INT 0x8000 #define GLXINT$M_MCHECK_REQ 0x10000 #define GLXINT$M_RESERVED_17_31 0xFFFE0000 #define GLXINT$M_PACKET_SENT 0x100000000 #define GLXINT$M_RESERVED_33_63 0xFFFFFFFE00000000 #define NODEB$C_MAX_WATCH_INDEX 4 /* watch heartbeat of at most 5 nodes */ #define NODEB$C_LENGTH 512 /* node block size */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __octaword #else #pragma __nomember_alignment #endif typedef struct _nodeb { #pragma __nomember_alignment unsigned __int64 nodeb$q_heartbeat; /* this node's heartbeat */ /* New Standard VMS type/subtype word at offset 8 */ unsigned short int nodeb$w_mbo; /* Must be one: implies quad size field */ unsigned char nodeb$b_type; /* Dynamic structure type */ unsigned char nodeb$b_subtype; /* Dynamic structure subtype */ unsigned int nodeb$l_state; /* node's current state */ unsigned __int64 nodeb$q_size; /* size of nodeblock */ __union { unsigned __int64 nodeb$q_version; /* instance version */ __struct { unsigned int nodeb$l_version_minor; unsigned int nodeb$l_version_major; } nodeb$r_version_fields; } nodeb$r_version_overlay; __union { unsigned __int64 nodeb$q_min_vers_allowed; /* min Galaxy version allowed */ __struct { unsigned int nodeb$l_min_vers_allowed_minor; unsigned int nodeb$l_min_vers_allowed_major; } nodeb$r_min_vers_allowed_fields; } nodeb$r_min_vers_allowed_overlay; __union { /* galaxy primitive IP-interrupt mask */ unsigned __int64 glxint$q_whole_mask; __struct { unsigned glxint$v_bugcheck : 1; /* immediate bugcheck - 0 */ unsigned glxint$v_member_change : 1; /* membership changed - 1 */ unsigned glxint$v_node_crashing : 1; /* sender node crashing - 2 */ unsigned glxint$v_crash_all_nodes : 1; /* crash all galaxy nodes - 3 */ unsigned glxint$v_node_leaving : 1; /* node leaving galaxy - 4 */ unsigned glxint$v_validate_start : 1; /* start galaxy validation - 5 */ unsigned glxint$v_validate_done : 1; /* validation completed - 6 */ unsigned glxint$v_reform_galaxy : 1; /* initiate galaxy reformation - 7 */ unsigned glxint$v_reform_rejoin : 1; /* reform: nodes down, rejoin now - 8 */ unsigned glxint$v_writable_pfn : 1; /* sender has writable remote PFN - 9 */ unsigned glxint$v_check_process : 1; /* check process existence - 10 */ unsigned glxint$v_release_waiters : 1; /* release glock waiters - 11 */ unsigned glxint$v_shm_reg_attach : 1; /* node is attaching to a region - 12 */ unsigned glxint$v_shm_reg_detach : 1; /* node is detaching from a region - 13 */ unsigned glxint$v_smci_workq : 1; /* process SMCI Work Queues - 14 */ unsigned glxint$v_smlan_int : 1; /* process SMLAN interrupts - 15 */ unsigned glxint$v_mcheck_req : 1; /* process machine check request - 16 */ unsigned glxint$v_reserved_17_31 : 15; unsigned glxint$v_packet_sent : 1; /* packet queued notification - 32 */ unsigned glxint$v_reserved_33_63 : 31; } nodeb$r_bits; } nodeb$r_prim_int_u; unsigned __int64 nodeb$q_time; /* time node joined galaxy (systime) */ unsigned __int64 nodeb$q_leaving_time; /* time node left galaxy (systime) */ unsigned __int64 nodeb$q_name; /* node's SCS node name */ __int64 nodeb$q_incarnation; /* node joined galaxy count */ unsigned int nodeb$l_was_creator; /* TRUE if this node created galaxy */ unsigned int nodeb$l_nval_done; /* node validation done */ unsigned int nodeb$l_crash_ack; /* node crash_all acknowledge */ unsigned int nodeb$l_reform_done; /* node reform done; ready to rejoin */ int nodeb$l_crash_reason; /* bugcheck code for local crash */ int nodeb$l_crash_status; /* system status code that caused */ /* Galaxy code to decide to crash */ /* with GLXFATAL */ unsigned int nodeb$l_fill_2; /* unused field */ unsigned int nodeb$l_lbrother; /* little brother (watched by this node) */ unsigned int nodeb$l_bbrother; /* big brother (who watches this node) */ unsigned int nodeb$l_last_watched; /* last valid entry in watched_nodes */ __struct { unsigned int nodeb$l_node_id; /* node_id of node to watch */ unsigned int nodeb$l_miss_count; /* consecutive no-increase observations */ unsigned __int64 nodeb$q_last_heartbeat; /* heartbeat last observation */ } nodeb$r_watched_nodes [5]; unsigned int nodeb$l_spares_0 [14]; /* pad to next 128-byte boundary */ unsigned __int64 nodeb$q_crash_time; /* timestamp, when crash reason was written */ unsigned int nodeb$l_spares [62]; /* pad to next 512-byte boundary */ } NODEB; #if !defined(__VAXC) #define nodeb$q_version nodeb$r_version_overlay.nodeb$q_version #define nodeb$l_version_minor nodeb$r_version_overlay.nodeb$r_version_fields.nodeb$l_version_minor #define nodeb$l_version_major nodeb$r_version_overlay.nodeb$r_version_fields.nodeb$l_version_major #define nodeb$q_min_vers_allowed nodeb$r_min_vers_allowed_overlay.nodeb$q_min_vers_allowed #define nodeb$l_min_vers_allowed_minor nodeb$r_min_vers_allowed_overlay.nodeb$r_min_vers_allowed_fields.nodeb$l_min_vers_allowed_mi\ nor #define nodeb$l_min_vers_allowed_major nodeb$r_min_vers_allowed_overlay.nodeb$r_min_vers_allowed_fields.nodeb$l_min_vers_allowed_ma\ jor #define glxint$q_whole_mask nodeb$r_prim_int_u.glxint$q_whole_mask #define glxint$v_bugcheck nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_bugcheck #define glxint$v_member_change nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_member_change #define glxint$v_node_crashing nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_node_crashing #define glxint$v_crash_all_nodes nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_crash_all_nodes #define glxint$v_node_leaving nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_node_leaving #define glxint$v_validate_start nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_validate_start #define glxint$v_validate_done nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_validate_done #define glxint$v_reform_galaxy nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_reform_galaxy #define glxint$v_reform_rejoin nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_reform_rejoin #define glxint$v_writable_pfn nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_writable_pfn #define glxint$v_check_process nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_check_process #define glxint$v_release_waiters nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_release_waiters #define glxint$v_shm_reg_attach nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_shm_reg_attach #define glxint$v_shm_reg_detach nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_shm_reg_detach #define glxint$v_smci_workq nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_smci_workq #define glxint$v_smlan_int nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_smlan_int #define glxint$v_mcheck_req nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_mcheck_req #define glxint$v_reserved_17_31 nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_reserved_17_31 #define glxint$v_packet_sent nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_packet_sent #define glxint$v_reserved_33_63 nodeb$r_prim_int_u.nodeb$r_bits.glxint$v_reserved_33_63 #define nodeb$l_node_id nodeb$l_node_id #define nodeb$l_miss_count nodeb$l_miss_count #define nodeb$q_last_heartbeat nodeb$q_last_heartbeat #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 GMDB *GMDB_PQ; /* Long pointer to a GMDB structure. */ typedef GMDB **GMDB_PPQ; /* Long pointer to a long pointer to a GMDB structure. */ typedef NODEB *NODEB_PQ; /* Long pointer to a node block structure. */ typedef NODEB **NODEB_PPQ; /* Long pointer to a long pointer to a node block. */ typedef GMDB_LOCK *GMDB_LOCK_PQ; /* Long pointer to the gmdb_lock. */ #pragma __required_pointer_size __restore /* Return to previous pointer size */ #else typedef unsigned __int64 GMDB_PQ; typedef unsigned __int64 GMDB_PPQ; typedef unsigned __int64 NODEB_PQ; typedef unsigned __int64 NODEB_PPQ; typedef unsigned __int64 GMDB_LOCK_PQ; #endif /* __INITIAL_POINTER_SIZE */ #define GMDB$K_PATTERN ((GMDB$K_PATTERN_H*0x100000000) + GMDB$K_PATTERN_L) #define GMDB$K_REVISION ((GMDB$K_REV_MAJ*0x100000000) + GMDB$K_REV_MIN) #define GLX$K_VERSION ((GLX$K_VERS_MAJ*0x100000000) + GLX$K_VERS_MIN) #define GLX$K_MIN_VERS_ALLOWED ((GLX$K_MIN_ALLOWED_MAJ*0x100000000) + GLX$K_MIN_ALLOWED_MIN) #if MMAP$C_LENGTH > 64 #error "MMAP$C_LENGTH greater than 64, exceeds embedded space in GMDB!" #endif #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 /* __GMDBDEF_LOADED */