/**/ /***************************************************************************/ /** **/ /** © 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:57 by OpenVMS SDL EV3-3 */ /* Source: 25-FEB-2004 17:37:42 $1$DGA7274:[LIB_H.SRC]SMCIDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $SMCIDEF ***/ #ifndef __SMCIDEF_LOADED #define __SMCIDEF_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 /*+ */ /* PBTQE - PB TQE */ /* */ /* PB TQE is a standard TQE with some extention fields added */ /* at the end. */ /*- */ #include #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _pb_tqe { #pragma __nomember_alignment TQE pbtqe$r_tqe_p; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif void *pbtqe$ps_dispatch_table; #pragma __nomember_alignment char pbtqe$b_fill_0_ [4]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif int pbtqe$l_next_step; #pragma __nomember_alignment int pbtqe$l_soft_errcnt; } PB_TQE; /*+ */ /* SMCH$ - Shared Memory Channel Block */ /* */ /*- */ #define SMCH$K_LENGTH 52 /*Length of structure */ #define SMCH$C_LENGTH 52 /*Length of structure */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _smch { #pragma __nomember_alignment unsigned __int64 smch$q_creation_time; /* time of creation */ unsigned short int smch$w_size; /* Size of SMCH$ in bytes */ unsigned char smch$b_type; /* Structure type DYN$C_SMCI */ unsigned char smch$b_subtype; /* Structure sub-type DYN$C_SMCI_SMCH */ unsigned int smch$l_creator_node; /* gNode ID of creator */ unsigned __int64 smch$q_virtual_size; /* Max bytes for region */ unsigned __int64 smch$q_physical_size; /* Physical bytes for region */ int smch$l_node_block [2]; /* Offset to A's SMND$ structure */ unsigned int smch$l_buffer_start; /* offset to head of entries section */ unsigned int smch$l_buffer_end; /* offset to end of entries section */ unsigned int smch$l_total_buffers; /* Number of carved channels */ char smch$b_fill_1_ [4]; } SMCH; /*+ */ /* */ /* */ /* SMND$ - Shared Memory Node Specific Data */ /* */ /* */ /*- */ #define SMCI$K_VERSION 2 #define SMCI$K_ECO 0 #define SMND$K_V1 0 /* V1 capabilities */ #define SMND$M_OPEN 0x1 #define SMND$M_NORM_SHTDWN 0x2 #define SMND$K_MAXPRIO_IDX 1 /* max. prio index */ #define SMND$C_MAXPRIO_IDX 1 /* max. prio index */ #define SMND$K_MAXPRIO 2 /* number of priorities */ #define SMND$C_MAXPRIO 2 /* number of priorities */ #define SMND$K_LENGTH 192 /*Length of structure */ #define SMND$C_LENGTH 192 /*Length of structure */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _smnd { /* constant VERSION equals 1 prefix SMCI$ tag K; */ #pragma __nomember_alignment __union { unsigned __int64 smnd$q_version; /* SMCH$ Structure Version */ __struct { unsigned int smnd$l_eco_level; /* SMCH$ ECO Level */ unsigned int smnd$l_version; /* SMCH$ Structure Version */ } smnd$r_channel_ver; } smnd$r_channel_version; unsigned short int smnd$w_size; /* Size of SMND$ in bytes */ unsigned char smnd$b_type; /* Structure type DYN$C_SMCI */ unsigned char smnd$b_subtype; /* Structure sub-type DYN$C_SMCI_SMND */ int smnd$l_chan_char; /* Node Capabilites */ int smnd$l_filler; /* Node Capabilites */ unsigned int smnd$l_gnode; /* gNode ID */ __union { unsigned __int64 smnd$q_status; /* status quadword */ __struct { unsigned smnd$v_open : 1; /* node ready */ unsigned smnd$v_norm_shtdwn : 1; /* normal shutdown */ unsigned smnd$v_fill_2_ : 6; } smnd$r_status_bits; } smnd$r_status_flags; unsigned int smnd$l_free_head; /* head of the Harter list */ unsigned int smnd$l_mapped; /* number of pages mapped */ unsigned __int64 smnd$q_npings; /* Number of pings */ unsigned __int64 smnd$q_npings_skipped; /* Number of times we didn't ping */ __int64 smnd$q_nallocated; /* Number of allocated buffers */ /* */ /* We use a structure instead of just a quad/long-word because */ /* insqti - remqti lock 64 bytes at a time, and we don't want to */ /* lock a queue that other node is trying to access */ /* */ __struct { __union { unsigned __int64 smnd$q_work_queue; /* */ unsigned int smnd$l_work_queue; /* */ unsigned char smnd$b_qbytes [64]; } smnd$r_wq_cl; } smnd$r_wq_cls [2]; } SMND; #if !defined(__VAXC) #define smnd$q_version smnd$r_channel_version.smnd$q_version #define smnd$l_eco_level smnd$r_channel_version.smnd$r_channel_ver.smnd$l_eco_level #define smnd$l_version smnd$r_channel_version.smnd$r_channel_ver.smnd$l_version #define smnd$q_status smnd$r_status_flags.smnd$q_status #define smnd$v_open smnd$r_status_flags.smnd$r_status_bits.smnd$v_open #define smnd$v_norm_shtdwn smnd$r_status_flags.smnd$r_status_bits.smnd$v_norm_shtdwn #define smnd$q_work_queue smnd$r_wq_cl.smnd$q_work_queue #define smnd$l_work_queue smnd$r_wq_cl.smnd$l_work_queue #define smnd$b_qbytes smnd$r_wq_cl.smnd$b_qbytes #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* SMWE$ - Work entry header */ /* */ /*- */ #define SMWE$K_FREE 0 #define SMWE$K_SENDING 1 #define SMWE$K_ALLOCATED 2 #define SMWE$K_INSTANCE_OFFSET 2 #define SMWE$K_LENGTH 24 /*Length of structure */ #define SMWE$C_LENGTH 24 /*Length of structure */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _smwe { #pragma __nomember_alignment unsigned int smwe$l_link [2]; /* A and B forward link */ unsigned short int smwe$w_size; /* Size of SMND$ in bytes */ unsigned char smwe$b_type; /* Structure type DYN$C_SMCI */ unsigned char smwe$b_subtype; /* Structure sub-type DYN$C_SMCI_SMWE */ unsigned int smwe$l_offset; /* offset from channel block */ __union { unsigned int smwe$l_status; /* Longword for clearing */ __struct { unsigned short int smwe$w_state; unsigned short int smwe$w_instance; /* Will be 2 plus instance 0/1 */ /* (2 flags new usage) */ } smwe$r_status_words; } smwe$r_work_status; unsigned int smwe$l_seq; /* sequential number */ unsigned int smwe$l_body; /* dummy, pointer to SCS buffer */ char smwe$b_fill_3_ [4]; } SMWE; #if !defined(__VAXC) #define smwe$l_status smwe$r_work_status.smwe$l_status #define smwe$w_state smwe$r_work_status.smwe$r_status_words.smwe$w_state #define smwe$w_instance smwe$r_work_status.smwe$r_status_words.smwe$w_instance #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Negotiation block */ /* */ /*- */ #define NB$M_READY 0x1 #define NB$M_AGREE_H 0x2 #define NB$K_LENGTH 240 /* Length of structure */ #define NB$C_LENGTH 240 /* Length of structure */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _nb { #pragma __nomember_alignment unsigned __int64 nb$q_reserved; /* padding */ unsigned short int nb$w_size; /* Size of NB$ in bytes */ unsigned char nb$b_type; /* Structure type DYN$C_SMCI */ unsigned char nb$b_subtype; /* Structure sub-type DYN$C_SMCI_NB */ unsigned int nb$l_reserved; /* padding */ __union { __struct { unsigned nb$v_ready : 1; /* node ready writing */ unsigned nb$v_agree_h : 1; /* node agreed */ unsigned nb$v_fill_4_ : 6; } nb$r_nb_sts_bits; unsigned __int64 nb$q_nbsts; /* negotiation status quadword */ } nb$r_nbsts_flags [2]; unsigned __int64 nb$q_password [2]; /* password */ unsigned __int64 nb$q_nworkq [2]; /* number of work queues ??? */ unsigned __int64 nb$q_buffers [2]; /* number of buffers */ unsigned __int64 nb$q_netsize [2]; /* decnet header size */ unsigned __int64 nb$q_msg_dg_size [2]; /* buffer size */ unsigned __int64 nb$q_scshdr_size [2]; /* scs/ppd buffer header size */ unsigned __int64 nb$q_smwe_size [2]; /* channel buffer header size */ unsigned __int64 nb$q_smch_size [2]; /* channel header size */ unsigned __int64 nb$q_smnd_size [2]; /* node block size */ unsigned __int64 nb$q_chanchar [2]; /* channel characteristic */ unsigned __int64 nb$q_channel_add [2]; /* number of channels to expand */ unsigned __int64 nb$q_version [2]; /* number of channels to expand */ unsigned __int64 nb$q_eco_level [2]; /* number of channels to expand */ } NB; #if !defined(__VAXC) #define nb$v_ready nb$r_nb_sts_bits.nb$v_ready #define nb$v_agree_h nb$r_nb_sts_bits.nb$v_agree_h #define nb$q_nbsts nb$q_nbsts #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 NB * NB_PQ; /* Long pointer to a NB structure. */ #pragma __required_pointer_size __restore /* Return to previous pointer size */ #else typedef unsigned __int64 NB_PQ; #endif /* __INITIAL_POINTER_SIZE */ /*+ */ /* */ /* Channel Handle */ /* */ /*- */ #define SMH$C_MAX_BUFFERS 1000 /* Number of buffers */ #define SMH$K_MAX_BUFFERS 1000 /* Number of buffers */ #define SMH$C_BUFFERS 20 /* Number of buffers */ #define SMH$K_BUFFERS 20 /* Number of buffers */ #define SMH$K_ADD_CHANNELS 1 /* */ #define SMH$C_ADD_CHANNELS 1 /* */ #define SMH$K_A_END 0 /* A_end node index */ #define SMH$K_B_END 1 /* B_end node index */ #define SMH$K_LENGTH 212 /* Length of structure */ #define SMH$C_LENGTH 212 /* Length of structure */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _smh { #pragma __nomember_alignment __int64 smh$q_filler; /* filler */ unsigned short int smh$w_size; /* Size of SMH$ in bytes */ unsigned char smh$b_type; /* Structure type DYN$C_SMCI */ unsigned char smh$b_subtype; /* Structure sub-type DYN$C_SMCI_SMH */ char smh$b_tag [64]; /* section name descriptor */ unsigned int smh$l_chn_size; /* channel entry size */ unsigned int smh$l_buffers; /* Number of buffers */ unsigned int smh$l_hdr_size; /* SMCH header */ unsigned int smh$l_ndh_size; /* SMND header */ unsigned int smh$l_chb_size; /* channel size */ unsigned int smh$l_virtual_size; /* virtual size */ unsigned int smh$l_physical_size; /* physical size */ unsigned int smh$l_expand; /* channel expansion in bytes */ char smh$b_fill_5_ [4]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif SHM_ID smh$r_reg_id; /* Channel region id */ #pragma __nomember_alignment __union { #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *smh$pq_channel; /* channel section pointer */ #else unsigned __int64 smh$pq_channel; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *smh$pl_channel; /* channel section pointer */ } smh$r_channel_va; unsigned int smh$l_gnode [2]; /* gNode number A,B */ unsigned int smh$l_lnode_idx; /* local end index A or B */ unsigned int smh$l_rnode_idx; /* remote end index A or B */ unsigned int smh$l_node_block [2]; /* gNode number A,B */ unsigned int smh$l_workq [4]; /* Other end work queue pointer */ unsigned int smh$l_freeq; /* Local-end Harter free head */ unsigned int smh$l_dbg [10]; /* debug */ char smh$b_fill_6_ [4]; } SMH; #if !defined(__VAXC) #define smh$pq_channel smh$r_channel_va.smh$pq_channel #define smh$pl_channel smh$r_channel_va.smh$pl_channel #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Channel pfn packet */ /* */ /*- */ #define SMPFN$K_LENGTH 8 /* Length of structure */ #define SMPFN$C_LENGTH 8 /* Length of structure */ #define SMPFN$K_DIVF 3 /* shift factor for division */ #define SMPFN$C_DIVF 3 /* shift factor for division */ /* */ #define SMPFN$K_MAXPKT 9 /* max number of packets */ #define SMPFN$C_MAXPKT 9 /* max number of packets */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _smpfn { #pragma __nomember_alignment __union { unsigned int smpfn$l_pfn; /* PFN */ unsigned int smpfn$i_pfn; /* PFN */ } smpfn$r_pfn_overlay; unsigned short int smpfn$w_length; /* data length */ unsigned short int smpfn$w_boffset; /* byte offset from beg. page */ /* The maximun number of pfn packets cannot be lower than 2. */ /* The maximun is limited by the lowest of this constant or whatever the */ /* the channel packet can hold */ /* */ } SMPFN; #if !defined(__VAXC) #define smpfn$l_pfn smpfn$r_pfn_overlay.smpfn$l_pfn #define smpfn$i_pfn smpfn$r_pfn_overlay.smpfn$i_pfn #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* SMCI_FLAGS Sysgen Parameter Flags */ /* */ /*- */ #define SMFL$M_ALLOW_SELF 0x1 #define SMFL$M_ALWAYS_LOAD 0x2 #define SMFL$M_VERBOSE 0x4 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _smfl { #pragma __nomember_alignment __union { __struct { unsigned smfl$v_allow_self : 1; /* Allow local communications */ unsigned smfl$v_always_load : 1; /* Load regardless of cluster */ unsigned smfl$v_verbose : 1; /* Output more info to the console */ unsigned smfl$v_fill_7_ : 5; } smfl$r_smfl_bits; unsigned int smfl$l_smfl_flags; /* Flags longword */ } smfl$r_smfl_union; char smfl$b_fill_8_ [4]; } SMFL; #if !defined(__VAXC) #define smfl$v_allow_self smfl$r_smfl_union.smfl$r_smfl_bits.smfl$v_allow_self #define smfl$v_always_load smfl$r_smfl_union.smfl$r_smfl_bits.smfl$v_always_load #define smfl$v_verbose smfl$r_smfl_union.smfl$r_smfl_bits.smfl$v_verbose #define smfl$l_smfl_flags smfl$r_smfl_union.smfl$l_smfl_flags #endif /* #if !defined(__VAXC) */ #define PBFKB$M_FKB_BUSY 0x1 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _pb_fkb { #pragma __nomember_alignment void *pbfkb$ps_flink; /* flink */ void *pbfkb$ps_blink; /* blink */ unsigned short int pbfkb$w_size; /* Size of SMH$ in bytes */ unsigned char pbfkb$b_type; /* Structure type DYN$C_SMCI */ unsigned char pbfkb$b_subtype; /* Structure sub-type DYN$C_SMCI_PBFKB */ __union { __struct { unsigned pbfkb$v_fkb_busy : 1; /* Fork block busy */ unsigned pbfkb$v_fill_9_ : 7; } pbfkb$r_pbfkb_bits; unsigned int pbfkb$l_flags; /* Flags longword */ } pbfkb$r_pbfkb_union; FKB pbfkb$r_fkb_p; /* The embedded fork block */ } PB_FKB; #if !defined(__VAXC) #define pbfkb$v_fkb_busy pbfkb$r_pbfkb_union.pbfkb$r_pbfkb_bits.pbfkb$v_fkb_busy #define pbfkb$l_flags pbfkb$r_pbfkb_union.pbfkb$l_flags #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 /* __SMCIDEF_LOADED */