Open System Services Programmer's Guide

64-bit threaded applications must use the Posix User Threads library.
32-bit and 64-bit processes can communicate through inter-process communication (IPC)
messages and shared memory.
64-Bit OSS Processes
A 32-bit OSS process is created when running an OSS program that was compiled under the
ILP32 data model, which is the default data model. (See “ILP32 and LP64 Data Models (page 289)
for details of the OSS data models.)
A 64-bit OSS process is created from a running OSS program in any of the following events:
A call is made to one of the exec() or tdm_exec()family of functions, where the program
file named in the path argument is compiled and linked under the LP64 data model. The caller
can be either a 32-bit or a 64-bit process.
A call is made to tdm_spawn() or tdm_spawnp(), where the program file named in the
file argument is compiled and linked under the LP64 data model.
A call is made to fork() from an already existing 64-bit process. (The child process is a
copy of the caller/parent process.)
Additionally, a 64-bit OSS process can be created by calling the PROCESS_SPAWN_ Guardian
procedure, where the program file in the OSS program-file argument is compiled and linked under
the LP64 data model. The caller can be either a native Guardian process, a 32-bit OSS process,
or a 64-bit OSS process that was developed in a mixed-data-model programming environment.
For information about mixed-data-model programming, see “Mixed Data-Model Programming
(page 299). The 64-bit OSS process can be created on any processor in the Expand network with
the restriction that the OSS program file must reside on the node where the process is being created.
(The processor for the 64-bit OSS target process must be running H06.24 or J06.13 or greater.)
NOTE: A 64-bit OSS process that calls the PROCESS_SPAWN_ procedure must be developed
in a mixed-data-model environment. That is, all pointers for PROCESS_SPAWN_ parameters must
be allocated from 32-bit addressable memory using the malloc32()function. For information
about using PROCESS_SPAWN_ in a mixed-data-model environment, see the Guardian Procedure
Calls Reference Manual in the NTL.
A 64-bit process has its resources allocated as follows:
Allocated from 32-bit addressable memory:
The main stack
The priv stack
The program file and DLL text
The application's and DLL's global data
The 32-bit addressable heap (allocated with malloc32())
Allocated from 64-bit addressable memory:
The 64-bit addressable heap (allocated by default with malloc())
SysV Shared Memory (SHM)
64-bit flat segments from SEGMENT_ALLOCATE64_
286 64-Bit Support in OSS and Guardian