GDSX (Extended General Device Support) Manual
Design and Development
Extended General Device Support (GDSX) Manual—529931-001
2-30
Fault-Tolerance Processing in GDSX Initialization
•
Calls the USER^VERSION user exit.
•
Allocates memory for control blocks, memory pools, stack images, checkpointed
buffers, EMS log message, and so on.
•
Initializes monitor and listener system tasks. Starts the listener task. If GDSX was
run as a process pair, a backup task is started. There is only one backup task per
GDSX process, and it is always active after it is started. The backup task is
awakened by the kernel when checkpointing or CPU monitoring needs to be done.
•
Calls the USER^INITIALIZE user exit. Data retrieved from external sources (such
as files) including semaphores that are located in a global data block cannot be
checkpointed in the USER^INITIALIZE user exit, because the backup GDSX
process is not running. Checkpointing this type of data must be deferred until the
USER^BACKUP exit is called.
•
Starts the monitor task.
•
Attempts to create a backup process. The backup task calls
PROCESS_CREATE_ to create a backup process.
After a successful PROCESS_CREATE_ call, brother (the backup process) calls
USER^INIT^CONFIG^PARAMS and opens $RECEIVE. (The processing by brother
follows the same general sequence described for the primary process in Overview of
GDSX Processing on page 2-10.)
Then the backup task opens brother and sends it a type -32768 system message.
This message contains the startup message data received by the primary process,
including TACL ASSIGN values and configuration parameters set by TACL PARAM
commands that brother requires for data space initialization.
Brother then calls the USER^VERSION user exit.
The backup task next closes brother, signaling that brother should proceed with data
space initialization.
Having initialized its data space, brother does the following:
•
Determines that it is in fact the backup.
•
Sets the global variable backup^process^flag to 1.
•
Bypasses the remainder of normal initialization (such as opening the log file) and
starts up the monitor task.
•
Calls the USER^INITIALIZE user exit. The monitor then creates the listener task
and backup task.
•
Idles in the listener task’s CHECKMONITOR procedure.
In the meantime, the backup task in the primary process has reopened brother. This
open is assigned to the backup process’s listener task (that is, any messages from the
primary will be handled by the backup’s listener). The backup task in the primary next
sets the global variable nonstop to one, signaling all other tasks that brother is up and