IWMCNTN — WLM contention notification
The IWMCNTN service allows resource managers to notify WLM of changes to the list of resources, work units, or transactions involved with resources that have been in contention (waiters exist) for longer than a resource manager defined interval. The interval should be chosen so that only contention which has lasted long enough to be considered chronic for the issuing resource manager results in calling this service.
The caller can run in task or SRB mode.
Environment
The requirements for the caller are:
Minimum authorization | Supervisor state or program key mask (PKM) allowing keys 0-7. |
Dispatchable unit mode | Task or SRB |
Cross memory mode | Any PASN, any HASN, any SASN |
AMODE | 31-bit |
ASC mode | Primary |
Interrupt status | Enabled for I/O and external interrupts |
Locks | No locks may be held. |
Control parameters | Control parameters must be in the primary address space. |
Programming requirements
- The macro CVT must be included to use this macro.
- The macro IWMYCON must be included to use this macro.
- The macro IWMPB must be in the library concatenation, since it is included by IWMYCON.
- Note that the high-order halfword of register 0, and the reason code variable when specified, may be non-zero and represents diagnostic data which is NOT part of the external interface. The high-order halfword should thus be excluded from comparison with the reason code values described above. The constant, IWMRSNCODE_MASK_CONST defined in IWMYCON, may be used for this purpose.
- All character data, unless otherwise specified, is assumed to be left-justified and padded with blanks on the right, as needed, to occupy the specified number of bytes.
- Because this service may only be used by system-like code, some validity checking on the parameter list is not performed. These checks would only be needed if the macro were not used to invoke the service routine.
Restrictions
None.
Input register information
Before issuing the IWMCNTN macro, the caller does not have to place any information into any register unless using it in register notation for a particular parameter, or using it as a base register.
Output register information
- Register
- Contents
- 0
- Reason code if GR15 return code is non-zero
- 1
- Used as work registers by the system
- 2-13
- Unchanged
- 14
- Used as work registers by the system
- 15
- Return code
- Register
- Contents
- 0-1
- Used as work registers by the system
- 2-13
- Unchanged
- 14-15
- Used as work registers by the system
Some callers depend on register contents remaining the same before and after issuing a service. If the system changes the contents of registers on which the caller depends, the caller must save them before issuing the service, and restore them after the system returns control.
Performance implications
None.
Syntax
The syntax of the IWMCNTN macro is as follows:
Parameters
The parameters are explained as follows:
- name
- An optional symbol, starting in column 1, that is the name on the IWMCNTN macro invocation. The name must conform to the rules for an ordinary assembler language symbol.
- ,INVOCATIONTYPE=UPDATE
- ,INVOCATIONTYPE=REPLACE
- ,INVOCATIONTYPE=ENDOFCONTENTION
- A required parameter, which indicates the type of operation requested
- ,INVOCATIONTYPE=UPDATE
- indicates that the operations described in the request list have to be applied to the resource. If contention information for the resource does not already exist, it is created. If after applying the operations there are no holders or waiters (local or remote), tracking of the resource is abandoned locally.
- ,INVOCATIONTYPE=REPLACE
- same as UPDATE, except that any existing local resource topology is discarded first.
- ,INVOCATIONTYPE=ENDOFCONTENTION
- indicates that all topology information for the resource is discarded.
- ,MF=S
- ,MF=(L,list addr)
- ,MF=(L,list addr,attr)
- ,MF=(L,list addr,0D)
- ,MF=(E,list addr)
- ,MF=(E,list addr,COMPLETE)
- An optional input parameter that specifies the macro form.
Use MF=S to specify the standard form of the macro, which builds an inline parameter list and generates the macro invocation to transfer control to the service. MF=S is the default.
Use MF=L to specify the list form of the macro. Use the list form together with the execute form of the macro for applications that require reentrant code. The list form defines an area of storage that the execute form uses to store the parameters. Only the PLISTVER parameter may be coded with the list form of the macro.
Use MF=E to specify the execute form of the macro. Use the execute form together with the list form of the macro for applications that require reentrant code. The execute form of the macro stores the parameters into the storage area defined by the list form, and generates the macro invocation to transfer control to the service.
- ,list addr
- The name of a storage area to contain the parameters. For MF=S and MF=E, this can be an RS-type address or an address in register (1)-(12).
- ,attr
- An optional 1- to 60-character input string that you use to force boundary alignment of the parameter list. Use a value of 0F to force the parameter list to a word boundary, or 0D to force the parameter list to a doubleword boundary. If you do not code attr, the system provides a value of 0D.
- ,COMPLETE
- Specifies that the system is to check for required parameters and supply defaults for omitted optional parameters.
- ,PLISTVER=IMPLIED_VERSION
- ,PLISTVER=MAX
- ,PLISTVER=0
- An optional input parameter that specifies the version of the
macro. PLISTVER determines which parameter list the system generates.
PLISTVER is an optional input parameter on all forms of the macro,
including the list form. When using PLISTVER, specify it on all macro
forms used for a request and with the same value on all of the macro
forms. The values are:
- IMPLIED_VERSION, which is the lowest version that allows all parameters specified on the request to be processed. If you omit the PLISTVER parameter, IMPLIED_VERSION is the default.
- MAX, if you want the parameter list to be the largest size
currently possible. This size might grow from release to release and
affect the amount of storage that your program needs.
If you can tolerate the size change, IBM® recommends that you always specify PLISTVER=MAX on the list form of the macro. Specifying MAX ensures that the list-form parameter list is always long enough to hold all the parameters you might specify on the execute form, when both are assembled with the same level of the system. In this way, MAX ensures that the parameter list does not overwrite nearby storage.
- 0, if you use the currently available parameters.
To code: Specify one of the following:- IMPLIED_VERSION
- MAX
- A decimal value of 0
- ,REQUESTLIST=requestlist
- When INVOCATIONTYPE=UPDATE or REPLACE is specified, a required input parameter, which specifies
a list of topology requests. For each request, you must specify:
- Whether you want to add or to delete the contention information
- Whether the work unit is holding the resource or is waiting for it,
- The identification of the entity in terms of STOKEN, TCB address or enclave token.
The work unit ID varies based on the resource ownership model (transaction or task resource) used by the IWMCNTN exploiter and the work unit type involved, as described in Table 1:Table 1. Work unit IDs Work unit type Exploiters using the transaction model will pass Exploiters using the task resource model will pass Global SRB,
local SRB,
preemptible SRB
(but not a client or
enclave SRB)Home STOKEN,
TCB=0,
Etoken=0Same as transaction resource ownership model Client SRB Client STOKEN
TCB=0,
Etoken=0Same as transaction resource ownership model Enclave SRB STOKEN=0,
TCB=0,
Etoken=eSame as transaction resource ownership model Non-enclave task Home STOKEN,
TCB= 0,
Etoken=0Home STOKEN,
TCB= t,
Etoken=0Enclave task STOKEN=0,
TCB= 0,
Etoken=eHome STOKEN,
TCB= t,
Etoken=0The following return/reason codes may be returned per request:- Return_Code
- A 2-byte output field set based on whether or not the entity identification information passed
validity checks.
- 0
- Name: IwmRetCodeOk Meaning: Successful completion. Action: None required.
- 4
- Name: IwmRetCodeWarning Meaning: Successful completion, unusual conditions noted. Action: Check reason code
- 8
- Name: IwmRetCodeInvocError Meaning: Invalid invocation environment or parameters. Action: Check reason code
- Reason_Code
- A 2-byte output field set based on whether or not the entity identification information passed
validity checks.
- 0448
- Name: IwmRsnCodePossibleDeadlock Meaning: The specified chronic resource contention may have caused a deadlock: The holder of resource (A) is waiting for resource (B), which is currently held by another holder, which is waiting for resource (A). Action: Check for possible deadlock.
- 0807
- Name: IwmRsnCodeBadSTOKEN Meaning: The specified STOKEN does not pass verification. Action: Check for possible storage overlay of the address space token.
- 083A
- Name: IwmRsnCodeBadEnclave Meaning: Enclave token does not pass verification. Action: Check for possible storage overlay of the enclave token.
- 0886
- Name: IwmRsnCodeBadRequestCode Meaning: The request code must be either ADD or DELETE Action: Correct the request code.
- 0887
- Name: IwmRsnCodeBadEntityType Meaning: The entity type must be either HOLDER or WAITER Action: Correct the entity type.
- 088A
- Name: IwmRsnCodeBadEntityId Meaning: The specified combination of STOKEN, TCB and/or enclave token does not pass verification. Action: Correct the entity id.
- 088B
- Name: IwmRsnCodeBadTCB Meaning: The specified TCB address does not pass verification. Action: Correct the TCB address. Task may have terminated since the parameter list was built. TCB may not match STOKEN.
- 08A5
- Name: IwmRsnCodeNoContention Meaning: The specified chronic resource contention is not stored in the topology. The DELETE request for this request list entry was not processed. Action: Correct the delete request.
- 08A8
- Name: IwmRsnCodeDupContention Meaning: The specified chronic resource contention is already stored in the topology. The ADD request for this request list entry was not processed. Action: Correct the add request.
- 08AF
- Name: IwmRsnCodeDeadlock Meaning: The specified chronic resource contention caused a deadlock: The holder of resource (A) is waiting for resource (B), which is currently held by another holder, which is waiting for resource (A). The request list entry was not processed. Action: Remove the deadlock.
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
- ,RESOURCEID=resourceid
- A required input parameter, which identifies the resource uniquely
within all resources for a subsystem type and name.
For resources whose type is multisystem, the value must be unique within the subsystem type and name across all systems where the interface might ever be invoked for this resource.
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
- ,RESOURCEID_LEN=resourceid_len
- A required input parameter, which contains the length of the resource
identifier. A resource identifier may not exceed 264 bytes.
To code: Specify the RS-type address, or address in register (2)-(12), of a fullword field.
- ,RESOURCESCOPE=SINGLESYSTEM
- ,RESOURCESCOPE=MULTISYSTEM
- An optional parameter, which identifies if the resource information
is shared with other WLM instances in the cluster. The default is
RESOURCESCOPE=SINGLESYSTEM
.- ,RESOURCESCOPE=SINGLESYSTEM
- Indicates that the resource information is used on the issuing system only.
- ,RESOURCESCOPE=MULTISYSTEM
- Indicates that the resource information is shared among other
systems.Note: This keyword is ignored. WLM contention notifications are processed with
RESOURCESCOPE=SINGLESYSTEM
, even ifRESOURCESCOPE=MULTISYSTEM
is specified.
- ,RETCODE=retcode
- An optional output parameter into which the return code is to
be copied from GPR 15.
To code: Specify the RS-type address of a fullword field, or register (2)-(12).
- ,RSNCODE=rsncode
- An optional output parameter into which the reason code is to
be copied from GPR 0.
To code: Specify the RS-type address of a fullword field, or register (2)-(12).
- SUBSYS=subsys
- A required input parameter, which contains the generic subsystem
type (e.g. IMS, CICS®, etc.).
To code: Specify the RS-type address, or address in register (2)-(12), of a 4-character field.
- ,SUBSYSNM=subsysnm
- A required input parameter, which identifies the subsystem instance.
To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.
ABEND codes
None.
Return codes and reason codes
- GPR 15 (and retcode, when you code RETCODE) contains a return code.
- When the value in GPR 15 is not zero, GPR 0 (and rsncode, when you code RSNCODE) contains reason code.
The following table identifies the hexadecimal return and reason codes and the equate symbol associated with each reason code. IBM support personnel may request the entire reason code, including the xxxx value.
Return Code | Reason Code | Equate Symbol, Meaning, and Action |
---|---|---|
0 | — | Equate Symbol: IwmRetCodeOk Meaning: Successful completion. Action: None required. |
4 | — | Equate Symbol: IwmRetCodeWarning Meaning: Successful completion, unusual conditions noted. |
4 | xxxx00447 | Equate Symbol: IwmRsnCodeRequestListEntryWarning
Meaning: The processing of at least one of the request list entries has caused a warning. Refer to the return code and reason code stored for this request list entry. Action: SRM continues with the request list processing. |
8 | — | Equate Symbol: IwmRetCodeInvocError Meaning: Invalid invocation environment or parameters. |
8 | xxxx0803 | Equate Symbol: IwmRsnCodeDisabled Meaning: Caller is disabled. Action: Avoid requesting this function while disabled. |
8 | xxxx0804 | Equate Symbol: IwmRsnCodeLocked Meaning: Caller is locked. Action: Avoid requesting this function while locked. |
8 | xxxx080B | Equate Symbol: IwmRsnCodeBadPl Meaning: Error accessing parameter list. Action: Check for possible storage overlay. |
8 | xxxx0824 | Equate Symbol: IwmRsnCodeAmode24 Meaning: The caller invoked the service but was in 24-bit addressing mode. Action: Request this function only when you are in 31-bit addressing mode. |
8 | xxxx0825 | Equate Symbol: IwmRsnCodeAscModeNotPrimary
Meaning: The caller invoked the service but was not DAT on primary ASC mode. Action: Avoid requesting this function in this environment. |
8 | xxxx0828 | Equate Symbol: IwmRsnCodeBadVersion Meaning: Version number in parameter list is not valid. Action: Check for possible storage overlay of the parameter list. |
8 | xxxx0888 | Equate Symbol: IwmRsnCodeBadRequestList
Meaning: The request list does not pass verification. No request in the request list was processed. Action: Check the return and reason codes in the request list. |
8 | xxxx0889 | Equate Symbol: IwmRsnCodeBadResourceIdLen
Meaning: The length of the resource id must not exceed 264 bytes. Action: Specify a correct resource id length. |
8 | xxxx088C | Equate Symbol: IwmRsnCodeBadRequestListVersion
Meaning: The version specified in the request list is not supported Action: Specify a correct request list version. |
8 | xxxx088D | Equate Symbol: IwmRsnCodeBadRequestListLength
Meaning: The specified request list length is too small to carry the specified number of request entries. Action: Specify a correct request list length or correct the entry count. |
8 | xxxx08A6 | Equate Symbol: IwmRsnCodeBadRequestListEntry
Meaning: The processing of at least one of the request list entries failed. Refer to the return code and reason code stored for this request list entry. SRM continues with the request list processing. Action: Check the return and reason codes in the request list. |
8 | xxxx08A7 | Equate Symbol: IwmRsnCodeBadResource Meaning: The resource ID was not found in the topology for INVOCATIONTYPE=ENDOFCONTENTION. Action: Specify a correct resource ID. |
10 | — | Equate Symbol: IwmRetCodeCompError Meaning: Component error. Action: No action required. The function may be successful if invoked again. |
Example
IWMCNTN SUBSYS=SUBSTYPE,SUBSYSNM=SUBSNAME,
RESOURCEID=RESOURCE,RESOURCEID_LEN=128,
INVOCATIONTYPE=REPLACE,
REQUESTLIST=REQUESTS
*
* Storage areas
*
SUBSTYPE DS CL4 Subsystem type
SUBSNAME DS CL8 Subsystem name
RESOURCE DS CL128 Resource id
REQUESTS DS 0D Request list
EYE DC CL8'IWMCNTRL'
VERSION DC XL1'01'
RSRV_1 DS CL3
LENGTH# DC F'96'
ENTRY# DC F'2'
RSRV_2 DS CL12
ENTRY_1 DS 0CL32 1st entry
E#1_CODE DC CL1'A' code = add
E#1_TYPE DC CL1'H' type = holder
E#1_RSRV DS CL6 reserved
E#1_STKN DC XL8'0000000000000000' STOKEN not specified
E#1_TCB DC A'0' TCB not specified
E#1_ETKN DS XL8 enclave token
E#1_RC DS H entity return code
E#1_RSN DS H entity reason code
ENTRY_2 DS 0CL32 2nd entry
E#2_CODE DC CL1'A' code = add
E#2_TYPE DC CL1'W' type = waiter
E#2_RSRV DS CL6 reserved
E#2_STKN DS XL8 STOKEN
E#2_TCB DC A'0' TCB not specified
E#2_ETKN DC XL8'0000000000000000' enclave token not specified
E#2_RC DS H entity return code
E#2_RSN DS H entity reason code