/**/ /***************************************************************************/ /** **/ /** © 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:26:36 by OpenVMS SDL EV3-3 */ /* Source: 28-FEB-2007 17:05:15 $1$DGA7274:[LIB_H.SRC]SPLCODDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $SPLCODDEF ***/ #ifndef __SPLCODDEF_LOADED #define __SPLCODDEF_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 /*+ */ /* */ /* SPINLOCK INDEX DEFINITIONS */ /* */ /*- */ /* */ /* DEFINE THE HARDWARE LEVEL LOCKS (INDICES 0-F) */ /* */ #define SPL$C_EMB 32 /* EMB spinlock index */ #define SPL$C_MCHECK 33 /* Machine Check spinlock index */ #define SPL$C_MEGA 34 /* Kitchen sink of spinlocks */ #define SPL$C_HWCLK 36 /* HWCLK spinlock index */ #define SPL$C_INVALIDATE 38 /* INVALIDATE spinlock index */ #define SPL$C_PERFMON 40 /* PERFMON spinlock index */ #define SPL$C_POOL 42 /* POOL spinlock index */ #define SPL$C_MAILBOX 44 /* MAILBOX spinlock index */ #define SPL$C_IOLOCK11 46 /* IPL 11 I/O spinlock index */ #define SPL$C_IOLOCK10 47 /* IPL 10 I/O spinlock index */ #define SPL$C_IOLOCK9 48 /* IPL 9 I/O spinlock index */ #define SPL$C_SCHED 50 /* SCHED spinlock index */ #define SPL$C_MMG 52 /* Memory management spinlock index */ #define SPL$C_IO_MISC 54 /* Miscellaneous short time I/O spinlock index */ #define SPL$C_PORT 55 /* Multiple device ports index */ #define SPL$C_TIMER 56 /* TIMER spinlock index */ #define SPL$C_TX_SYNCH 57 /* Transaction processing lock */ #define SPL$C_IOLOCK8 58 /* IPL 8 I/O spinlock index */ #define SPL$C_LCKMGR 59 /* Lock Manager lock */ #define SPL$C_FILSYS 60 /* File system spinlock index */ #define SPL$C_QUEUEAST 62 /* QUEUEAST spinlock index */ #define SPL$C_SCS 58 /* SCS spinlock index */ /* Define dynamic spinlock symbol */ #define SPL$C_DYNAMIC 255 /* DYNAMIC spinlock non-index */ #define SPL$_MIN_INDEX 32 /* Min spinlock index */ #define SPL$_MAX_INDEX 62 /* Max spinlock index */ #define SPL$_NUM_LOCKS 31 /* Max number of spinlocks (ever) */ /* */ /* Define some system-wide multiprocessing control flags */ /* */ #define SMP$M_ENABLED 0x1 #define SMP$M_START_CPU 0x2 #define SMP$M_CRASH_CPU 0x4 #define SMP$M_TODR 0x8 #define SMP$M_UNMOD_DRIVER 0x10 #define SMP$M_TODR_ACK 0x20 #define SMP$M_SYNCH 0x40 #define SMP$M_BENIGN 0x80 #define SMP$M_MINIMUM_ACQUIRE 0x100 #define SMP$M_READ_SCC 0x200 #define SMP$M_READ_SCC_ACK 0x400 #define SMP$M_CLOCKS_SYNCH 0x800 #define SMP$M_DISPLAY_TRANSITIONS 0x1000 #define SMP$M_FW_STATE_CHECK 0x2000 #define SMP$M_MULTIQUAD_NMSP 0x4000 #define SMP$M_OVERRIDE 0x1 #define SMP$M_FOREVER 0x2 #define SMP$M_FKB_FRU_CHANGE 0x1 #define SMP$M_FKB_DOORBELL 0x2 #define SMP$S_SMPDEF 4 /* Old size name, synonym for SMP$S_SMP */ #define SMP$M_PORTLOCK 0x1 #define SMP$M_INIT_ONLY 0x2 #define SMP$M_KNOWN_BY_SDA 0x4 typedef struct _smp { __struct { /* SMP$GL_FLAGS */ unsigned smp$v_enabled : 1; /* SMP operation is enabled */ unsigned smp$v_start_cpu : 1; /* PRIMARY CPU has finished INIT */ unsigned smp$v_crash_cpu : 1; /* A CPU is initiating BUGCHECK */ unsigned smp$v_todr : 1; /* SMP$GL_PROPOSED_TODR in use */ unsigned smp$v_unmod_driver : 1; /* Unmodified driver is loaded */ unsigned smp$v_todr_ack : 1; /* SMP TODR operation complete */ unsigned smp$v_synch : 1; /* SMP SYNCHRONIZATION IMAGE LOADED */ unsigned smp$v_benign : 1; /* BENIGN STATE REQUESTED */ unsigned smp$v_minimum_acquire : 1; /* Least overhead in acquisition */ unsigned smp$v_read_scc : 1; /* Request PRIMARY CPU to read its SCC */ unsigned smp$v_read_scc_ack : 1; /* PRIMARY CPU has recorded its SCC value. */ unsigned smp$v_clocks_synch : 1; /* Clocks are synchronized....therefore */ /* soft affinity is supported on this system. */ unsigned smp$v_display_transitions : 1; /* Display verbose transition text */ unsigned smp$v_fw_state_check : 1; /* Toggle 1-second timer check for migrations */ unsigned smp$v_multiquad_nmsp : 1; /* Bitmaps of more than 1 quadword needed for namespace */ unsigned smp$v_fill_0_ : 1; } smp$r_flags; __struct { /* Input to STOP/CPU */ unsigned smp$v_override : 1; /* Skip checks before stopping CPU */ unsigned smp$v_forever : 1; /* FOREVER means remove from */ /* available set after stopping. */ unsigned smp$v_fill_1_ : 6; } smp$r_stop_cpu_flags; __struct { unsigned smp$v_fkb_fru_change : 1; /* FKB to indicate config tree change in use */ unsigned smp$v_fkb_doorbell : 1; /* FKB for doorbell console callback in use */ unsigned smp$v_fill_2_ : 6; } smp$r_cfg_fkb_flags; __struct { /* input flag parameters for smp$create_spinlock() */ unsigned smp$v_portlock : 1; /* set rank and subtype to portlock defaults */ unsigned smp$v_init_only : 1; /* initialize spinlocks only--don't allocate memory */ unsigned smp$v_known_by_sda : 1; /* note that SDA already recognizes this spinlock */ unsigned smp$v_fill_3_ : 5; } smp$r_creation_flags; } SMP; #if !defined(__VAXC) #define smp$v_enabled smp$r_flags.smp$v_enabled #define smp$v_start_cpu smp$r_flags.smp$v_start_cpu #define smp$v_crash_cpu smp$r_flags.smp$v_crash_cpu #define smp$v_todr smp$r_flags.smp$v_todr #define smp$v_unmod_driver smp$r_flags.smp$v_unmod_driver #define smp$v_todr_ack smp$r_flags.smp$v_todr_ack #define smp$v_synch smp$r_flags.smp$v_synch #define smp$v_benign smp$r_flags.smp$v_benign #define smp$v_minimum_acquire smp$r_flags.smp$v_minimum_acquire #define smp$v_read_scc smp$r_flags.smp$v_read_scc #define smp$v_read_scc_ack smp$r_flags.smp$v_read_scc_ack #define smp$v_clocks_synch smp$r_flags.smp$v_clocks_synch #define smp$v_display_transitions smp$r_flags.smp$v_display_transitions #define smp$v_fw_state_check smp$r_flags.smp$v_fw_state_check #define smp$v_multiquad_nmsp smp$r_flags.smp$v_multiquad_nmsp #define smp$v_override smp$r_stop_cpu_flags.smp$v_override #define smp$v_forever smp$r_stop_cpu_flags.smp$v_forever #define smp$v_fkb_fru_change smp$r_cfg_fkb_flags.smp$v_fkb_fru_change #define smp$v_fkb_doorbell smp$r_cfg_fkb_flags.smp$v_fkb_doorbell #define smp$v_portlock smp$r_creation_flags.smp$v_portlock #define smp$v_init_only smp$r_creation_flags.smp$v_init_only #define smp$v_known_by_sda smp$r_creation_flags.smp$v_known_by_sda #endif /* #if !defined(__VAXC) */ #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 /* __SPLCODDEF_LOADED */