Guardian Application Conversion Guide
Converting Memory-Management Procedure Calls
Converting Other Parts of an Application
096047 Tandem Computers Incorporated 8–39
To return the same information about an extended data segment that is currently
allocated by the backup process of a process pair, call the
SEGMENT_GETBACKUPINFO_ procedure from the primary process.
Extended Segment Size On both TNS and TNS/R systems, the maximum size of an extended segment is 127.5
megabytes as of the C30.06 release. The SEGMENT_ALLOCATE_ and
RESIZESEGMENT Guardian procedures no longer allocate extended segments larger
than 127.5 megabytes.
Change your program if it uses more than the new maximum size. If a program
allocates extended segments that are too large, SEGMENT_ALLOCATE_ returns
error 5.
Checking Address Limits Your existing program might call the LASTADDR procedure to obtain the relative
address of the last word in your application process’s user data segment:
last^address := LASTADDR;
Or your existing program might call the LASTADDRX procedure to obtain the last
relative address available in the specified relative data segment (which must be
accessible at the time of the call):
last^ext^address := LASTADDRX ( rel^segment^num );
You can optionally convert your program to call the ADDRESS_DELIMIT_ procedure.
This procedure obtains the addresses of the first and last bytes of a particular area of
your logical address space. You can use it to obtain the boundaries of either your
process’s user data segment or of a currently accessible extended data segment.
You supply an address contained within the address area of interest, passing it to
ADDRESS_DELIMIT_ in the value parameter
address
. Optionally, you can use the
segment-id
output parameter to obtain the segment ID of the area if it is an
extended data segment. You can also use the
address-descriptor
output
parameter to obtain a set of flags that describe the area.
In the following example, the address of a local variable contained in the user data
segment is passed to ADDRESS_DELIMIT_. The procedure returns the addresses of
the first and last bytes of the user data segment.
This example shows that the output addresses can be assigned either to a simple
variable (LOW^ADDR) or to a pointer variable (HIGH^ADDR). After a successful call to
ADDRESS_DELIMIT_, HIGH^ADDR designates the last byte of the user data segment.