GDSX (Extended General Device Support) Manual
Design and Development
Extended General Device Support (GDSX) Manual—529931-001
2-35
Takeover Processing
redirected to the backup GDSX process. Instead, GDSX emulates data
communications I/O processes: any outstanding requester I/O operation is terminated
with file-system error 210 (device ownership changed). For WRITEREADs and
READs, no data is returned to the requester. All I/O that the previously active tasks
had outstanding is canceled by TSCODE, and any semaphores that were held by
those tasks (including the checkpoint semaphore) are released.
Initializing Tasks
No matter what level of fault tolerance is supported by USCODE tasks, when the
backup takes over, the following occurs:
1. Those preconfigured tasks that were active in the primary but had not
checkpointed are queued for reinitialization. They will be restarted from their main
entry point.
2. Those tasks that had checkpointed and did not own a semaphore (either the
checkpoint semaphore or a user-defined semaphore) at their last checkpoint have
their takeover flag set (tcb.statex.takeover^bit) and are placed on the ready list.
They will be restarted at the instruction following the last checkpoint.
3. Those tasks that owned a semaphore (either the checkpoint semaphore or a user-
defined semaphore) at their last checkpoint are placed on linked lists, one list for
each semaphore. They will be restarted at the instruction following the last
checkpoint.
4. The task at the head of each list is given the corresponding semaphore and is
placed on the ready list.
5. The remaining tasks in each list are queued for the corresponding semaphore with
tcb.statex.wait^cause set to sem^wait (a literal equal to 1).
USER^TAKEOVER
This user exit is called when system and user tasks have been created but are
stopped. Thus USER^TAKEOVER can alter memory contents prior to resumption of
normal operation.
Creating a New Backup Process
After normal operation is resumed, the backup task attempts to create a new backup
process.
If the primary process failed for any reason other than CPU failure, the backup task in
the backup process waits 30 seconds and then attempts to create a new backup. If
Caution. In the USER^TAKEOVER procedure you cannot remap buffers allocated in the
former primary process (which existed before the takeover) by calling ^RECLAIMBUFFER,
because each active user task must reclaim its own buffers, and no user task is active during
execution of USER^TAKEOVER.