/**/ /***************************************************************************/ /** **/ /** © 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:27:21 by OpenVMS SDL EV3-3 */ /* Source: 06-MAY-2005 05:49:03 $1$DGA7274:[LIB_H.SRC]LKBDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $LKBDEF ***/ #ifndef __LKBDEF_LOADED #define __LKBDEF_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 /*+ */ /* */ /* LKB - Lock Block */ /* */ /* Lock blocks represent lock requests (one block for each request). */ /* Each lock block has a corresponding entry in the lock id table which */ /* points to it. It is also linked onto one of the three state queues */ /* in a resource block (RSB). */ /* */ /*- */ #define LKB$M_FLAGS_VALID 0x4 #define LKB$M_PKAST 0x10 #define LKB$M_NODELETE 0x20 #define LKB$M_QUOTA 0x40 #define LKB$M_KAST 0x80 #define LKB$K_ACB64LEN 64 /* Length of ACB64 portion of LKB */ #define LKB$M_DCPLAST 0x1 #define LKB$M_ASYNC 0x4 #define LKB$M_BLKASTQED 0x8 #define LKB$M_MSTCPY 0x10 #define LKB$M_NOQUOTA 0x20 #define LKB$M_TIMOUTQ 0x40 #define LKB$M_WASSYSOWN 0x80 #define LKB$M_CVTTOSYS 0x100 #define LKB$M_PROTECT 0x200 #define LKB$M_RESEND 0x400 #define LKB$M_RM_RBRQD 0x800 #define LKB$M_FLOCK 0x1000 #define LKB$M_IP 0x2000 #define LKB$M_CACHED 0x4000 #define LKB$M_RNGBLK 0x8000 #define LKB$M_BRL 0x10000 #define LKB$M_NEWSUBRNG 0x20000 #define LKB$M_CVTSUBRNG 0x40000 #define LKB$M_RNGCHG 0x80000 #define LKB$M_2PC_IP 0x100000 #define LKB$M_2PC_PEND 0x200000 #define LKB$M_BLKASTFLG 0x400000 #define LKB$M_GRSUBRNG 0x800000 #define LKB$M_PCACHED 0x1000000 #define LKB$M_VALBLKRD 0x2000000 #define LKB$M_VALBLKWRT 0x4000000 #define LKB$M_DPC 0x8000000 #define LKB$M_PERCPU 0x10000000 #define LKB$M_INDEX 0xFFFFFF #define LKB$K_GRANTED 1 /* Granted */ #define LKB$K_CONVERT 0 /* Conversion */ #define LKB$K_WAITING -1 /* Waiting */ #define LKB$K_RETRY -2 /* Retry request */ #define LKB$K_SCSWAIT -3 /* SCS wait */ #define LKB$K_RSPNOTQED -4 /* Response not queued */ #define LKB$K_RSPQUEUED -5 /* Response queued */ #define LKB$K_RSPGRANTD -6 /* Response granted */ #define LKB$K_RSPDOLOCL -7 /* Response do locally */ #define LKB$K_RSPRESEND -8 /* Response resend */ #define LKB$K_RSPWAIT -9 /* Response wait */ #define LKB$K_RSP2PCRDY -10 /* Response ready */ #define LKB$K_RSPFATAL -11 /* Fatal Message Response */ #define LKB$M_DBLKAST 0x2 #define LKB$K_LENGTH 256 /* Length of LKB */ #define LKB$C_LENGTH 256 /* Length of LKB */ #define LKB$S_LKBDEF 256 /* Old size name - synonym */ #ifdef __cplusplus /* Define structure prototypes */ struct _acb; struct _lkb; struct _rsb; #endif /* #ifdef __cplusplus */ typedef struct _lkb$r_lkb { struct _acb *lkb$l_astqfl; /* AST Queue forward link */ struct _acb *lkb$l_astqbl; /* AST Queue backward link */ unsigned short int lkb$w_size; /* Size of LKB in bytes */ unsigned char lkb$b_type; /* Structure type */ __union { unsigned char lkb$b_rmod; /* Access mode of request */ __struct { unsigned lkb$v_mode : 2; /* Mode subfield */ unsigned lkb$v_flags_valid : 1; /* ACB flags valid indicator */ unsigned lkbdef$$_fill_1 : 1; unsigned lkb$v_pkast : 1; /* Piggyback Special Kernel AST */ unsigned lkb$v_nodelete : 1; /* Don't delete ACB on delivery */ unsigned lkb$v_quota : 1; /* Account for quota */ unsigned lkb$v_kast : 1; /* Special Kernel AST */ } lkb$r_fill_1_; } lkb$r_fill_0_; unsigned int lkb$l_pid; /* Process ID of requesting process */ unsigned int lkb$l_acb64x; /* Offset to ACB64X structure */ int lkb$l_acb_fill; unsigned int lkb$l_acb_flags; /* AST control flags */ unsigned int lkb$l_tpid; /* Kernel Thread ID */ void (*lkb$l_kast)(); /* Special Kernel AST address */ char lkb$b_spare_1 [4]; /* spare */ __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 (*lkb$pq_ast)(); /* Address of AST routine */ #else unsigned __int64 lkb$pq_ast; #endif unsigned short int lkb$w_rqseqnm; /* Request sequence number */ unsigned __int64 lkb$q_rqseqnm; /* Request sequence number */ } lkb$r_ast_overlay; __union { unsigned __int64 lkb$q_astprm; /* AST parameter */ unsigned int lkb$l_epid; /* EPID (Master copies only) */ } lkb$r_astprm_overlay; unsigned __int64 lkb$q_user_thread_id; /* ACB unique user thread identifier */ unsigned int lkb$l_acb; /* Pointer to ACB */ unsigned int lkb$l_refcnt; /* Sub-LKB reference count */ unsigned int lkb$l_flags; /* User specified flags */ __union { unsigned int lkb$l_status; /* Internal status */ __struct { unsigned lkb$v_dcplast : 1; /* Deliver Completion AST */ unsigned lkb$v_reserved_1 : 1; unsigned lkb$v_async : 1; /* Request completed asynchronously */ unsigned lkb$v_blkastqed : 1; /* Blocking AST has been queued */ unsigned lkb$v_mstcpy : 1; /* LKB is a Master copy */ unsigned lkb$v_noquota : 1; /* Don't charge quota */ unsigned lkb$v_timoutq : 1; /* LKB is on timeout queue */ unsigned lkb$v_wassysown : 1; /* Was System Owned lock */ unsigned lkb$v_cvttosys : 1; /* Convert to System Owned */ unsigned lkb$v_protect : 1; /* Protected lock */ unsigned lkb$v_resend : 1; /* Resend during failover */ unsigned lkb$v_rm_rbrqd : 1; /* Remaster rebuild required */ unsigned lkb$v_flock : 1; /* Fork lock */ unsigned lkb$v_ip : 1; /* Operation in progress */ unsigned lkb$v_cached : 1; /* LKB is in cache */ unsigned lkb$v_rngblk : 1; /* Range block specified */ unsigned lkb$v_brl : 1; /* Indicate byte range lock */ unsigned lkb$v_newsubrng : 1; /* New sub-range request */ unsigned lkb$v_cvtsubrng : 1; /* Sub-range convert request */ unsigned lkb$v_rngchg : 1; /* Changing range */ unsigned lkb$v_2pc_ip : 1; /* Two phase operation in progress */ unsigned lkb$v_2pc_pend : 1; /* Two phase operation pending */ unsigned lkb$v_blkastflg : 1; /* Indicates BLKAST specified */ unsigned lkb$v_grsubrng : 1; /* Granted sub-range lock */ unsigned lkb$v_pcached : 1; /* LKB is to be cached */ unsigned lkb$v_valblkrd : 1; /* Indicates read access to value block */ unsigned lkb$v_valblkwrt : 1; /* Indicates write access to value block */ unsigned lkb$v_dpc : 1; /* Delete pending cache */ unsigned lkb$v_percpu : 1; /* Per-CPU lock request */ unsigned lkb$v_fill_8_ : 3; } lkb$r_fill_3_; } lkb$r_fill_2_; unsigned int lkb$l_lkst1; /* First lock status longword */ __union { unsigned int lkb$l_lkst2; /* Second lock status longword */ __union { unsigned int lkb$l_lkid; /* Lock ID */ __struct { unsigned lkb$v_index : 24; /* Lock ID Index */ unsigned lkb$v_seqn : 8; /* Lock ID Sequence Number */ } lkb$r_fill_5_; } lkb$r_fill_4_; } lkb$r_lkst2_overlay; unsigned char lkb$b_rqmode; /* Request mode */ unsigned char lkb$b_grmode; /* Granted mode */ unsigned char lkb$b_tslt; /* Timestamp lifetime */ unsigned char lkb$b_efn; /* Event Flag Number */ __union { unsigned char lkb$b_state; /* Lock state */ unsigned int lkb$l_state; /* Lock state */ } lkb$r_state_overlay; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __octaword #else #pragma __nomember_alignment #endif #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 *lkb$q_sqfl; /* State queue forward link */ #else unsigned __int64 lkb$q_sqfl; #endif #pragma __nomember_alignment #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 *lkb$q_sqbl; /* State queue backward link */ #else unsigned __int64 lkb$q_sqbl; #endif #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __octaword #else #pragma __nomember_alignment #endif #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 *lkb$q_ownqfl; /* Owner queue forward link */ #else unsigned __int64 lkb$q_ownqfl; #endif #pragma __nomember_alignment #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 *lkb$q_ownqbl; /* Owner queue backward link */ #else unsigned __int64 lkb$q_ownqbl; #endif #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __octaword #else #pragma __nomember_alignment #endif #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 *lkb$q_timoutqfl; /* Timeout queue forward link */ #else unsigned __int64 lkb$q_timoutqfl; #endif #pragma __nomember_alignment #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 *lkb$q_timoutqbl; /* Timeout queue backward link */ #else unsigned __int64 lkb$q_timoutqbl; #endif #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _lkb *lkb$q_parent; /* Address of parent LKB */ #else unsigned __int64 lkb$q_parent; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _rsb *lkb$q_rsb; /* Address of owner RSB */ #else unsigned __int64 lkb$q_rsb; #endif #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 (*lkb$pq_lksb)(); /* Address of lock status block */ #else unsigned __int64 lkb$pq_lksb; #endif unsigned int lkb$l_dlckpri; /* Deadlock priority (Master copies) */ } lkb$r_lksb_overlay; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #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 *lkb$l_rqstsrng; /* Starting byte of requested range */ #pragma __nomember_alignment void *lkb$l_rqsterng; /* Ending byte of requested range */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif void *lkb$l_grntsrng; /* Starting byte of granted range */ #pragma __nomember_alignment void *lkb$l_grnterng; /* Ending byte of granted range */ void *lkb$l_lckctx; /* Address of Lock Context Block */ unsigned int lkb$l_remlkid; /* Remote Lock ID (Master) */ __union { unsigned int lkb$l_csid; /* Cluster System ID (Master only) */ unsigned __int64 lkb$q_oldastprm; /* Old AST parameter */ } lkb$r_csid_overlay; #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ int (*lkb$pq_oldblkast)(); /* Old Blocking AST address */ #else unsigned __int64 lkb$pq_oldblkast; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ int (*lkb$pq_cplastadr)(); /* Address of Completion AST routine */ #else unsigned __int64 lkb$pq_cplastadr; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ int (*lkb$pq_blkastadr)(); /* Address of Blocking AST routine */ #else unsigned __int64 lkb$pq_blkastadr; #endif unsigned int lkb$l_priority; /* Request's priority */ unsigned int lkb$l_tskpid; /* Task ID */ unsigned int lkb$l_rsdmid; /* Resource Domain ID */ unsigned int lkb$l_pcb; /* Address of PCB */ unsigned int lkb$l_lckrq; /* Address of per-CPU lock request */ __union { unsigned int lkb$l_status2; /* Internal status */ __struct { unsigned lkb$v_reserved_2 : 1; unsigned lkb$v_dblkast : 1; /* Deliver Blocking AST */ unsigned lkb$v_reserved_3 : 27; unsigned lkb$v_fill_9_ : 3; } lkb$r_fill_7_; } lkb$r_fill_6_; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif unsigned __int64 lkb$q_duetime; /* duetime for waiting locks */ } LKB$R_LKB; #if !defined(__VAXC) #define lkb$b_rmod lkb$r_fill_0_.lkb$b_rmod #define lkb$v_mode lkb$r_fill_0_.lkb$r_fill_1_.lkb$v_mode #define lkb$v_flags_valid lkb$r_fill_0_.lkb$r_fill_1_.lkb$v_flags_valid #define lkb$v_pkast lkb$r_fill_0_.lkb$r_fill_1_.lkb$v_pkast #define lkb$v_nodelete lkb$r_fill_0_.lkb$r_fill_1_.lkb$v_nodelete #define lkb$v_quota lkb$r_fill_0_.lkb$r_fill_1_.lkb$v_quota #define lkb$v_kast lkb$r_fill_0_.lkb$r_fill_1_.lkb$v_kast #define lkb$pq_ast lkb$r_ast_overlay.lkb$pq_ast #define lkb$w_rqseqnm lkb$r_ast_overlay.lkb$w_rqseqnm #define lkb$q_rqseqnm lkb$r_ast_overlay.lkb$q_rqseqnm #define lkb$q_astprm lkb$r_astprm_overlay.lkb$q_astprm #define lkb$l_epid lkb$r_astprm_overlay.lkb$l_epid #define lkb$l_status lkb$r_fill_2_.lkb$l_status #define lkb$v_dcplast lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_dcplast #define lkb$v_async lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_async #define lkb$v_blkastqed lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_blkastqed #define lkb$v_mstcpy lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_mstcpy #define lkb$v_noquota lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_noquota #define lkb$v_timoutq lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_timoutq #define lkb$v_wassysown lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_wassysown #define lkb$v_cvttosys lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_cvttosys #define lkb$v_protect lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_protect #define lkb$v_resend lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_resend #define lkb$v_rm_rbrqd lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_rm_rbrqd #define lkb$v_flock lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_flock #define lkb$v_ip lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_ip #define lkb$v_cached lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_cached #define lkb$v_rngblk lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_rngblk #define lkb$v_brl lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_brl #define lkb$v_newsubrng lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_newsubrng #define lkb$v_cvtsubrng lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_cvtsubrng #define lkb$v_rngchg lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_rngchg #define lkb$v_2pc_ip lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_2pc_ip #define lkb$v_2pc_pend lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_2pc_pend #define lkb$v_blkastflg lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_blkastflg #define lkb$v_grsubrng lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_grsubrng #define lkb$v_pcached lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_pcached #define lkb$v_valblkrd lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_valblkrd #define lkb$v_valblkwrt lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_valblkwrt #define lkb$v_dpc lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_dpc #define lkb$v_percpu lkb$r_fill_2_.lkb$r_fill_3_.lkb$v_percpu #define lkb$l_lkst2 lkb$r_lkst2_overlay.lkb$l_lkst2 #define lkb$l_lkid lkb$r_lkst2_overlay.lkb$r_fill_4_.lkb$l_lkid #define lkb$v_index lkb$r_lkst2_overlay.lkb$r_fill_4_.lkb$r_fill_5_.lkb$v_index #define lkb$v_seqn lkb$r_lkst2_overlay.lkb$r_fill_4_.lkb$r_fill_5_.lkb$v_seqn #define lkb$b_state lkb$r_state_overlay.lkb$b_state #define lkb$l_state lkb$r_state_overlay.lkb$l_state #define lkb$pq_lksb lkb$r_lksb_overlay.lkb$pq_lksb #define lkb$l_dlckpri lkb$r_lksb_overlay.lkb$l_dlckpri #define lkb$l_csid lkb$r_csid_overlay.lkb$l_csid #define lkb$q_oldastprm lkb$r_csid_overlay.lkb$q_oldastprm #define lkb$l_status2 lkb$r_fill_6_.lkb$l_status2 #define lkb$v_dblkast lkb$r_fill_6_.lkb$r_fill_7_.lkb$v_dblkast #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 /* __LKBDEF_LOADED */