Modifying the governor exit on VM

On CMS, assemble and generate your governor exit routine, whether you modified the IBM-supplied governor exit routine or wrote your own.

Program components of the governor exit routine

Before you begin modifying or writing your own governor exit routine, you need to know the names of the governor exit routine components and what purpose each component serves.

Table 81 shows these components, whose names vary according to which language you installed (English or an NLF). Replace the n symbol in the following names with the NLID (from Table 1) that matches the NLF you're using. In the component names, a 2 represents CMS.

Table 81. IBM-supplied governor components
Member Name Library Function
CMS
DSQUnGV2 PRODUCTION DISK Text file and member of load library
DSQUnGV2 PRODUCTION DISK Source code for governor exit routine
DXEGOVA DSQUSERE MACLIB DSECT for the DXEGOVA control block.
DXEXCBA DSQUSERE MACLIB DSECT for the DXEXCBA con6trol block.
DSQUnGV2 DSQUSERE MACLIB Contains text and related definitions for the governor exit routine prompts and cancellation message

If you are using an NLF: You can govern resources in an NLF session as well as an English QMF session, by using different versions of the module DSQUnGVx for each language environment. For example, if you have both English and German installed, use the module DSQUEGV2 for English and the module DSQUDGV2 for German in.

You can share the resource control table (Q.RESOURCE_TABLE or one you create yourself) and the Q.RESOURCE_VIEW between language environments, just as the Q.PROFILES table can contain profiles for English or any NLF.

How CMS interacts with the governor exit routine

At the start of a user's session, QMF loads the governor into the user's virtual storage. For performance reasons, an assembler call interface is used between QMF and the governor exit routine. The governor exit routine must provide fast performance because, depending on which resources you are trying to control, it might be called on every row retrieved from the database.

After loading the governor, QMF calls it once during session initialization. On this call, the governor should initialize itself for the user's QMF session. Toward this end, QMF passes to the governor the rows in the resource control table for the user's resource group. Resource groups and control tables were described in How the governor knows what the resource limits are.

Within QMF are exits, each marking the beginning or end of some activity. When control reaches one of these exits, QMF calls the governor. The first such exit is the one, just described, for the governor's initialization. The last is part of session termination. On this last call, the governor can do whatever is needed for its own termination. It might, for instance, release storage it no longer needs.

Between the first and last calls, QMF can call the governor many times from many different exits. Some of these calls, for example, precede the execution of a QMF command. The types of calls are described in detail in How and when QMF calls the governor exit routine.

Figure 226 shows the processing that interacts QMF with the governor exit routine:

Figure 226. CMS processing that interacts QMF with the governor exit routine
QMF Main MOdule DSQQMF points to QMF Edit Exit Module  DSQUnGV2 via Assembler
call. QMF Edit Exit Module which consists of DSQUnGV2 Governor  Exit program
points to QMF Main Module via Assembler return.
[ Previous Page | Next Page | Contents | Index ]