z/OS MVS Installation Exits
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


ISGNQXITQUEUED2 – ISGENQ / ENQ / DEQ Second Queued Exit

z/OS MVS Installation Exits
SA23-1381-00

ISGNQXITQUEUED2 is called when all the elements of an ENQ (not DEQ) request have completed both local and global processing. The exit is called before waiting (for unconditional requests that have not been granted) or returning to the ENQ requester. This exit is called only if either the ISGNQXITBATCH or ISGNQXITBATCHCND exits have been called previously for the same request.

See ENQ/DEQ Exits Installation in z/OS MVS Planning: Global Resource Serialization for the installation flow through ENQ/DEQ exits.

ISGYNQQP (NQQP) maps the parameter list that is passed to ISGNQXITQUEUED2. The request data presented to ISGNQXITQUEUED2 are read only. The following information is contained in NQQP:
  • Return codes that have been set for both local and global resources.
  • The ABEND code if the request failed.
  • Information about whether the request needs to be suspended for RNL processing.
Note:
  1. This exit is intended for use by OEM serialization products.
  2. If your installation is using an OEM serialization product to replace global resource serialization, do not specify that any installation-provided exits are to be called first (either with the FIRST parameter of the SETPROG command or with the POS=FIRST parameter of the CSVDYNEX macro) when installing this exit.

Replacing the Exit Routine

For information about the replacement of the dynamic exit routine, see Replacing a Dynamic Exit Routine.

Exit Routine Environment

ISGNQXITQUEUED2 receives control in the following environment:
  • Task mode (running under the requester’s task).
  • Enabled for interrupts.
  • Supervisor state with PSW key 0.
  • Cross-memory mode with H=S=Requester’s address space and P=Global Resource Serialization’s address space.
  • AMODE 31 and primary ASC mode.
  • With no locks held.
  • An EUT FRR might be held when the exit routine is called.
The routine can be invoked in the cross-memory mode with an EUT FRR established that must remain in effect. Therefore, system services or instructions that do not allow FRRs to be active or that cause FRRs to be removed cannot be used. This includes the SVC instruction.

Exit Recovery is as follows.

  • To recover from errors, the ISGNQXITQUEUED2 routine must provide its own recovery routine.
  • If no recovery exists, or the recovery terminates, GRS fails the request and continues processing. CSVDYNEX rules for the exit are used to determine whether the exit needs to be removed.

An unplanned removal of an exit can result in loss of the function it provides. Ensure that you provide recovery and understand how CSVDYNEX determines when to remove an exit that ends abnormally. For more information about CSVDYNEX, see z/OS MVS Programming: Authorized Assembler Services Reference ALE-DYN.

Exit Routine Processing

The ISGNQXITQUEUED2 exit point is called after all local and global resources in an ENQ/RESERVE request have been processed. DEQ requests are not passed to ISGNQXITQUEUED2 exit routines. The exit routine is passed by an NQQP (mapped by ISGYNQQP) that contains information about the request. If the request ends abnormally, an abend code is indicated. Only SCOPE=SYSTEM and SYSTEMS resources are passed to the exit (STEP requests are not passed to the exit).

The NQQP is followed by one NQQPRSC entry for each resource in the request. Each NQQPRSC entry indicates the result for each local and global ENQ resource.

Programming Considerations

Most of the exits that are driven for a request are provided with a unique request token. This token enables the exits to correlate any required user information between exit callers. For example, the Nqqp_RD_RequestToken is the same as the Nqxp_RequestToken if both the ISGNQXITQUEUED2 and ISGNQXITFAST exits are driven for the same request.

Observe the following conventions when coding an ISGNQXITQUEUED2 exit routine:
  • Every exit routine must be re-entrant.
  • When you are coding the exit routine, an increased path length increases processor utilization and can degrade performance, because the exit is called for every ENQ, RESERVE and ISGENQ OBTAIN/CHANGE request.
  • Do not code the exit routine to issue another ENQ, RESERVE, DEQ or ISGENQ macro or to call another service that might issue those macros.
  • The ISGNQXITQUEUED2 exit point is called for all ENQ/RESERVE requests only when either the ISGNQXITBATCH or ISGNQXITBATCHCND exits are called. In other words, only if a batch exit is called, the queued exit is called.

Entry Specifications

The system passes a NQQP parameter list to the exit routine.

Registers at Entry: The contents of the registers on entry to the exit are as follows.

Register
Contents
0
Not applicable
1
Address of the exit parameter list (ISGYNQQP)
2-12
Not applicable
13
Address of a 72-byte save area
14
Return address
15
Entry point address of ISGNQXITQUEUED2

The contents of the registers on entry to ISGNQXITQUEUED2 are as follows: Access Register contents are not predictable.

Parameter List Contents: Register 1 contains the address of the exit parameter (NQQP) that is mapped by macro ISGYNQQP. See z/OS MVS Data Areas in z/OS Internet Library at http://www.ibm.com/systems/z/os/zos/bkserv/ for the mapping of the ISGYNQQP data area.

Return Specifications

No return information is expected.

Registers at Exit: Upon return from the exit processing, the register contents must be as follows.

Register
Contents
0-14
Restored to contents on entry
15
Zero

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014