Kernel domain XPI functions

The XPI provides two kernel domain functions. These are the DFHKEDSX calls START_PURGE_PROTECTION and STOP_PURGE_PROTECTION.

The START_PURGE_PROTECTION call

The START_PURGE_PROTECTION function is provided on the DFHKEDSX macro call. It inhibits purge, but not force-purge, for the current task. This function can be used by all global user exit programs to inhibit purge during a global user exit call. In general, each START_PURGE_PROTECTION call should have a corresponding STOP_PURGE_PROTECTION function call to end the purge protection period on completion of any program logic that needs such protection.

START_PURGE_PROTECTION
DFHKEDSX  [CALL,]
       [CLEAR,]
       [IN,
       FUNCTION(START_PURGE_PROTECTION),]
       [OUT,
       RESPONSE (name1 | *)]

This command is threadsafe.

There are no input or output parameters on this call, only a RESPONSE.

The STOP_PURGE_PROTECTION call

The STOP_PURGE_PROTECTION function is provided on the DFHKEDSX macro call. It is re-enables purge for the current task after purge has been suspended by a preceding START_PURGE_PROTECTION function call.

STOP_PURGE_PROTECTION
DFHKEDSX  [CALL,]
       [CLEAR,]
       [IN,
       FUNCTION(STOP_PURGE_PROTECTION),]
       [OUT,
       RESPONSE (name1 | *)]

This command is threadsafe.

There are no input or output parameters on this call, only a RESPONSE.

Nesting purge protection calls

The START_ and STOP_PURGE_PROTECTION functions can be nested. You should ensure that, if multiple START_PURGE_PROTECTION calls are issued for a task, that the correct number of STOP_PURGE_PROTECTION calls are issued to cancel the purge protection.

If you issue two starts and only one stop, purge protection remains on for the current task.

For example, for any current task, more than one global user exit program may be driven. You must design your exit programs to ensure that purge protection is correctly canceled. An example of nesting is shown as follows:
 XEIIN:
  EXIT_PROG1: Calls START_PURGE_PROTECTION
 
    XFCREQ:
     EXIT_PROG2: Calls START_PURGE_PROTECTION
 
    XFCREQC:
     EXIT_PROG3: Calls STOP_PURGE_PROTECTION
 
 XEIOUT:
  EXIT_PROG4: Calls STOP_PURGE_PROTECTION