Use the ISGECA service to obtain waiter and blocker information for global resource serialization (GRS) component managed resources. GRS resource waiter/blocker information can be obtained for a specific system within the current sysplex, or for all the systems operating in the current sysplex.
ISGECA returns information for as many relevant GRS resources as is specified by the COUNT parameter. All reported resource information is collected into a virtual storage buffer specified by the RIBOUT parameter. Reported information is formatted according to RIB and RIBE DSECTs, available from syslib member ISGRIB. See WAITER and BLOCKER descriptions under the REQUEST=WAITER parameter for the specific RIBOUT buffer area format. For precise descriptions of resource, waiter and blocker information reported, see "RIB Heading Information" in z/OS MVS Data Areas in the z/OS Internet library.
ISGECA reports on relevant resources as they are encountered in the system's GRS resource management data infrastructure. The order of reported resources in the RIBOUT area is unpredictable, and implies no suggestion of one resource having greater waiter/blocker considerations than any other reported on resource.
The ISGECA service might be unable to report any waiter or blocker information for some sysplex systems, in some invocation cases, for a variety of reasons. In the event that this occurs, ISGECA reports the system names of systems not included in the report, and the reason for not including those systems, in the NOTINCL output area. The description for parameter NOTINCL explains the output area format and reason codes associated with it.
The requirements for the caller are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Supervisor state. Zero PSW key |
Dispatchable unit mode: | Task |
Cross memory mode: | Any PASN, any HASN, any SASN |
AMODE: | 31-bit |
ASC mode: | Primary, Secondary, access register (AR), or Home |
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. |
If the resulting list format parameter list declare is a PL/X based construct, then the program may substantiate the based construct via an allocated subpool 231 address for subsequent execute format (i.e., MF=(E,xxx)) invocations.
The parameter list must be 476 (or X'1DC') bytes in length.
None
Before issuing the ISGECA 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.
Before issuing the ISGECA macro, the caller does not have to place any information into any access register.
None.
main diagram >>-+------+--b--ISGECA--b--+-REQUEST--=--WAITER--+--------------> '-name-' '-REQUEST--=--BLOCKER-' >--+-,--SCOPE--=--SYSTEM--,--SYSNAME--=--sysname-+--------------> '-,--SCOPE--=--SYSTEMS------------------------' >--,--COUNT--=--count-------------------------------------------> >--,--RIBOUT--=--ribout--,--RIBOUTLN--=--riboutln--+--------------------------+--> '-,--RIBOUTCT--=--riboutct-' >--,--NOTINCL--=--notincl--+--------------------------+---------> '-,--NOTINCCT--=--notincct-' >--+------------------------+--+------------------------+-------> '-,--RETCODE--=--retcode-' '-,--RSNCODE--=--rsncode-' .-,--PLISTVER--=--IMPLIED_VERSION-. >--+---------------------------------+--------------------------> +-,--PLISTVER--=--MAX-------------+ '-,--PLISTVER--=--0---------------' .-,--MF--=--S--------------------------------------. >--+--------------------------------------------------+-------->< | .-,--0D---. | +-,--MF--=--(--L--,--list addr--+---------+--)-----+ | '-,--attr-' | | .-,--COMPLETE-. | '-,--MF--=--(--E--,--list addr--+-------------+--)-'
The parameters are explained as follows:
To code: Specify the RS-type address, or address in register (2)-(12), of an one-byte field.
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.
To code: Specify the RS-type address, or address in register (2)-(12), of a halfword field.
+---------------------------+
| System name | Reason Code |
| System name | Reason Code |
| System name | Reason Code |
+---------------------------+
Each system name and reason code pair potentially reflects a system not included in waiter/blocker data returned in the RIBOUT area. The number of systems reported on in the NOTINCL area is returned in the NOTINCCT output parameter value.
To code: Specify the RS-type address, or address in register (2)-(12), of a pointer field.
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.
+-------------------+
| RIB | RIBE | RIBE |
| RIB | RIBE | RIBE |
| RIB | RIBE | RIBE |
+-------------------+
+------------+
| RIB | RIBE |
| RIB | RIBE |
| RIB | RIBE |
+------------+
To code: Specify the RS-type address of a fullword field, or register (2)-(12) or (15), (GPR15), (REG15), or (R15).
To code: Specify the RS-type address, or address in register (2)-(12), of a pointer field.
To code: Specify the RS-type address, or address in register (2)-(12), of a halfword field.
To code: Specify the RS-type address, or address in register (2)-(12), of a fullword field, or specify a literal decimal value.
To code: Specify the RS-type address of a fullword field, or register (0) or (2)-(12), (00), (GPR0), (GPR00), REG0), (REG00), or (R0).
SYSNAME is required when you specify SCOPE=SYSTEM. SYSNAME is not valid for SCOPE=SYSTEMS.
To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.
None.
The following table identifies the hexadecimal return and reason codes. IBM support personnel may request the entire reason code, including the xxxx value.
Return Code | Reason Code | Meaning and Action |
---|---|---|
00 | – | Successful completion. The RIBOUT virtual storage area contains the waiter or blocker output report, and the NOTINCL virtual storage area describes system names and reason codes for systems not reported on in the RIBOUT area. |
04 | – | Request completed with exceptional circumstances. |
04 | xxxx0000 | Meaning: The ISGECA service could not
communicate with some systems in the sysplex, so the returned data
is incomplete. This implies that such systems are non-responsive,
such as when a system has been reset but has not been removed from
the sysplex. Action: No suggested program action. |
04 | xxxx0001 | Meaning: Not all systems in the current
GRS complex that are relevant to the ISGECA request are participating
in the current sysplex. Action: No suggested program action. The RIBOUT virtual storage area contains the waiter or blocker output report, and the NOTINCL virtual storage area describes system names and reason codes for systems not reported on in the RIBOUT area. |
08 | – | Request failed. |
08 | xxxx0000 | Meaning: A GRS internal error occurred
and the request could not be completed. Action: No suggested program action. |
08 | xxxx0001 | Meaning: The ISGECA service routine was
unable to obtain storage necessary to process the request. Action: Consider reducing the COUNT and RIBOUTLN parameter values to decrease the total number of resources to be reported, and re-invoke ISGECA. Alternatively, if this was a SCOPE(SYSTEMS) request, consider re-inovking ISGECA with SCOPE(SYSTEM) to, potentially, reduce the total number of resources to be reported. |
08 | xxxx0003 | Meaning: A GRS internal error occurred
and the request could not be completed. Action: No suggested program action. |
08 | xxxx0004 | Meaning: The sysplex is in the process
of migrating to GRS STAR mode, and therefore cannot process the request
at this time. Action: Iteratively retry the ISGECA invocation, waiting a few seconds between attempts. |
08 | xxxx00FD | Meaning: The maximum number of relevant
resources to be reported on, as specified by parameter COUNT, exceeds
the service maximum value of 99. Action: Correct the COUNT parameter value and reinvoke ISGECA. |
08 | xxxx00FE | Meaning: The RIBOUT length specified in
parameter RIBOUTLN was not large enough to process the number of resource
requests specified by parameter COUNT. Action: Correct the RIBOUTLN or COUNT parameter values and reinvoke ISGECA. |
08 | xxxx00FF | Meaning: ISGECA is an unsupported service
on this system. Action: No suggested program action. The system needs a service or release level upgrade before ISGECA can be successfully invoked. |
The following examples do not show, but presume, the existence of appropriate assembler continuation characters in column 72. The examples also presume an appropriate assembler storage declaration for each instance of a named symbol ISGECA parameter.
XR 2,2 Clear reg 2
LHI 2,476 ISGECA parm list length into R2
STORAGE OBTAIN,LENGTH=(2),ADDR=(3),SP=231,COND=NO
GETWAIT ISGECA REQUEST=WAITER,SCOPE=SYSTEM,
SYSNAME=MYSYSNAME,RIBOUT=OUTAREA@,
RIBOUTLN=MYOUTAREALEN,RIBOUTCT=MYRIBCT,
COUNT=MYCOUNT,NOTINCL=NOTINCLAREA@,
NOTINCCT=MYNOTCT,RETCODE=MYRETCODE,
RSNCODE=MYRSNCODE,PLISTVER=MAX,
MF=(E,(3))
For the above, subpool 231 storage is obtained and then passed through the MF= parameter for the ISGECA service routine parameter list.
Upon return from the service routine, the virtual storage area specified by OUTAREA@ contains the waiter report RIBs and RIBEs for up to MYCOUNT number of resources; while the virtual storage area specified by NOTINCLAREA@ contains the associated list of systems (with reasons) that are not included in the RIBOUT area report. The precise number of RIBs returned in the OUTAREA@ area is returned in the MYRIBCT program variable.
GETBLOCK ISGECA REQUEST=BLOCKER,SCOPE=SYSTEMS,
RIBOUT=OUTAREA@,RIBOUTLN=MYOUTAREALEN,
RIBOUTCT=MYRIBCT,COUNT=MYCOUNT,
NOTINCL=NOTINCLAREA@,NOTINCCT=MYNOTCT,
RETCODE=MYRETCODE,RSNCODE=MYRSNCODE,
PLISTVER=MAX,MF=S
Parameter usage and results for this example are analogous to the previous example. In this case, upon return from the ISGECA service routine, the virtual storage area specified by OUTAREA@ contains the blocker report RIBs and RIBEs. Note that the program itself must reside in common area subpool 231, because the ISGECA invocation is using the standard macro format.