LIMBK | Back to Index page |
Prolog Control Block Contents LIMBK DSECT Storage Layout Cross Reference (Contains links to field and bit definitions) |
|
LIMBK Prolog | Top of page |
NAME : HCPLIMBK DESCRIPTION: Limiting block for a CPU Pool === = = DSECT : LIMBK FUNCTION : This control block holds all of the fields which describe ONE defined CPU Pool. A CPU Pool limits virtual CPU resources of one type (CP or IFL) for a group of userids. LOCATED BY : LCPNEXT: LIMBK chain pointer to NEXT (FIRST) LIMBK LCPPREV: LIMBK chain pointer to PREVIOUS (LAST) LIMBK LIMNEXT: LIMBK chain FORWARD pointer to NEXT LIMBK LIMPREV: LIMBK chain BACKWARD pointer to PREVIOUS LIMBK Only the DEFINE CPUPOOL and DELETE CPUPOOL commands update the above four fields. VMDLIMBK: VMDBK points to the LIMBK of the CPU Pool it belongs to. When a user is assigned to a CPU Pool, all VMDBKs (origin, MP-VMDBKs) to be limited have VMDLIMBK set. Only the SCHEDULE command and VMRELOCATE command update this field. RLOLIMBK: Relocating user's RLOBK on the target system points to the LIMBK of the CPU Pool it will belong to once on the target system so it can not be deleted during the move. Only the VMRELOCATE command updates this field. CREATED BY : HCPLMCDF: Process DEFINE CPUPOOL command DELETED BY : HCPLMCDL: Process DELETE CPUPOOL command REFERENCES : NONE SERIALIZED : The creation/deletion of the LIMBK is serialized by the LIMBK CHAIN LOCK, LCPLLCK. DEFINE CPUPOOL and DELETE CPUPOOL are the only commands that create/delete LIMBKs. A LIMBK may not be dequeued or released if its LIMCTPTR field is nonzero because at least one VMDBK VMDLIMBK field or RLOBK RLOLIMBK field contains its address. The fields in the LIMBK are serialized by the LIMBK CHAIN LOCK and/or the SCHEDULER LOCK and/or the VMDBK List Lock. The LIMBK CHAIN LOCK must be held exclusively to enqueue/ dequeue a LIMBK or to update any of the LIMBK fields in the first section of the control block. It must be held shared to search the LIMBK chain and examine the LIMBK's fields in the first section of the control block which do not require the SCHEDULER LOCK to update. Any field that requires two locks (LIMBK CHAIN LOCK and SCHEDULER LOCK) to update it only requires one of these locks to read/examine it. Scheduling-related fields in the LIMBK are serialized by the SCHEDULER LOCK and are located in the second section of the LIMBK. The scheduler finds the correct LIMBK from the VMDBK of the user being processed so it does not need to obtain the LIMBK CHAIN LOCK (LCPLLCK) to find the correct LIMBK. In addition, only the SCHEDULER LOCK held EXCLUSIVE is needed to update these fields. A comment specifies which fields are serialized in this way. While the VMDBK List Lock is not needed to serialize the fields in the LIMBK, while changes are being made for the SET command, the VMDBK List Lock is held to keep other tasks from using the list until the settings are changed. To add or remove a CPU Pool member, the LIMBK CHAIN LOCK, SCHEDULER LOCK EXCLUSIVE, user's LOCAL CYCLIC LIST LOCK, and VMDBK List Lock are needed (must be obtained in that order). Once all 4 are obtained, the VMDLIMBK pointer(s) and count fields (LIMCTMEM, LIMCTPTR) in the LIMBK can be updated. To ensure that the relationship between a VMDBK and LIMBK can not change, only ONE lock (LIMBK CHAIN LOCK or SCHEDULER LOCK) is needed. This allows the scheduler code which already has the SCHEDULER LOCK EXCLUSIVE (and can not get the other ones) to use the VMDLIMBK pointer to get to the LIMBK knowing the link can not be broken. When the Scheduler lock and VMD List Lock (LIMVMDLK) need to be held concurrently, the Scheduler Lock must be acquired first. RELOCATION CONSIDERATIONS : None COMPATIBILITY AND MIGRATION CONCERNS : Each field in this control block must specify how it is serialized. The only locks used for CPU Pooling fields are LIMBK CHAIN LOCK, SCHEDULER LOCK and VMDBK List Lock. The 1/19/2011 version of BICOPY VMSKEL was used to create this new control block. |
LIMBK Control Block Content | Top of page |
|
LIMBK Storage Layout | Top of page |
*** LIMBK - Limiting block for a CPU Pool * * +---------------------------+---------------------------+ * 0 | LIMNEXT | LIMPREV | * +---------------------------+---------------------------+ * 8 | LIMPOOL | * +---------------------------+---------------------------+ * 10 | LIMCTMEM | LIMMXSHR | * +---------------------------+------+------+-------------+ * 18 | LIMMXENG |:CPUTY|//////| LIMMXSTP | * +---------------------------+------+------+-------------+ * 20 | LIMMXSTO | * +---------------------------+---------------------------+ * 28 |///////////////////////////| LIMCTINM | * +---------------------------+---------------------------+ * 30 | LIMCTPTR | LIMCTLL | * +------+------+-------------+---------------------------+ * 38 |:FLAGS|:RSTRT|/////////////| LIMCIFLA | * +------+------+-------------+---------------------------+ * 40 | LIMTODST | * +-------------------------------------------------------+ * 48 | LIMTODLM | * +-------------------------------------------------------+ * 50 | LIMTTIME | * +-------------------------------------------------------+ * 58 | LIMNTIME | * +-------------------------------------------------------+ * 60 | LIMMTTIM | * +-------------------------------------------------------+ * 68 | LIMMTODE | * +---------------------------+---------------------------+ * 70 | LIMMTNUM | LIMFACTR | * +---------------------------+---------------------------+ * 78 | | * = LIMMONLK = * | | * +-------------------------------------------------------+ * A8 | LIMSTORE | * +-------------------------------------------------------+ * B0 | LIMRESTO | * +---------------------------+---------------------------+ * B8 | LIMTRQBK |///////////////////////////| * +---------------------------+---------------------------+ * C0 | | * = LIMVMDLK = * | | * +---------------------------+---------------------------+ * F0 | LIMVMDLSF | LIMVMDLSB | * +------+------+-------------+---------------------------+ * F8 |:MEMFL|:HXSYN| LIMTSMLT |///////////////////////////| * +------+------+-------------+---------------------------+ * 100 | LIMCREAT | * +-------------------------------------------------------+ * 108 | LIMLIMTM | * +---------------------------+---------------------------+ * 110 | LIMLIMCT | LIMMXCED | * +---------------------------+---------------------------+ * 118 | LIMMOVER | * +-------------------------------------------------------+ * 120 | LIMMTRIM | * +-------------------------------------------------------+ * 128 | LIMSTAMP | * +-------------------------------------------------------+ * 130 | LIMTRCPU | * +-------------------------------------------------------+ * 138 * *** LIMBK - Limiting block for a CPU Pool |
LIMBK Cross Reference | Top of page |
Symbol Dspl Value -------------- ---- ----- LIMBSIZE 0130 00000138 LIMCIFLA 003C LIMCPUTY 001C LIMCREAT 0100 LIMCTINM 002C LIMCTLL 0034 LIMCTMEM 0010 LIMCTPTR 0030 LIMFACTR 0074 LIMFAIR 0038 40 LIMFLAGS 0038 LIMHXSYN 00F9 LIMITED 0038 80 LIMLIMCT 0110 LIMLIMHX 00F8 40 LIMLIMTM 0108 LIMMEMFL 00F8 LIMMEMHX 00F8 80 LIMMONLK 0078 LIMMOVER 0118 LIMMTNUM 0070 LIMMTODE 0068 LIMMTRIM 0120 LIMMTTIM 0060 LIMMXCED 0114 LIMMXENG 0018 LIMMXSHR 0014 LIMMXSTO 0020 LIMMXSTP 001E LIMNEXT 0000 LIMNTIME 0058 LIMPOOL 0008 LIMPREV 0004 LIMRCPUA 0039 00000004 LIMRESTO 00B0 LIMRHITX 0039 00000006 LIMRLIML 0039 00000001 LIMRNACT 0039 00000002 LIMRPAST 0039 00000007 LIMRSET 0039 00000003 LIMRSTRT 0039 LIMRST0 0039 00000005 LIMSIZE 0130 00000027 LIMSTAMP 0128 LIMSTORE 00A8 LIMTODLM 0048 LIMTODST 0040 LIMTRCPU 0130 LIMTRQBK 00B8 LIMTSMLT 00FA LIMTTIME 0050 LIMVMDLK 00C0 LIMVMDLS 00F0 LIMVMDLSB 00F4 LIMVMDLSF 00F0 |
Copyright IBM Corporation, 1990, 2022