Guardian Procedure Calls Reference Manual (G06.25+)

Guardian Procedure Calls (C)
Guardian Procedure Calls Reference Manual522629-013
3-56
CHECKPOINTMANYX Procedure
The selectable segment put into use following takeover depends on several
factors:
The segment in use at the time of the last checkpoint is put into use if it is
available; that is, the segment was allocated to the backup process using the
SEGMENT_ALLOCATE_CHKPT_ or CHECKALLOCATESEGMENT procedure
and has not since been deallocated by the
SEGMENT_DEALLOCATE_CHKPT_ or CHECKDEALLOCATESEGMENT
procedure.
The segment in use when the CHECKMONITOR or CHECKSWITCH
procedure was called is used if the segment in use at the time of the last
checkpoint is no longer available.
No segment is used if the segment in use at the time of the last checkpoint and
the segment in use when the CHECKMONITOR or CHECKSWITCH procedure
was called are both unavailable.
Do not try to checkpoint data in a read-only segment.
You can checkpoint data in shared extended data segments, but you must ensure
consistency of the data among all processes that might be sharing the segment,
both in the primary processor and the backup processor.
Stack allocation for native processes
The backup process can abnormally terminate if not enough disk or memory
resources are available to increase the size of the main stack in the backup
process. This situation is possible in a native process, because the main stack is
allocated dynamically or on request. By contrast, TNS stacks are statically
allocated.
Use the space guarantee attribute of the object file or process creation procedure
(PROCESS_LAUNCH_ or PROCESS_SPAWN_) to ensure that enough resources
are available when the native process is created.
Errors returned by CHECKPOINTMANYX
CHECKPOINTMANYX returns the following errors:
The checkpoint message contains a buffer in an extended data segment, and
the backup does not have that segment allocated (file-system error 22).
The backup process does not exist.
Parameter errors (status.<0:7> = 3):
A bounds error occurred on the descriptor array.
The file number is not open.
The extended address is absolute.
The extended address is in logical segment 1, 2, or 3 (code or library
spaces); that is, not in a data segment or the stack.