GDSX Manual
Service Routines
Extended General Device Support (GDSX) Manual–134303
8-18
^CHECKPOINT
buffer:length input:input
STRING .EXT:ref:*, INT:value
is a pointer to the buffer to be checked and the length of the buffer in bytes.
^CHECKPOINT
When GDSX is running as a process pair, this procedure is called by a
DEVICE^HANDLER task or LINE^HANDLER task to send information pertaining to
its current executing state to the backup process. The checkpoint information enables
the backup process to recover from a failure of the primary process.
A call to this function establishes a restart point in the calling task at the return from the
call, in a manner similar to a call to the Guardian CHECKPOINT procedure. Normally,
the procedure returns with a value of zero for status. However, if a failure of the
primary GDSX process occurs, all I/O that the task had outstanding is canceled by
TSCODE, any semaphores held (including the checkpoint semaphore) are released, the
procedure returns a nonzero value, and the task executes the statement following the last
call to ^CHECKPOINT.
For additional information on checkpointing, see “Fault Tolerance” on page 2-28.
status returned value
INT:value
indicates the outcome of the call. The value of status is one of the following:
type input
INT:value
specifies the type of checkpoint. The value of type is one of the following:
Considerations
•
^CHECKPOINT causes the calling task to be suspended.
•
After a takeover, memory pool buffers must be allocated by a call to
^RECLAIMBUFFER.
status := ^CHECKPOINT ( type ); !
i
0 The checkpoint was successful
Nonzero Number There was a takeover by the backup process
1 Checkpoint only the stack image and the TCB
2 Checkpoint the task’s stack image, its TCB, and all local and extended
memory that the task currently has allocated by way of GETLOCALPOOL or
GETEXTPOOL