ibm-information-center/dist/eclipse/plugins/i5OS.ic.apis_5.4.0.1/pase__setspp.htm

192 lines
5.7 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<title>_SETSPP() and _SETSPP_TS64()--Set Space Pointer for i5/OS PASE</title>
<!-- Begin Header Records -->
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<!-- Change History: -->
<!-- YYMMDD USERID Change description -->
<!-- Created by V2DCIJB on 23 Nov 1999 -->
<!-- Edited by Kersten Jan 02 -->
<!-- End Header Records -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<!-- Java sync-link -->
<script language="Javascript" src="../rzahg/synch.js" type="text/javascript">
</script>
<a name="Top_Of_Page"></a>
<h2>_SETSPP() and _SETSPP_TS64()--Set Space Pointer for i5/OS PASE</h2>
<div class="box" style="width: 70%;">
<br>
&nbsp;&nbsp;Syntax
<pre>
#include &lt;as400_protos.h&gt;
void _SETSPP(ILEpointer *<em>target</em>,
const void *<em>memory</em>);
void _SETSPP_TS64(ILEpointer *<em>target</em>,
ts64_t <em>ts64</em>);
</pre>
<br>
&nbsp;&nbsp;Default Public Authority: *USE<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Library: Standard C Library (libc.a)<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: Yes<br>
<!-- iddvc RMBR -->
<br>
</div>
<p><strong>Note:</strong> These functions can only be used in an i5/OS PASE
program. See <a href="../rzalf/rzalfintro.htm">i5/OS PASE</a> for more
information about creating i5/OS PASE programs.</p>
<p>The _SETSPP() function sets a tagged space pointer to the teraspace
equivalent of an i5/OS PASE memory address.
The _SETSPP_TS64() function sets a tagged space pointer to the memory identified by a 64-bit teraspace address.
</p>
<br>
<h3>Parameters</h3>
<dl>
<dt><strong>target</strong></dt>
<dd>(Output) Pointer to a 16-byte aligned buffer where the tagged space pointer (or null pointer) is returned.<br>
<br>
</dd>
<dt><strong>memory</strong></dt>
<dd>(Input) Pointer containing either an i5/OS PASE memory address, or a null pointer (zero).<br>
<br></dd>
<dt><strong>ts64</strong></dt>
<dd>(Input) 64-bit teraspace address, or null (zero).</dd>
</dl>
<br>
<h3>Authorities</h3>
<p><strong>_SETSPP</strong> and <strong>_SETSPP_TS64</strong> require no authority.</p>
<br>
<h3>Return Value</h3>
<p><strong>_SETSPP</strong> and <strong>_SETSPP_TS64</strong> return no function result. A tagged space pointer
or 16-byte null pointer is returned in the <em>target</em> buffer.</p>
<br>
<h3>Error Conditions</h3>
<p>Any error is reported with an i5/OS exception message that the system
converts to an i5/OS PASE signal. See <a href="pase_signals.htm">i5/OS PASE
Signal Handling</a> for information about handling i5/OS exceptions.</p>
<br>
<h3>Usage Notes</h3>
<ol>
<li><strong>_SETSPP</strong> returns a 16-byte null pointer if the input i5/OS PASE
<em>memory</em> address is null (zero) or if a 64-bit <em>memory</em> value
points to a location that cannot contain i5/OS PASE memory. i5/OS PASE memory
is allocated from teraspace, but teraspace has a limited capacity smaller than
64-bits, so i5/OS PASE can only provide addressability to a subset of a 64-bit
address space.<br>
<br>
</li>
<li>
<strong>_SETSPP_TS64</strong> returns a 16-byte null pointer if the input
<em>ts64</em> value is zero or outside the range of teraspace.<br>
<br>
</li>
<li>
<strong>_SETSPP</strong> and <strong>_SETSPP_TS64</strong> return <em>target</em> a space pointer regardless
of whether there is currently any memory at the target address.<br>
<br>
</li>
<li>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.<br>
<br>
</li>
<li>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.</li>
</ol>
<br>
<h3>Related Information</h3>
<ul>
<li><a href="pase__cvtspp.htm">_CVTSPP()--Convert Space Pointer for i5/OS
PASE</a></li>
<li><a href="pase__cvtts64.htm">_CVTTS64()--Convert Teraspace Address for i5/OS
PASE</a></li>
<li><a href="pase__getts64.htm">_GETTS64() and _GETTS64_SPP--Get Teraspace Address for i5/OS
PASE</a></li>
<li><a href="pase__getts64m.htm">_GETTS64M()--Get Multiple Teraspace Addresses for i5/OS
PASE</a></li>
<li><a href="pase__setsppm.htm">_SETSPPM()--Set Multiple Space Pointers for i5/OS
PASE</a></li>
</ul>
<br>
<hr>
API introduced: V4R5 for _SETSPP, V5R3 for _SETSPP_TS64
<hr>
<center>
<table cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
"pase1.htm">i5/OS PASE APIs</a> | <a href="aplist.htm">APIs by category</a>
</td>
</tr>
</table>
</center>
</body>
</html>