_SETSPPM()--Set Multiple Space Pointers for IBM PASE for i
Syntax
#include <as400_protos.h> void _SETSPPM(ILEpointer *const *target);
Default Public Authority: *USE
Library: Standard C Library (libc.a)
Threadsafe: Yes
Note: This function can only be used in an IBM® i PASE program. See the IBM PASE for i topic collection for more information about creating IBM PASE for i programs.
The _SETSPPM() function sets multiple tagged space pointers to the teraspace equivalents of IBM PASE for i memory addresses.
Parameters
- target
- (Input/Output) Pointer to a list of pointers (of type ILEpointer), with a null pointer marking the end of the list. _SETSPPM updates each ILEpointer with a tagged space pointer to the teraspace equivalent address of the IBM PASE for i memory address input through the addr field of the ILEpointer.
Authorities
_SETSPPM requires no authority.
Return Value
_SETSPPM returns no function result.
Error Conditions
Any error is reported with an IBM i exception message that the system converts to an IBM PASE for i signal. See IBM PASE for i Signal Handling for information about handling IBM i exceptions.
Usage Notes
- _SETSPPM returns a 16-byte null ILEpointer if the IBM PASE for i memory address is null (zero) or points to a location that cannot contain IBM PASE for i memory.
IBM PASE for i memory is allocated from teraspace, but teraspace has a limited capacity smaller than
64-bits, so IBM PASE for i can only provide addressability to a subset of a 64-bit address space.
- _SETSPPM returns space pointers regardless
of whether there is currently any memory at the IBM PASE for i addresses.
- A tagged space pointer to a teraspace location must only be used by the
process that owns the teraspace, although the current system implementation
does not reliably enforce this restriction. Applications must not assume that a
process can reference memory in the teraspace of another process because future
system implementations may make this impossible. Tagged space pointers to
teraspace memory that were either inherited by the child process of a fork or
stored in shared memory by another process should be considered unusable.
- Tagged (16-byte) pointers must not be stored in memory mapped from a bytestream file (by either mmap or shmat) although the current system implementation does not reliably enforce this restriction. Tagged pointers can be stored in shared memory objects (created by shmget and mapped by shmat), but a tagged space pointer to teraspace memory cannot be reliably used by a process other than the one that owns the teraspace.
Related Information
- _CVTSPP()--Convert Space Pointer for IBM PASE for i
- _CVTTS64()--Convert Teraspace Address for IBM PASE for i
- _GETTS64() and _GETTS64_SPP--Get Teraspace Address for IBM PASE for i
- _GETTS64M()--Get Multiple Teraspace Addresses for IBM PASE for i
- _SETSPP() and _SETSPP_TS64()--Set Space Pointer for IBM PASE for i
API introduced: V5R3