| 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