GDSX Manual

Design and Development
Extended General Device Support (GDSX) Manual134303
2-26
Checkpointing Memory Pool Buffers
Extended Buffer Pool
This pool may be used as desired. Memory allocated from this pool is byte addressable.
The GETEXTPOOL[X] and PUTEXTPOOL procedures are used to allocate and
deallocate space from this pool.
The maximum size of the extended buffer pool can be established by setting the
MAXBUFPOOL configuration parameter (see "GDSX Configuration Parameters" on
page 2-42). The default for MAXBUFPOOL is 32,000 bytes, and the maximum is
7.5 megabytes. If the size specified for the extended buffer pool is too large,
configuration error message 10002 is sent to the home terminal:
10002 maxTCBpool or Buffer/Msg pool too large
Extended Message Pool
This pool may be used as desired. Memory allocated from this pool is byte addressable.
The GETEXTPOOL[X] and PUTEXTPOOL procedures are used to allocate and
deallocate space from this pool.
The size of the extended message pool can be established by setting the
MAXMSGPOOL configuration parameter (see "GDSX Configuration Parameters" on
page 2-42). The default for maxmsgpoolsize is 32,000 bytes, and the maximum is 7.5
megabytes. If the size specified for the extended message pool is too large,
configuration error message 10002 is sent to the home terminal:
10002 maxTCBpool or Buffer/Msg pool too large
Checkpointing Memory Pool Buffers
A call to ^CHECKPOINT(2) checkpoints all local and extended memory pool buffers
acquired by the calling task. If USCODE has allocated an extended segment (with an ID
in the range from 0 to 1023) through calls to ALLOCATESEGMENT and
USESEGMENT, such a segment is not checkpointed with a call to ^CHECKPOINT(2).
Because user tasks share the memory pools and would overwrite each other’s data if
they were allowed to checkpoint directly across to corresponding memory pools in the
backup process, pool buffers are checkpointed to a section of the backup process’s
extended memory where each task has a separate, TASKCPSIZE-sized area for
checkpointing. Buffer images are copied, but to different addresses. Therefore, in the
event of a takeover, any memory pool buffer addresses that the task has stored in its data
stack are no longer valid.
A task recovers its buffer images via calls on ^RECLAIMBUFFER. This procedure is
passed (by reference) the word pointer to the data as it was allocated in the primary. The
task’s last checkpoint block in the (former) backup’s extended memory is searched for
an address match. When one is found, space in the specified buffer pool is allocated and
the data image is copied. Finally, the word pointer in the task’s stack is updated to point
to the new location of the data. See the description of "^RECLAIMBUFFER" on page
8-61 for more information.