LCKBK Back to Index page
 
Prolog 
Control Block Contents 
   LCKBK DSECT
Storage Layout 
Cross Reference (Contains links to field and bit definitions)
Programming Interface Information:
This information is NOT intended to be
used as Programming Interfaces of z/VM.


  LCKBK Prolog Top of page
 
 NAME       : HCPLCKBK
 DESCRIPTION: LOCK BLOCK
 DSECT      : LCKBK
 FUNCTION   : HCPLCKBK IS USED TO SYNCHRONIZE EXECUTION FOR SECTIONS
              OF NONREENTERABLE CODE.  EACH SUCH SECTION OF CODE HAS
              ITS OWN UNIQUE 8 BYTE IDENTIFIER (NAME) WHICH IS PASSED
              TO THE LOCKING ROUTINES AS AN ARGUMENT.  THIS IDENTIFIER
              IS SAVED IN 'LCKNAME'.  A TASK THAT ATTEMPTS TO GET A
              LOCK THAT IS ALREADY HELD BY ANOTHER TASK IS FORCED TO
              WAIT UNTIL THE EARLIER TASK RELEASES THE LOCK.  WHILE THE
              TASK IS WAITING, IT IS REPRESENTED BY A CPEBK THAT
              IS TEMPORARILY CHAINED OFF OF 'LCKQUE'.  WHEN THE TASK
              HOLDING THE LOCK RELEASES IT, THE CPEBK REPRESENTING THE
              WAITING TASK IS STACKED SO THAT THE WAITING TASK RESUMES
              EXECUTION.
 LOCATED BY : SYSLOKQ   LOCK BLOCK ANCHOR: POINTS TO CHAIN OF LOCK BLOCKS.
              LCKNEXT   POINTER TO NEXT LOCK BLOCK IN CHAIN.
 CREATED BY : HCPLOC    WHEN A LOCK IS REQUESTED TO BE PUT ON A RESOURCE
              AND THAT RESOURCE IS NOT CURRENTLY LOCKED.
 DELETED BY : HCPLOC    WHEN A TASK RELEASES THE LOCK AND THERE ARE NO
              OTHER TASKS QUEUED ON THE LOCK.
 RELOCATION CONSIDERATIONS : None
 
 
  LCKBK Control Block Content Top of page
 

 LCKBK DSECT Top of page
Hex Dec Type/Val Lng Label (dup) Comments ---- ---- --------- ---- -------------- -------- 0000 0 Structure LCKBK LOCK BLOCK 0000 0 Signed 4 LCKNEXT POINTER TO THE NEXT LOCK BLOCK 0004 4 Signed 4 LCKQUE POINTER TO CPEXBLOK QUEUE 0008 8 Dbl-Word 8 LCKNAME (0) LOCK SYMBOL 0008 8 Signed 4 LCKNAM1 FIRST FOUR BYTES OF SYMBOL 000C 12 Signed 4 LCKNAM2 SECOND FOUR BYTES OF SYMBOL 0010 16 Address 4 LCKIDR11 R11 of lock requestor 0014 20 Address 4 LCKIDR14 R14 of lock requestor 0018 24 Dbl-Word 8 LCKQQTOD TOD saved at last enqueue/dequeue. (Only stamped if there's a queue for this symbolic defer lock.) 0020 32 Signed 4 LCKDQLEN Current length of queue waiting for this symbolic defer lock. (Note: We could shorten LCKDQLEN to a halfword and regain 2 bytes.) 0024 36 Signed 4 LCKDYTOD TOD saved at start of last "delay" period. It's the time the lock was last granted (if it had a queue at that time) or the time at which the queue size last changed from 0 to 1. Units are TOD with bits 32-63 discarded. 00000005 LCKSIZE (*-LCKBK+7)/8 LOCK BLOCK SIZE IN DWORDS
 
 
  LCKBK Storage Layout Top of page
 
          
*** LCKBK - LOCK BLOCK
*
*     +---------------------------+---------------------------+
*   0 |         LCKNEXT           |          LCKQUE           |
*     +---------------------------+---------------------------+
*   8 |         LCKNAM1           |         LCKNAM2           |
*     +---------------------------+---------------------------+
*  10 |         LCKIDR11          |         LCKIDR14          |
*     +---------------------------+---------------------------+
*  18 |                       LCKQQTOD                        |
*     +---------------------------+---------------------------+
*  20 |         LCKDQLEN          |         LCKDYTOD          |
*     +---------------------------+---------------------------+
*  28
*
*** LCKBK - LOCK BLOCK
 
 
  LCKBK Cross Reference Top of page
 
 
Symbol         Dspl Value
-------------- ---- -----
LCKDQLEN       0020
LCKDYTOD       0024
LCKIDR11       0010
LCKIDR14       0014
LCKNAME        0008
LCKNAM1        0008
LCKNAM2        000C
LCKNEXT        0000
LCKQQTOD       0018
LCKQUE         0004
LCKSIZE        0024 00000005
 
This information is based on z/VM 7.3.0 Last updated on 22 Jun 2022 at 15:51:58 EDT.
Copyright IBM Corporation, 1990, 2022