Initial commit.

This commit is contained in:
2017-10-26 19:57:24 +02:00
commit 9ce8b5485d
1090 changed files with 47036 additions and 0 deletions
@@ -0,0 +1,51 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): src/ppu/communication/moc_ssend_ppu.c File Reference</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>src/ppu/communication/moc_ssend_ppu.c File Reference</h1>
<p>
<code>#include &lt;stdio.h&gt;</code><br>
<code>#include &lt;string.h&gt;</code><br>
<code>#include &lt;<a class="el" href="../../dc/dcb/spu_2moc_8h-source.html">moc.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="../../d4/d9b/imoc_8h-source.html">internal/imoc.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="../../db/db7/imoc__macros__ppu_8h-source.html">internal/ppu/imoc_macros_ppu.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="../../de/de1/imoc__dma__ppu_8h-source.html">internal/ppu/imoc_dma_ppu.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html">internal/ppu/imoc_core_ppu.h</a>&gt;</code><br>
<p>
<div class="dynheader">
Include dependency graph for moc_ssend_ppu.c:</div>
<div class="dynsection">
<p><center><img src="../../db/d82/moc__ssend__ppu_8c__incl.png" border="0" usemap="#src/ppu/communication/moc_ssend_ppu.c_map" alt=""></center>
<map name="src/ppu/communication/moc_ssend_ppu.c_map">
<area shape="rect" href="../../d0/d3a/spu_2moc_8h.html" title="moc.h" alt="" coords="75,155,131,181"><area shape="rect" href="../../d9/db3/imoc_8h.html" title="internal/imoc.h" alt="" coords="236,229,343,256"><area shape="rect" href="../../d8/d98/imoc__macros__ppu_8h.html" title="internal/ppu/imoc_macros_ppu.h" alt="" coords="1095,80,1303,107"><area shape="rect" href="../../de/df9/imoc__dma__ppu_8h.html" title="internal/ppu/imoc_dma_ppu.h" alt="" coords="417,229,609,256"><area shape="rect" href="../../d6/d09/imoc__core__ppu_8h.html" title="internal/ppu/imoc_core_ppu.h" alt="" coords="841,80,1033,107"><area shape="rect" href="../../dd/d9c/moc__dma__spu_8h.html" title="moc_dma_spu.h" alt="" coords="44,229,161,256"><area shape="rect" href="../../d0/d1d/moc__datatype__spu_8h.html" title="moc_datatype_spu.h" alt="" coords="44,304,185,331"><area shape="rect" href="../../d1/d82/moc_8h.html" title="../moc.h" alt="" coords="345,304,415,331"><area shape="rect" href="../../d5/d94/moc__datatype_8h.html" title="../moc_datatype.h" alt="" coords="260,379,385,405"><area shape="rect" href="../../df/d5c/moc__error__codes_8h.html" title="moc_error_codes.h" alt="" coords="460,379,591,405"><area shape="rect" href="../../d7/d3d/imoc__core_8h.html" title="imoc_core.h" alt="" coords="660,304,751,331"><area shape="rect" href="../../d2/d42/imoc__macros_8h.html" title="../imoc_macros.h" alt="" coords="1149,155,1272,181"><area shape="rect" href="../../db/dae/ppu_2moc_8h.html" title="../../ppu/moc.h" alt="" coords="728,155,835,181"><area shape="rect" href="../../db/d62/moc__dma__ppu_8h.html" title="moc_dma_ppu.h" alt="" coords="684,229,801,256"><area shape="rect" href="../../d8/de2/moc__datatype__ppu_8h.html" title="moc_datatype_ppu.h" alt="" coords="495,304,636,331"></map>
</div>
<p>
<a href="../../d4/db6/moc__ssend__ppu_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/dc2/group__p2p__synch.html#g46cb2ff2b5a0601165978598932d6120">MOC_Ssend</a> (void *buf, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, int dest, int tag, <a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> comm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs a blocking synchronous mode send operation. <a href="../../d5/dc2/group__p2p__synch.html#g46cb2ff2b5a0601165978598932d6120"></a><br></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:50:18 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
@@ -0,0 +1,47 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): src/spu/dma/moc_dma-wait_spu.c File Reference</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>src/spu/dma/moc_dma-wait_spu.c File Reference</h1>
<p>
<code>#include &lt;<a class="el" href="../../dc/dcb/spu_2moc_8h-source.html">moc.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="../../d4/d95/imoc__dma__spu_8h-source.html">internal/spu/imoc_dma_spu.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="../../d1/d03/moc__dma__spu_8h-source.html">spu/moc_dma_spu.h</a>&gt;</code><br>
<p>
<div class="dynheader">
Include dependency graph for moc_dma-wait_spu.c:</div>
<div class="dynsection">
<p><center><img src="../../d9/d82/moc__dma-wait__spu_8c__incl.png" border="0" usemap="#src/spu/dma/moc_dma-wait_spu.c_map" alt=""></center>
<map name="src/spu/dma/moc_dma-wait_spu.c_map">
<area shape="rect" href="../../d0/d3a/spu_2moc_8h.html" title="moc.h" alt="" coords="125,80,181,107"><area shape="rect" href="../../dd/d9c/moc__dma__spu_8h.html" title="moc_dma_spu.h" alt="" coords="191,155,308,181"><area shape="rect" href="../../d4/dce/imoc__dma__spu_8h.html" title="internal/spu/imoc_dma_spu.h" alt="" coords="332,155,524,181"><area shape="rect" href="../../d0/d1d/moc__datatype__spu_8h.html" title="moc_datatype_spu.h" alt="" coords="37,229,179,256"><area shape="rect" href="../../d1/d82/moc_8h.html" title="../moc.h" alt="" coords="207,229,276,256"><area shape="rect" href="../../d5/d94/moc__datatype_8h.html" title="../moc_datatype.h" alt="" coords="37,304,163,331"><area shape="rect" href="../../df/d5c/moc__error__codes_8h.html" title="moc_error_codes.h" alt="" coords="237,304,368,331"></map>
</div>
<p>
<a href="../../da/dd2/moc__dma-wait__spu_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d16/group__dma__access.html#g0ba7b00fbebaabb8b39737a7c13efc67">MOC_Wait_data</a> (<a class="el" href="../../db/d17/structmoc__request__struct.html">MOC_Request</a> *request)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Waits till a MOC_IGet_data or IMOC_IPut_data is completed. <a href="../../d9/d16/group__dma__access.html#g0ba7b00fbebaabb8b39737a7c13efc67"></a><br></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:50:37 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
@@ -0,0 +1,45 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): src/ppu/system/moc_set_buffer_size_ppu.c File Reference</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>src/ppu/system/moc_set_buffer_size_ppu.c File Reference</h1>
<p>
<code>#include &lt;<a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html">internal/ppu/imoc_core_ppu.h</a>&gt;</code><br>
<p>
<div class="dynheader">
Include dependency graph for moc_set_buffer_size_ppu.c:</div>
<div class="dynsection">
<p><center><img src="../../d2/dc1/moc__set__buffer__size__ppu_8c__incl.png" border="0" usemap="#src/ppu/system/moc_set_buffer_size_ppu.c_map" alt=""></center>
<map name="src/ppu/system/moc_set_buffer_size_ppu.c_map">
<area shape="rect" href="../../d6/d09/imoc__core__ppu_8h.html" title="internal/ppu/imoc_core_ppu.h" alt="" coords="331,80,523,107"><area shape="rect" href="../../d7/d3d/imoc__core_8h.html" title="../imoc_core.h" alt="" coords="464,229,568,256"><area shape="rect" href="../../db/dae/ppu_2moc_8h.html" title="../../ppu/moc.h" alt="" coords="179,155,285,181"><area shape="rect" href="../../db/d62/moc__dma__ppu_8h.html" title="moc_dma_ppu.h" alt="" coords="125,229,243,256"><area shape="rect" href="../../d1/d82/moc_8h.html" title="../moc.h" alt="" coords="77,304,147,331"><area shape="rect" href="../../d8/de2/moc__datatype__ppu_8h.html" title="moc_datatype_ppu.h" alt="" coords="247,304,388,331"><area shape="rect" href="../../d5/d94/moc__datatype_8h.html" title="moc_datatype.h" alt="" coords="201,379,316,405"><area shape="rect" href="../../df/d5c/moc__error__codes_8h.html" title="moc_error_codes.h" alt="" coords="47,379,177,405"></map>
</div>
<p>
<a href="../../da/d1a/moc__set__buffer__size__ppu_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d9a/group__environment__startup.html#g0ac2f7a8d9b93b8da0408a5307f0c925">MOC_Set_buffer_size</a> (uint32_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the size of the buffer used for buffered communication. <a href="../../d8/d9a/group__environment__startup.html#g0ac2f7a8d9b93b8da0408a5307f0c925"></a><br></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:50:30 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
@@ -0,0 +1,60 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): Environmental Management</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Environmental Management<br>
<small>
[<a class="el" href="../../dc/dc0/group__internal__main.html">Developer Documentation</a>]</small>
</h1>
<p>
<div class="dynheader">
Collaboration diagram for Environmental Management:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d2/d16/group__internal__env.png" border="0" alt="" usemap="#df/d8c/d2_2d16_2group____internal____env_map">
<map name="df/d8c/d2_2d16_2group____internal____env_map">
<area shape="rect" href="../../d1/d97/group__internal__error.html" title="This section deals with error&#45;messages." alt="" coords="491,5,595,32"><area shape="rect" href="../../d3/dd2/group__internal__timer.html" title="Internals about Time." alt="" coords="452,56,633,83"><area shape="rect" href="../../d6/de0/group__internal__init.html" title="Internals about the startup of the execution&#45;environment and SPU&#45;Thread&#45;Management..." alt="" coords="475,107,611,133"><area shape="rect" href="../../dc/dc0/group__internal__main.html" title="This section deals with the internal design and functionality." alt="" coords="5,56,173,83"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Internals about Startup &amp; Shutdown and Error-Handling.
<p>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Modules</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/de0/group__internal__init.html">Startup &amp; Shutdown</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internals about the startup of the execution-environment and SPU-Thread-Management. <br></td></tr>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d97/group__internal__error.html">Error-Handling</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This section deals with error-messages. <br></td></tr>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/dd2/group__internal__timer.html">Timers and Synchronization</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internals about Time. <br></td></tr>
<p>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:51:04 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

@@ -0,0 +1,46 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): src/ppu/dma/moc_translate_ea_ls_ppu.c File Reference</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>src/ppu/dma/moc_translate_ea_ls_ppu.c File Reference</h1>
<p>
<code>#include &lt;<a class="el" href="../../d8/df3/moc__dma__ppu_8h-source.html">ppu/moc_dma_ppu.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html">internal/ppu/imoc_core_ppu.h</a>&gt;</code><br>
<p>
<div class="dynheader">
Include dependency graph for moc_translate_ea_ls_ppu.c:</div>
<div class="dynsection">
<p><center><img src="../../db/d81/moc__translate__ea__ls__ppu_8c__incl.png" border="0" usemap="#src/ppu/dma/moc_translate_ea_ls_ppu.c_map" alt=""></center>
<map name="src/ppu/dma/moc_translate_ea_ls_ppu.c_map">
<area shape="rect" href="../../db/d62/moc__dma__ppu_8h.html" title="ppu/moc_dma_ppu.h" alt="" coords="41,229,183,256"><area shape="rect" href="../../d6/d09/imoc__core__ppu_8h.html" title="internal/ppu/imoc_core_ppu.h" alt="" coords="279,80,471,107"><area shape="rect" href="../../d1/d82/moc_8h.html" title="../moc.h" alt="" coords="207,304,276,331"><area shape="rect" href="../../d8/de2/moc__datatype__ppu_8h.html" title="moc_datatype_ppu.h" alt="" coords="41,304,183,331"><area shape="rect" href="../../d5/d94/moc__datatype_8h.html" title="moc_datatype.h" alt="" coords="41,379,156,405"><area shape="rect" href="../../df/d5c/moc__error__codes_8h.html" title="moc_error_codes.h" alt="" coords="231,379,361,405"><area shape="rect" href="../../d7/d3d/imoc__core_8h.html" title="../imoc_core.h" alt="" coords="524,229,628,256"><area shape="rect" href="../../db/dae/ppu_2moc_8h.html" title="../../ppu/moc.h" alt="" coords="193,155,300,181"></map>
</div>
<p>
<a href="../../d4/d65/moc__translate__ea__ls__ppu_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d16/group__dma__access.html#g40b39bb7c07bc07d783c85b10f0bf60f">MOC_Translate_EA_to_LS</a> (uint64_t ea, int rank, uint32_t *ls)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Translates an effective-address of a SPU into the corresponding local-store address. <a href="../../d9/d16/group__dma__access.html#g40b39bb7c07bc07d783c85b10f0bf60f"></a><br></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:50:22 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
@@ -0,0 +1 @@
c8359dda4ae6ebfe59a81476a6a762a8
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

+90
View File
@@ -0,0 +1,90 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): include/internal/imoc_macros.h File Reference</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>include/internal/imoc_macros.h File Reference</h1>
<p>
<p>
<div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dynsection">
<p><center><img src="../../d8/d84/imoc__macros_8h__dep__incl.png" border="0" usemap="#include/internal/imoc_macros.hdep_map" alt=""></center>
<map name="include/internal/imoc_macros.hdep_map">
<area shape="rect" href="../../d8/d98/imoc__macros__ppu_8h.html" title="include/internal/ppu/imoc_macros_ppu.h" alt="" coords="1427,80,1680,107"><area shape="rect" href="../../db/d33/imoc__get__entry_8c.html" title="src/noarch/internal/communication/imoc_get_entry.c" alt="" coords="1704,80,2027,107"><area shape="rect" href="../../d7/d58/moc__dma-get__ppu_8c.html" title="src/ppu/dma/moc_dma&#45;get_ppu.c" alt="" coords="2051,80,2267,107"><area shape="rect" href="../../d8/d06/moc__dma-iput__ppu_8c.html" title="src/ppu/dma/moc_dma&#45;iput_ppu.c" alt="" coords="2291,80,2509,107"><area shape="rect" href="../../d4/d2d/imoc__dma-get__ppu_8c.html" title="src/ppu/internal/dma/imoc_dma&#45;get_ppu.c" alt="" coords="2533,80,2797,107"><area shape="rect" href="../../df/d10/imoc__dma-iput__ppu_8c.html" title="src/ppu/internal/dma/imoc_dma&#45;iput_ppu.c" alt="" coords="2821,80,3088,107"><area shape="rect" href="../../dc/d59/moc__barrier__spu_8c.html" title="src/spu/communication/moc_barrier_spu.c" alt="" coords="3112,80,3379,107"><area shape="rect" href="../../d6/d8c/moc__bsend__spu_8c.html" title="src/spu/communication/moc_bsend_spu.c" alt="" coords="3403,80,3669,107"><area shape="rect" href="../../de/d76/moc__issend__spu_8c.html" title="src/spu/communication/moc_issend_spu.c" alt="" coords="3693,80,3963,107"><area shape="rect" href="../../d9/dab/moc__recv__spu_8c.html" title="src/spu/communication/moc_recv_spu.c" alt="" coords="3987,80,4240,107"><area shape="rect" href="../../d3/d71/moc__ssend__spu_8c.html" title="src/spu/communication/moc_ssend_spu.c" alt="" coords="4264,80,4531,107"><area shape="rect" href="../../d8/d91/moc__dma-get__spu_8c.html" title="src/spu/dma/moc_dma&#45;get_spu.c" alt="" coords="4555,80,4771,107"><area shape="rect" href="../../da/dea/moc__dma-iget__spu_8c.html" title="src/spu/dma/moc_dma&#45;iget_spu.c" alt="" coords="4795,80,5013,107"><area shape="rect" href="../../dc/de8/moc__dma-iput__spu_8c.html" title="src/spu/dma/moc_dma&#45;iput_spu.c" alt="" coords="5037,80,5256,107"><area shape="rect" href="../../df/ddc/moc__dma-put__spu_8c.html" title="src/spu/dma/moc_dma&#45;put_spu.c" alt="" coords="5280,80,5496,107"><area shape="rect" href="../../d5/d1c/imoc__dma-get__spu_8c.html" title="src/spu/internal/dma/imoc_dma&#45;get_spu.c" alt="" coords="5520,80,5784,107"><area shape="rect" href="../../d7/daf/imoc__dma-iget__spu_8c.html" title="src/spu/internal/dma/imoc_dma&#45;iget_spu.c" alt="" coords="5808,80,6075,107"><area shape="rect" href="../../d8/d30/imoc__dma-iput__spu_8c.html" title="src/spu/internal/dma/imoc_dma&#45;iput_spu.c" alt="" coords="6099,80,6365,107"><area shape="rect" href="../../da/db1/imoc__dma-put__spu_8c.html" title="src/spu/internal/dma/imoc_dma&#45;put_spu.c" alt="" coords="6389,80,6653,107"><area shape="rect" href="../../d3/dc2/moc__isend_8c.html" title="src/noarch/communication/moc_isend.c" alt="" coords="5,155,256,181"><area shape="rect" href="../../db/d55/moc__send_8c.html" title="src/noarch/communication/moc_send.c" alt="" coords="280,155,528,181"><area shape="rect" href="../../d1/d72/moc__barrier__ppu_8c.html" title="src/ppu/communication/moc_barrier_ppu.c" alt="" coords="552,155,819,181"><area shape="rect" href="../../d9/d14/moc__bsend__ppu_8c.html" title="src/ppu/communication/moc_bsend_ppu.c" alt="" coords="843,155,1109,181"><area shape="rect" href="../../dc/d02/moc__issend__ppu_8c.html" title="src/ppu/communication/moc_issend_ppu.c" alt="" coords="1133,155,1403,181"><area shape="rect" href="../../dc/db7/moc__recv__ppu_8c.html" title="src/ppu/communication/moc_recv_ppu.c" alt="" coords="1427,155,1680,181"><area shape="rect" href="../../d2/d00/moc__ssend__ppu_8c.html" title="src/ppu/communication/moc_ssend_ppu.c" alt="" coords="1704,155,1971,181"><area shape="rect" href="../../d3/dc6/moc__dma-iget__ppu_8c.html" title="src/ppu/dma/moc_dma&#45;iget_ppu.c" alt="" coords="1995,155,2213,181"><area shape="rect" href="../../d3/dfa/moc__dma-put__ppu_8c.html" title="src/ppu/dma/moc_dma&#45;put_ppu.c" alt="" coords="2237,155,2453,181"><area shape="rect" href="../../d1/da6/imoc__dma-iget__ppu_8c.html" title="src/ppu/internal/dma/imoc_dma&#45;iget_ppu.c" alt="" coords="2477,155,2744,181"><area shape="rect" href="../../d3/d8f/imoc__dma-put__ppu_8c.html" title="src/ppu/internal/dma/imoc_dma&#45;put_ppu.c" alt="" coords="2768,155,3032,181"></map>
</div>
<p>
<a href="../../d0/d87/imoc__macros_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d32/group__internal__tm.html#gfc07f5e570f47525b80a1f3e5a36b3b3">IMOC_TEST_COMM_SEND</a>(comm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if invalid communicator in a send-operation. <a href="../../d3/d32/group__internal__tm.html#gfc07f5e570f47525b80a1f3e5a36b3b3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d32/group__internal__tm.html#g7e5044180aa40d4a5a41108f88559871">IMOC_TEST_COMM_RECV</a>(comm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if invalid communicator in a recv-operation. <a href="../../d3/d32/group__internal__tm.html#g7e5044180aa40d4a5a41108f88559871"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d32/group__internal__tm.html#g49637a9f588e1c44584d8def5c45e811">IMOC_TEST_TAG_SEND</a>(tag)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if invalid tag in a send-operation. <a href="../../d3/d32/group__internal__tm.html#g49637a9f588e1c44584d8def5c45e811"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d32/group__internal__tm.html#ge0070a22959ddde28816cc5676687b1d">IMOC_TEST_TAG_RECV</a>(tag)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if invalid tag in a recv-operation. <a href="../../d3/d32/group__internal__tm.html#ge0070a22959ddde28816cc5676687b1d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d32/group__internal__tm.html#g1dfddaa8f7d9aad32b00248c7dc782d2">IMOC_TEST_RANK</a>(rank)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if invalid rank. <a href="../../d3/d32/group__internal__tm.html#g1dfddaa8f7d9aad32b00248c7dc782d2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d32/group__internal__tm.html#g796b45379e44e6ad2d1895ac56d80d3c">IMOC_TEST_RANK_RECV</a>(rank)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if invalid rank in a recv-operation. <a href="../../d3/d32/group__internal__tm.html#g796b45379e44e6ad2d1895ac56d80d3c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d32/group__internal__tm.html#g8026463e106a01cc8efb816d7dc1036a">IMOC_TEST_BYTECOUNT</a>(count)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if invalid byte-count in a recv-operation. <a href="../../d3/d32/group__internal__tm.html#g8026463e106a01cc8efb816d7dc1036a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d32/group__internal__tm.html#g52f61fd7f3253d10b740a9fc792052c6">IMOC_TEST_BUFFER</a>(buf)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if invalid buffer-pointer. <a href="../../d3/d32/group__internal__tm.html#g52f61fd7f3253d10b740a9fc792052c6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d32/group__internal__tm.html#g615b65fb3c3ad16711686a178ac7d1c3">IMOC_TEST_PROC_NULL</a>(rank)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if rank is MOC_PROC_NULL and returns with MOC_SUCCESS itself. <a href="../../d3/d32/group__internal__tm.html#g615b65fb3c3ad16711686a178ac7d1c3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d32/group__internal__tm.html#gf902b6e1cbe077abf0f8d02a488fec8a">IMOC_TEST_PROC_SELF</a>(proc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if rank is own rank and returns with MOC_SUCCESS itself. <a href="../../d3/d32/group__internal__tm.html#gf902b6e1cbe077abf0f8d02a488fec8a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d32/group__internal__tm.html#gc89a1f53869fe90c838a714621e20d88">IMOC_TEST_ALIGNMENT</a>(address)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if address is 16-byte aligned. <a href="../../d3/d32/group__internal__tm.html#gc89a1f53869fe90c838a714621e20d88"></a><br></td></tr>
<tr><td colspan="2"><div class="groupHeader">PPU &amp; SPU</div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/ddf/group__internal__am.html#gf02c3d971a2b5e72d22c9c16b1748c04">IMOC_EA_REMOTE_QUEUE</a>(proc)&nbsp;&nbsp;&nbsp;( (proc &gt; node_handle.rank) ? node_handle.moc_process_list[proc].inbox_queue_base+sizeof(<a class="el" href="../../df/dd4/structmoc__message__envelope__struct.html">moc_message_envelope_t</a>)*node_handle.queue_size*node_handle.rank : node_handle.moc_process_list[proc].inbox_queue_base+sizeof(<a class="el" href="../../df/dd4/structmoc__message__envelope__struct.html">moc_message_envelope_t</a>)*node_handle.queue_size*(node_handle.rank-1) )</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Effective base-address of own remote queue at node 'rank'. <a href="../../df/ddf/group__internal__am.html#gf02c3d971a2b5e72d22c9c16b1748c04"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/ddf/group__internal__am.html#gf7dce8bc9c6659f94b3431225de2e595">IMOC_LOCAL_QUEUE</a>(proc)&nbsp;&nbsp;&nbsp;( (proc &lt; node_handle.rank) ? node_handle.message_queue_base+node_handle.queue_size*(proc) : node_handle.message_queue_base+node_handle.queue_size*(proc-1) )</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Effective Base-Address of local queue responsible for node 'rank'. <a href="../../df/ddf/group__internal__am.html#gf7dce8bc9c6659f94b3431225de2e595"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/ddf/group__internal__am.html#gf9ad028ccbfa406c49a0ebd943486698">IMOC_EA_REMOTE_QUEUE_ENTRY</a>(proc, index)&nbsp;&nbsp;&nbsp;( (proc &gt; node_handle.rank) ? node_handle.moc_process_list[proc].inbox_queue_base+sizeof(<a class="el" href="../../df/dd4/structmoc__message__envelope__struct.html">moc_message_envelope_t</a>)*node_handle.queue_size*node_handle.rank+sizeof(<a class="el" href="../../df/dd4/structmoc__message__envelope__struct.html">moc_message_envelope_t</a>)*(index) : node_handle.moc_process_list[proc].inbox_queue_base+sizeof(<a class="el" href="../../df/dd4/structmoc__message__envelope__struct.html">moc_message_envelope_t</a>)*node_handle.queue_size*(node_handle.rank-1)+sizeof(<a class="el" href="../../df/dd4/structmoc__message__envelope__struct.html">moc_message_envelope_t</a>)*(index) )</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Effective base-address of own remote queue-entry at node 'rank'. <a href="../../df/ddf/group__internal__am.html#gf9ad028ccbfa406c49a0ebd943486698"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/ddf/group__internal__am.html#gff30b49c33a20273c4353dc945a8d870">IMOC_LOCAL_QUEUE_ENTRY</a>(proc, index)&nbsp;&nbsp;&nbsp;( (proc &lt; node_handle.rank) ? node_handle.message_queue_base+node_handle.queue_size*(proc)+(index) : node_handle.message_queue_base+node_handle.queue_size*(proc-1)+(index) )</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Effective Base-Address of local queue-entry responsible for node 'rank'. <a href="../../df/ddf/group__internal__am.html#gff30b49c33a20273c4353dc945a8d870"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/ddf/group__internal__am.html#g55e4226e422d3dbf1a1ee6a871c09da7">IMOC_EA_REMOTE_STATUS_ENTRY</a>(id, rank)&nbsp;&nbsp;&nbsp;( node_handle.moc_process_list[rank].stat_array_base+sizeof(<a class="el" href="../../dd/df5/structmoc__message__status__struct.html">moc_message_status_t</a>)*(id) )</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Effective Address of remote status-array entry at node 'rank'. <a href="../../df/ddf/group__internal__am.html#g55e4226e422d3dbf1a1ee6a871c09da7"></a><br></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:49:50 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
@@ -0,0 +1,7 @@
<area shape="rect" href="$d0/d3a/spu_2moc_8h.html" title="moc.h" alt="" coords="207,80,263,107">
<area shape="rect" href="$d4/dce/imoc__dma__spu_8h.html" title="internal/spu/imoc_dma_spu.h" alt="" coords="320,155,512,181">
<area shape="rect" href="$dd/d9c/moc__dma__spu_8h.html" title="moc_dma_spu.h" alt="" coords="128,155,245,181">
<area shape="rect" href="$d0/d1d/moc__datatype__spu_8h.html" title="moc_datatype_spu.h" alt="" coords="20,229,161,256">
<area shape="rect" href="$d1/d82/moc_8h.html" title="../moc.h" alt="" coords="257,229,327,256">
<area shape="rect" href="$d5/d94/moc__datatype_8h.html" title="../moc_datatype.h" alt="" coords="36,304,161,331">
<area shape="rect" href="$df/d5c/moc__error__codes_8h.html" title="moc_error_codes.h" alt="" coords="236,304,367,331">
@@ -0,0 +1 @@
46c70b32b626eac4328a4776efe9b1e8
Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

@@ -0,0 +1,55 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): src/noarch/internal/imoc_buffer_malloc.c File Reference</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>src/noarch/internal/imoc_buffer_malloc.c File Reference</h1>
<p>
<code>#include &lt;stdlib.h&gt;</code><br>
<code>#include &lt;stdio.h&gt;</code><br>
<code>#include &lt;<a class="el" href="../../d4/d9b/imoc_8h-source.html">internal/imoc.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html">internal/ppu/imoc_core_ppu.h</a>&gt;</code><br>
<p>
<div class="dynheader">
Include dependency graph for imoc_buffer_malloc.c:</div>
<div class="dynsection">
<p><center><img src="../../d3/d17/imoc__buffer__malloc_8c__incl.png" border="0" usemap="#src/noarch/internal/imoc_buffer_malloc.c_map" alt=""></center>
<map name="src/noarch/internal/imoc_buffer_malloc.c_map">
<area shape="rect" href="../../d9/db3/imoc_8h.html" title="internal/imoc.h" alt="" coords="116,229,223,256"><area shape="rect" href="../../d6/d09/imoc__core__ppu_8h.html" title="internal/ppu/imoc_core_ppu.h" alt="" coords="260,80,452,107"><area shape="rect" href="../../d1/d82/moc_8h.html" title="../moc.h" alt="" coords="363,304,432,331"><area shape="rect" href="../../d7/d3d/imoc__core_8h.html" title="imoc_core.h" alt="" coords="207,304,297,331"><area shape="rect" href="../../d5/d94/moc__datatype_8h.html" title="moc_datatype.h" alt="" coords="479,379,593,405"><area shape="rect" href="../../df/d5c/moc__error__codes_8h.html" title="moc_error_codes.h" alt="" coords="324,379,455,405"><area shape="rect" href="../../db/dae/ppu_2moc_8h.html" title="../../ppu/moc.h" alt="" coords="449,155,556,181"><area shape="rect" href="../../db/d62/moc__dma__ppu_8h.html" title="moc_dma_ppu.h" alt="" coords="444,229,561,256"><area shape="rect" href="../../d8/de2/moc__datatype__ppu_8h.html" title="moc_datatype_ppu.h" alt="" coords="515,304,656,331"></map>
</div>
<p>
<a href="../../d7/d1f/imoc__buffer__malloc_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="../../dd/dc0/structmoc__internal__buffer__node__struct.html">moc_internal_buffer_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531">__attribute__</a> ((always_inline))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">void bmalloc_print_nodes() { if (!bmalloc_first_node) printf("No nodes in list\n"); else { int z = 0; moc_internal_buffer_node_t* t; for (t = bmalloc_first_node; t != 0; t = t-&gt;next_node) { printf( "Node %i: offset %u - size %u - valid %i - mid %u\n", z, node_handle.status_array_base[ t-&gt;mid ].buffer_offset, node_handle.status_array_base[ t-&gt;mid ].message_size, node_handle.status_array_base[ t-&gt;mid ].flags.bits.buffer_used, t-&gt;mid ); z++; } } } <a href="../../d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">uint64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/dd3/group__internal__p2p__bmalloc.html#g5295b372d853993b2e6cfb6912a0ee41">IMOC_bmalloc</a> (uint32_t size, uint8_t mid)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocate buffer-space. <a href="../../d3/dd3/group__internal__p2p__bmalloc.html#g5295b372d853993b2e6cfb6912a0ee41"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="../../dd/dc0/structmoc__internal__buffer__node__struct.html">moc_internal_buffer_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/dd3/group__internal__p2p__bmalloc.html#gaf9be7d34fe367a9244d50dde82777ed">bmalloc_first_node</a> = 0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to first entry of linked-list. <a href="../../d3/dd3/group__internal__p2p__bmalloc.html#gaf9be7d34fe367a9244d50dde82777ed"></a><br></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:50:14 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
+46
View File
@@ -0,0 +1,46 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): src/noarch/communication/moc_iprobe.c File Reference</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>src/noarch/communication/moc_iprobe.c File Reference</h1>
<p>
<code>#include &lt;<a class="el" href="../../dc/dcb/spu_2moc_8h-source.html">moc.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="../../d4/d9b/imoc_8h-source.html">internal/imoc.h</a>&gt;</code><br>
<p>
<div class="dynheader">
Include dependency graph for moc_iprobe.c:</div>
<div class="dynsection">
<p><center><img src="../../dd/d47/moc__iprobe_8c__incl.png" border="0" usemap="#src/noarch/communication/moc_iprobe.c_map" alt=""></center>
<map name="src/noarch/communication/moc_iprobe.c_map">
<area shape="rect" href="../../d0/d3a/spu_2moc_8h.html" title="moc.h" alt="" coords="193,80,249,107"><area shape="rect" href="../../d9/db3/imoc_8h.html" title="internal/imoc.h" alt="" coords="348,155,455,181"><area shape="rect" href="../../dd/d9c/moc__dma__spu_8h.html" title="moc_dma_spu.h" alt="" coords="67,155,184,181"><area shape="rect" href="../../d0/d1d/moc__datatype__spu_8h.html" title="moc_datatype_spu.h" alt="" coords="72,229,213,256"><area shape="rect" href="../../d1/d82/moc_8h.html" title="../moc.h" alt="" coords="237,229,307,256"><area shape="rect" href="../../d5/d94/moc__datatype_8h.html" title="../moc_datatype.h" alt="" coords="72,304,197,331"><area shape="rect" href="../../df/d5c/moc__error__codes_8h.html" title="moc_error_codes.h" alt="" coords="272,304,403,331"><area shape="rect" href="../../d7/d3d/imoc__core_8h.html" title="imoc_core.h" alt="" coords="477,304,568,331"></map>
</div>
<p>
<a href="../../da/d3c/moc__iprobe_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d64/group__p2p__main.html#g0bc7e537cd866537357a01a12a115a84">MOC_Iprobe</a> (int source, int tag, <a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> comm, int *flag, <a class="el" href="../../dd/d7a/structMOC__Status__struct.html">MOC_Status</a> *status)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if a message is available and returns information without actually receiving the message. <a href="../../d0/d64/group__p2p__main.html#g0bc7e537cd866537357a01a12a115a84"></a><br></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:50:06 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
@@ -0,0 +1 @@
f51089f283f47befbc3ee1ff74c29a89
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

@@ -0,0 +1,31 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): include/internal/doxygen_internal_main.doxygen File Reference</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>include/internal/doxygen_internal_main.doxygen File Reference</h1>
<p>
<p>
<a href="../../d7/d98/doxygen__internal__main_8doxygen-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:49:47 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
@@ -0,0 +1,135 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): src/ppu/communication/moc_bsend_ppu.c Source File</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<h1>src/ppu/communication/moc_bsend_ppu.c</h1><a href="../../d9/d14/moc__bsend__ppu_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
<a name="l00002"></a>00002 <span class="preprocessor">#include &lt;string.h&gt;</span>
<a name="l00003"></a>00003
<a name="l00004"></a>00004 <span class="preprocessor">#include &lt;<a class="code" href="../../d0/d3a/spu_2moc_8h.html">moc.h</a>&gt;</span>
<a name="l00005"></a>00005 <span class="preprocessor">#include &lt;<a class="code" href="../../d9/db3/imoc_8h.html">internal/imoc.h</a>&gt;</span>
<a name="l00006"></a>00006 <span class="preprocessor">#include &lt;<a class="code" href="../../d8/d98/imoc__macros__ppu_8h.html">internal/ppu/imoc_macros_ppu.h</a>&gt;</span>
<a name="l00007"></a>00007 <span class="preprocessor">#include &lt;<a class="code" href="../../de/df9/imoc__dma__ppu_8h.html">internal/ppu/imoc_dma_ppu.h</a>&gt;</span>
<a name="l00008"></a>00008 <span class="preprocessor">#include &lt;<a class="code" href="../../d6/d09/imoc__core__ppu_8h.html">internal/ppu/imoc_core_ppu.h</a>&gt;</span>
<a name="l00009"></a>00009
<a name="l00010"></a><a class="code" href="../../de/d84/group__p2p__buffered.html#g307bf844e1416c7c021e4a3468209d0b">00010</a> <span class="keywordtype">int</span> <a class="code" href="../../de/d84/group__p2p__buffered.html#g307bf844e1416c7c021e4a3468209d0b" title="Performs a blocking buffered mode send operation.">MOC_Bsend</a>(<span class="keywordtype">void</span>* buf, <span class="keywordtype">int</span> count, <a class="code" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a" title="Typedef defining MOC_Datatype.">MOC_Datatype</a> datatype, <span class="keywordtype">int</span> dest, <span class="keywordtype">int</span> tag,
<a name="l00011"></a>00011 <a class="code" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767" title="Communicator-Handle.">MOC_Comm</a> comm)
<a name="l00012"></a>00012 {
<a name="l00013"></a>00013 <a class="code" href="../../df/dd4/structmoc__message__envelope__struct.html" title="Message-envelope structure.">moc_message_envelope_t</a> tempQueue[<a class="code" href="../../dd/df8/group__internal__core.html#geed5a271d50368d3cf9a858c4f57c895" title="Information each node knowns about himself and the world.">node_handle</a>.<a class="code" href="../../d8/d93/structmoc__node__handle__ppu__struct.html#ee1aa72cd99190cf97523a955cfa6141" title="Size of a message-queue.">queue_size</a>] <a class="code" href="../../d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531" title="void bmalloc_print_nodes() { if (!bmalloc_first_node) printf(&amp;quot;No nodes in list\n&amp;quot;);...">__attribute__</a>((__aligned__(16)));
<a name="l00014"></a>00014 <span class="keywordtype">int</span> err, qindex, mid, bytecount;
<a name="l00015"></a>00015 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dmastatus;
<a name="l00016"></a>00016 <span class="keywordtype">void</span>* ea_buffer;
<a name="l00017"></a>00017
<a name="l00018"></a>00018 <span class="keywordflow">if</span> (((datatype &amp; 0xF0) &gt;&gt; 4) == 0)
<a name="l00019"></a>00019 bytecount = count;
<a name="l00020"></a>00020 <span class="keywordflow">else</span>
<a name="l00021"></a>00021 bytecount = count * (((datatype &amp; 0xF0) &gt;&gt; 4) * 2);
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <a class="code" href="../../d3/d32/group__internal__tm.html#g615b65fb3c3ad16711686a178ac7d1c3" title="Tests if rank is MOC_PROC_NULL and returns with MOC_SUCCESS itself.">IMOC_TEST_PROC_NULL</a>(dest)
<a name="l00024"></a>00024 <a class="code" href="../../d3/d32/group__internal__tm.html#gf902b6e1cbe077abf0f8d02a488fec8a" title="Tests if rank is own rank and returns with MOC_SUCCESS itself.">IMOC_TEST_PROC_SELF</a>(dest)
<a name="l00025"></a>00025 <a class="code" href="../../d3/d32/group__internal__tm.html#g8026463e106a01cc8efb816d7dc1036a" title="Tests if invalid byte-count in a recv-operation.">IMOC_TEST_BYTECOUNT</a>(bytecount)
<a name="l00026"></a>00026 <span class="comment">// if there is no data, permit Null-Buffer-Pointer</span>
<a name="l00027"></a>00027 <span class="keywordflow">if</span> (bytecount != 0)
<a name="l00028"></a>00028 {
<a name="l00029"></a>00029 <a class="code" href="../../d3/d32/group__internal__tm.html#g52f61fd7f3253d10b740a9fc792052c6" title="Tests if invalid buffer-pointer.">IMOC_TEST_BUFFER</a>(buf)
<a name="l00030"></a>00030 }
<a name="l00031"></a>00031 <a class="code" href="../../d3/d32/group__internal__tm.html#g1dfddaa8f7d9aad32b00248c7dc782d2" title="Tests if invalid rank.">IMOC_TEST_RANK</a>(dest)
<a name="l00032"></a>00032 <a class="code" href="../../d3/d32/group__internal__tm.html#g49637a9f588e1c44584d8def5c45e811" title="Tests if invalid tag in a send-operation.">IMOC_TEST_TAG_SEND</a>(tag)
<a name="l00033"></a>00033 <a class="code" href="../../d3/d32/group__internal__tm.html#gfc07f5e570f47525b80a1f3e5a36b3b3" title="Tests if invalid communicator in a send-operation.">IMOC_TEST_COMM_SEND</a>(comm)
<a name="l00034"></a>00034
<a name="l00035"></a>00035 <span class="comment">/* Get queue from remote-node, choose fastest method depending on transfer-size */</span>
<a name="l00036"></a>00036 <span class="keywordflow">if</span> (<a class="code" href="../../dd/df8/group__internal__core.html#geed5a271d50368d3cf9a858c4f57c895" title="Information each node knowns about himself and the world.">node_handle</a>.<a class="code" href="../../d8/d93/structmoc__node__handle__ppu__struct.html#ee1aa72cd99190cf97523a955cfa6141" title="Size of a message-queue.">queue_size</a> * <span class="keyword">sizeof</span>(<a class="code" href="../../df/dd4/structmoc__message__envelope__struct.html" title="Message-envelope structure.">moc_message_envelope_t</a>)
<a name="l00037"></a>00037 &gt; <a class="code" href="../../d8/d88/group__internal__p2p__main.html#ge9f5f9bdfa51d7683fbe312d4a667afd" title="Defines a treshold, when to use memcpy and when to use DMA in a get-operation on...">MEMCPY_GET_TRESHOLD</a>)
<a name="l00038"></a>00038 {
<a name="l00039"></a>00039 err = spe_mfcio_put(
<a name="l00040"></a>00040 <a class="code" href="../../dc/df1/group__internal__spu__thread.html#ga5b74732b1e31ec1674ea0e5ae465c4e" title="array of SPU-Threads.">moc_spu_thread_list</a>[dest - <a class="code" href="../../dc/df1/group__internal__spu__thread.html#gf4270da4dbf663fde50a876067ed0d52" title="actual number of PPU-Threads.">moc_ppu_thread_count</a>].speid,
<a name="l00041"></a>00041 <a class="code" href="../../df/ddf/group__internal__am.html#g48013d236aaa37226bbba460eaf3aca5" title="LS-Address of own remote queue at node &amp;#39;rank&amp;#39;.">IMOC_LS_REMOTE_QUEUE</a>(dest), tempQueue, <a class="code" href="../../dd/df8/group__internal__core.html#geed5a271d50368d3cf9a858c4f57c895" title="Information each node knowns about himself and the world.">node_handle</a>.<a class="code" href="../../d8/d93/structmoc__node__handle__ppu__struct.html#ee1aa72cd99190cf97523a955cfa6141" title="Size of a message-queue.">queue_size</a>
<a name="l00042"></a>00042 * <span class="keyword">sizeof</span>(<a class="code" href="../../df/dd4/structmoc__message__envelope__struct.html" title="Message-envelope structure.">moc_message_envelope_t</a>), 15, 0, 0);
<a name="l00043"></a>00043 <span class="keywordflow">if</span> (err)
<a name="l00044"></a>00044 <span class="keywordflow">return</span> <a class="code" href="../../d8/da1/group__environment__error.html#g05b3a70831c823a59014c4853a76ca7e" title="Internal MOC (implementation) error.">MOC_ERR_INTERN</a>;
<a name="l00045"></a>00045 err = spe_mfcio_tag_status_read(<a class="code" href="../../dc/df1/group__internal__spu__thread.html#ga5b74732b1e31ec1674ea0e5ae465c4e" title="array of SPU-Threads.">moc_spu_thread_list</a>[dest
<a name="l00046"></a>00046 - <a class="code" href="../../dc/df1/group__internal__spu__thread.html#gf4270da4dbf663fde50a876067ed0d52" title="actual number of PPU-Threads.">moc_ppu_thread_count</a>].speid, 0, SPE_TAG_ALL, &amp;dmastatus);
<a name="l00047"></a>00047 <span class="keywordflow">if</span> (err)
<a name="l00048"></a>00048 <span class="keywordflow">return</span> <a class="code" href="../../d8/da1/group__environment__error.html#g05b3a70831c823a59014c4853a76ca7e" title="Internal MOC (implementation) error.">MOC_ERR_INTERN</a>;
<a name="l00049"></a>00049 }
<a name="l00050"></a>00050 <span class="keywordflow">else</span>
<a name="l00051"></a>00051 {
<a name="l00052"></a>00052 memcpy(tempQueue, (<span class="keywordtype">void</span>*) <a class="code" href="../../df/ddf/group__internal__am.html#gf02c3d971a2b5e72d22c9c16b1748c04" title="Effective base-address of own remote queue at node &amp;#39;rank&amp;#39;.">IMOC_EA_REMOTE_QUEUE</a>(dest),
<a name="l00053"></a>00053 <a class="code" href="../../dd/df8/group__internal__core.html#geed5a271d50368d3cf9a858c4f57c895" title="Information each node knowns about himself and the world.">node_handle</a>.<a class="code" href="../../d8/d93/structmoc__node__handle__ppu__struct.html#ee1aa72cd99190cf97523a955cfa6141" title="Size of a message-queue.">queue_size</a> * <span class="keyword">sizeof</span>(<a class="code" href="../../df/dd4/structmoc__message__envelope__struct.html" title="Message-envelope structure.">moc_message_envelope_t</a>));
<a name="l00054"></a>00054 }
<a name="l00055"></a>00055
<a name="l00056"></a>00056 <span class="comment">/* search free entry in message-queue */</span>
<a name="l00057"></a>00057 err = <a class="code" href="../../d8/d88/group__internal__p2p__main.html#g2a948cdecce651ae6cc1b0c0ddb1b750" title="Get next free entry in message-queue (a local copy of the message-queue has to be...">IMOC_getFreeEntry</a>(tempQueue, tag, comm, 0, &amp;qindex);
<a name="l00058"></a>00058 <span class="keywordflow">if</span> (err)
<a name="l00059"></a>00059 <span class="keywordflow">return</span> err;
<a name="l00060"></a>00060
<a name="l00061"></a>00061 <span class="comment">/* messages smaller-equal 8 bytes are stored directly into the message-envelope</span>
<a name="l00062"></a>00062 <span class="comment"> instead of the data's effective address */</span>
<a name="l00063"></a>00063 <span class="keywordflow">if</span> (bytecount &lt;= 8)
<a name="l00064"></a>00064 {
<a name="l00065"></a>00065 tempQueue[qindex].flags.bits.channel = <a class="code" href="../../dd/df8/group__internal__core.html#g1a3153033a1eaac0ddff04deac271947" title="Constant for moc_message_envelope_t.flags.channel.">IMOC_MESSAGE_CHANNEL_ENV</a>;
<a name="l00066"></a>00066 tempQueue[qindex].flags.bits.signal_back = 0;
<a name="l00067"></a>00067 tempQueue[qindex].flags.bits.in_mm = 0;
<a name="l00068"></a>00068 memcpy(&amp;tempQueue[qindex].message_address, buf, bytecount);
<a name="l00069"></a>00069 }
<a name="l00070"></a>00070 <span class="keywordflow">else</span> <span class="comment">/* normal delivery of messages */</span>
<a name="l00071"></a>00071 {
<a name="l00072"></a>00072 <a class="code" href="../../d3/d32/group__internal__tm.html#gc89a1f53869fe90c838a714621e20d88" title="Tests if address is 16-byte aligned.">IMOC_TEST_ALIGNMENT</a>(buf)
<a name="l00073"></a>00073 <span class="comment">/* search free message-ID */</span>
<a name="l00074"></a>00074 err = <a class="code" href="../../d8/d88/group__internal__p2p__main.html#g409bdbea503611cf04829413d15830df" title="Get free message-ID.">IMOC_getFreeMID</a>(&amp;mid);
<a name="l00075"></a>00075 <span class="keywordflow">if</span> (err)
<a name="l00076"></a>00076 <span class="keywordflow">return</span> err;
<a name="l00077"></a>00077
<a name="l00078"></a>00078 <span class="comment">/* search free buffer-space */</span>
<a name="l00079"></a>00079 ea_buffer = (<span class="keywordtype">void</span>*) <a class="code" href="../../d3/dd3/group__internal__p2p__bmalloc.html#g5295b372d853993b2e6cfb6912a0ee41" title="Allocate buffer-space.">IMOC_bmalloc</a>(bytecount, mid);
<a name="l00080"></a>00080 <span class="keywordflow">if</span> (!ea_buffer)
<a name="l00081"></a>00081 <span class="keywordflow">return</span> <a class="code" href="../../d8/da1/group__environment__error.html#gb3b13f443f9a869ef4200334eb8792d0" title="Insufficient Buffer-Space.">MOC_ERR_NO_BUFFER</a>;
<a name="l00082"></a>00082
<a name="l00083"></a>00083 tempQueue[qindex].flags.bits.channel = <a class="code" href="../../dd/df8/group__internal__core.html#gda23ff5baabe186f8c37c0424598c7bc" title="Constant for moc_message_envelope_t.flags.channel.">IMOC_MESSAGE_CHANNEL_DMA</a>;
<a name="l00084"></a>00084 tempQueue[qindex].flags.bits.signal_back = 1;
<a name="l00085"></a>00085 tempQueue[qindex].flags.bits.in_mm = 1;
<a name="l00086"></a>00086 tempQueue[qindex].message_address = (uint64_t) ea_buffer;
<a name="l00087"></a>00087 <span class="comment">/* copy data into buffer */</span>
<a name="l00088"></a>00088 memcpy(ea_buffer, buf, bytecount);
<a name="l00089"></a>00089
<a name="l00090"></a>00090 <span class="comment">/* fill message-status-entry */</span>
<a name="l00091"></a>00091 <a class="code" href="../../dd/df8/group__internal__core.html#geed5a271d50368d3cf9a858c4f57c895" title="Information each node knowns about himself and the world.">node_handle</a>.<a class="code" href="../../d8/d93/structmoc__node__handle__ppu__struct.html#abccbc7beefa7b1e2ccc84b8bd2b8805" title="base-address of own message-status-array">status_array_base</a>[mid].<a class="code" href="../../dd/df5/structmoc__message__status__struct.html#086c0d449d25774d43512b6f7fdab8ed" title="flag-union">flags</a>.<a class="code" href="../../dd/df5/structmoc__message__status__struct.html#c0bdc214525521d58f12c72874de0512" title="flag-struct">bits</a>.valid = 1;
<a name="l00092"></a>00092 <a class="code" href="../../dd/df8/group__internal__core.html#geed5a271d50368d3cf9a858c4f57c895" title="Information each node knowns about himself and the world.">node_handle</a>.<a class="code" href="../../d8/d93/structmoc__node__handle__ppu__struct.html#abccbc7beefa7b1e2ccc84b8bd2b8805" title="base-address of own message-status-array">status_array_base</a>[mid].<a class="code" href="../../dd/df5/structmoc__message__status__struct.html#086c0d449d25774d43512b6f7fdab8ed" title="flag-union">flags</a>.<a class="code" href="../../dd/df5/structmoc__message__status__struct.html#c0bdc214525521d58f12c72874de0512" title="flag-struct">bits</a>.outstanding = 1;
<a name="l00093"></a>00093 }
<a name="l00094"></a>00094
<a name="l00095"></a>00095 <span class="comment">/* fill missing message-envelope-entries */</span>
<a name="l00096"></a>00096 tempQueue[qindex].communicator = comm;
<a name="l00097"></a>00097 tempQueue[qindex].datatype = datatype;
<a name="l00098"></a>00098 tempQueue[qindex].id = mid;
<a name="l00099"></a>00099 tempQueue[qindex].size = bytecount;
<a name="l00100"></a>00100 tempQueue[qindex].tag = tag;
<a name="l00101"></a>00101 tempQueue[qindex].flags.bits.collaborative = 0;
<a name="l00102"></a>00102 tempQueue[qindex].flags.bits.special = 0;
<a name="l00103"></a>00103 tempQueue[qindex].flags.bits.valid = 1;
<a name="l00104"></a>00104 tempQueue[qindex].flags.bits.keep_valid = 0;
<a name="l00105"></a>00105
<a name="l00106"></a>00106 <span class="comment">/* write message-envelope into queue, because transfer-size is always 16-byte,</span>
<a name="l00107"></a>00107 <span class="comment"> * memcpy is fastest method */</span>
<a name="l00108"></a>00108 memcpy((<span class="keywordtype">void</span>*) <a class="code" href="../../df/ddf/group__internal__am.html#gf9ad028ccbfa406c49a0ebd943486698" title="Effective base-address of own remote queue-entry at node &amp;#39;rank&amp;#39;.">IMOC_EA_REMOTE_QUEUE_ENTRY</a>(dest, qindex),
<a name="l00109"></a>00109 &amp;tempQueue[qindex], <span class="keyword">sizeof</span>(<a class="code" href="../../df/dd4/structmoc__message__envelope__struct.html" title="Message-envelope structure.">moc_message_envelope_t</a>));
<a name="l00110"></a>00110
<a name="l00111"></a>00111 <span class="keywordflow">return</span> 0;
<a name="l00112"></a>00112 }
<a name="l00113"></a>00113
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:49:47 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
@@ -0,0 +1,8 @@
<area shape="rect" href="$d6/d09/imoc__core__ppu_8h.html" title="internal/ppu/imoc_core_ppu.h" alt="" coords="331,80,523,107">
<area shape="rect" href="$d7/d3d/imoc__core_8h.html" title="../imoc_core.h" alt="" coords="464,229,568,256">
<area shape="rect" href="$db/dae/ppu_2moc_8h.html" title="../../ppu/moc.h" alt="" coords="179,155,285,181">
<area shape="rect" href="$db/d62/moc__dma__ppu_8h.html" title="moc_dma_ppu.h" alt="" coords="125,229,243,256">
<area shape="rect" href="$d1/d82/moc_8h.html" title="../moc.h" alt="" coords="77,304,147,331">
<area shape="rect" href="$d8/de2/moc__datatype__ppu_8h.html" title="moc_datatype_ppu.h" alt="" coords="247,304,388,331">
<area shape="rect" href="$d5/d94/moc__datatype_8h.html" title="moc_datatype.h" alt="" coords="201,379,316,405">
<area shape="rect" href="$df/d5c/moc__error__codes_8h.html" title="moc_error_codes.h" alt="" coords="47,379,177,405">
@@ -0,0 +1 @@
3928aac285d2019a7aec6dbf2e6577ef
Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

@@ -0,0 +1,8 @@
<area shape="rect" href="$d0/d3a/spu_2moc_8h.html" title="moc.h" alt="" coords="208,80,264,107">
<area shape="rect" href="$dd/d9c/moc__dma__spu_8h.html" title="moc_dma_spu.h" alt="" coords="257,155,375,181">
<area shape="rect" href="$d2/d42/imoc__macros_8h.html" title="internal/imoc_macros.h" alt="" coords="389,80,544,107">
<area shape="rect" href="$d4/dce/imoc__dma__spu_8h.html" title="internal/spu/imoc_dma_spu.h" alt="" coords="399,155,591,181">
<area shape="rect" href="$d0/d1d/moc__datatype__spu_8h.html" title="moc_datatype_spu.h" alt="" coords="107,229,248,256">
<area shape="rect" href="$d1/d82/moc_8h.html" title="../moc.h" alt="" coords="277,229,347,256">
<area shape="rect" href="$d5/d94/moc__datatype_8h.html" title="../moc_datatype.h" alt="" coords="107,304,232,331">
<area shape="rect" href="$df/d5c/moc__error__codes_8h.html" title="moc_error_codes.h" alt="" coords="307,304,437,331">
@@ -0,0 +1 @@
ac18b4e2b5f0c318b6492f2f9c126647
Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

@@ -0,0 +1,37 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): src/noarch/internal/communication/imoc_wait_message.c Source File</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<h1>src/noarch/internal/communication/imoc_wait_message.c</h1><a href="../../da/d91/imoc__wait__message_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include &lt;<a class="code" href="../../d0/d3a/spu_2moc_8h.html">moc.h</a>&gt;</span>
<a name="l00002"></a>00002 <span class="preprocessor">#include &lt;<a class="code" href="../../d9/db3/imoc_8h.html">internal/imoc.h</a>&gt;</span>
<a name="l00003"></a>00003 <span class="preprocessor">#ifdef __SPU__</span>
<a name="l00004"></a>00004 <span class="preprocessor"></span><span class="preprocessor">#include &lt;<a class="code" href="../../d9/d00/imoc__core__spu_8h.html">internal/spu/imoc_core_spu.h</a>&gt;</span>
<a name="l00005"></a>00005 <span class="preprocessor">#else</span>
<a name="l00006"></a>00006 <span class="preprocessor"></span><span class="preprocessor">#include &lt;<a class="code" href="../../d6/d09/imoc__core__ppu_8h.html">internal/ppu/imoc_core_ppu.h</a>&gt;</span>
<a name="l00007"></a>00007 <span class="preprocessor">#endif</span>
<a name="l00008"></a>00008 <span class="preprocessor"></span>
<a name="l00009"></a><a class="code" href="../../d8/d88/group__internal__p2p__main.html#g8675f9552168f2dd8926cad5ac00be69">00009</a> <span class="keywordtype">int</span> <a class="code" href="../../d8/d88/group__internal__p2p__main.html#g8675f9552168f2dd8926cad5ac00be69" title="Wait till message with message-ID mid has been received.">IMOC_waitForMessageCompletion</a>(uint8_t mid)
<a name="l00010"></a>00010 {
<a name="l00011"></a>00011 <span class="keywordflow">while</span> (<a class="code" href="../../dd/df8/group__internal__core.html#geed5a271d50368d3cf9a858c4f57c895" title="Information each node knowns about himself and the world.">node_handle</a>.<a class="code" href="../../d8/d93/structmoc__node__handle__ppu__struct.html#abccbc7beefa7b1e2ccc84b8bd2b8805" title="base-address of own message-status-array">status_array_base</a>[mid].<a class="code" href="../../dd/df5/structmoc__message__status__struct.html#086c0d449d25774d43512b6f7fdab8ed" title="flag-union">flags</a>.<a class="code" href="../../dd/df5/structmoc__message__status__struct.html#c0bdc214525521d58f12c72874de0512" title="flag-struct">bits</a>.outstanding)
<a name="l00012"></a>00012 ;
<a name="l00013"></a>00013 <span class="keywordflow">return</span> 0;
<a name="l00014"></a>00014 }
<a name="l00015"></a>00015
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:49:47 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
@@ -0,0 +1,53 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): Buffered Communication</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Buffered Communication<br>
<small>
[<a class="el" href="../../de/db4/group__internal__p2p__blocking.html">Blocking Communication</a>]</small>
</h1>
<p>
<div class="dynheader">
Collaboration diagram for Buffered Communication:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d2/dd7/group__internal__p2p__buffered.png" border="0" alt="" usemap="#d4/df5/d2_2dd7_2group____internal____p2p____buffered_map">
<map name="d4/df5/d2_2dd7_2group____internal____p2p____buffered_map">
<area shape="rect" href="../../d3/dd3/group__internal__p2p__bmalloc.html" title="This section shows how the buffer used for buffered communication is managed." alt="" coords="429,5,563,32"><area shape="rect" href="../../de/db4/group__internal__p2p__blocking.html" title="Internals about blocking Point&#45;to&#45;Point Communication." alt="" coords="5,5,171,32"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Internals about blocking buffered Communication.
<p>
<div align="center">
<img src="../../buffered_communication_1.png" alt="buffered_communication_1.png">
</div>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Modules</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/dd3/group__internal__p2p__bmalloc.html">Buffer-Management</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This section shows how the buffer used for buffered communication is managed. <br></td></tr>
<p>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:51:15 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -0,0 +1 @@
2201fd6f50ef698b71684029e28a36fe
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

@@ -0,0 +1,833 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): DMA-Helper Functions</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>DMA-Helper Functions<br>
<small>
[<a class="el" href="../../d8/d88/group__internal__p2p__main.html">Point-to-Point Communication</a>]</small>
</h1>
<p>
<div class="dynheader">
Collaboration diagram for DMA-Helper Functions:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d2/de2/group__internal__p2p__dma.png" border="0" alt="" usemap="#d0/d32/d2_2de2_2group____internal____p2p____dma_map">
<map name="d0/d32/d2_2de2_2group____internal____p2p____dma_map">
<area shape="rect" href="../../d8/d88/group__internal__p2p__main.html" title="Internals about Point&#45;to&#45;Point Communication." alt="" coords="5,5,200,32"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Functions wrapping DMA-Transfers.
<p>
The Cell Broadband Engine uses Direct Memory Access (DMA) for communication. Therefore data of a MOC-message is transfered using DMA operations. Because programming DMA is rather complex, some functions are provided to hide this complexity. One DMA-call can only tranfer a maximum of 16KByte of data and the data-size has to be a multiple of 16 byte. The provided functions split the data into multiple DMA-calls if needed. If the data-size requires it, an intermediate buffer is used into which a separate DMA-Call transfers 16 byte containing the piece of data not fitting into the 16-byte scheme. Then only the needed bytes are copied into the receive-buffer. But the latter only works for a get-operation.<p>
The internal DMA-functions are also made publicly available via wrapping-function (see chapter <a class="el" href="../../d9/d16/group__dma__access.html">Direct Memory Access</a>) which provide parameter checks.
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>PPU-only</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de2/group__internal__p2p__dma.html#g53d36c567e4c98e5d258a7857096e7ab">IMOC_get_data</a> (void *target, uint64_t source, uint32_t size, int dest)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal wrapper-function for a blocking DMA-get operation. <a href="#g53d36c567e4c98e5d258a7857096e7ab"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de2/group__internal__p2p__dma.html#gb48c58191a7cf4d3e502d1c7a6c0ab9c">IMOC_put_data</a> (void *source, uint64_t target, uint32_t size, int dest)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal wrapper-function for a blocking DMA-put operation. <a href="#gb48c58191a7cf4d3e502d1c7a6c0ab9c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de2/group__internal__p2p__dma.html#g0c76eeaa08ac299e19dc2758d4142cd9">IMOC_iget_data</a> (void *target, uint64_t source, uint32_t size, uint32_t dest, <a class="el" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a> *request)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal wrapper-function for a non-blocking DMA-get operation. <a href="#g0c76eeaa08ac299e19dc2758d4142cd9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de2/group__internal__p2p__dma.html#gc181bb2e3eb058990534c71355af3443">IMOC_iput_data</a> (void *source, uint64_t target, uint32_t size, uint32_t dest, <a class="el" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a> *request)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal wrapper-function for a non-blocking DMA-put operation. <a href="#gc181bb2e3eb058990534c71355af3443"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de2/group__internal__p2p__dma.html#g57b89667357146b299f32bd114e0e5ad">IMOC_wait_dma</a> (<a class="el" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a> *request)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Waits till a IMOC_iget_data or IMOC_iput_data is completed. <a href="#g57b89667357146b299f32bd114e0e5ad"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de2/group__internal__p2p__dma.html#gdc3d91a083a9dc3aa539aee4d56616f0">IMOC_test_dma</a> (<a class="el" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a> *request, int *flag)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if a IMOC_iget_data or IMOC_iput_data is completed. <a href="#gdc3d91a083a9dc3aa539aee4d56616f0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de2/group__internal__p2p__dma.html#g29d3bf9879af70f97d63e774a5aa4d33">moc_tag_reserve</a> (unsigned int speid)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reserves a tag on the ppu, for communication with a given spu. <a href="#g29d3bf9879af70f97d63e774a5aa4d33"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de2/group__internal__p2p__dma.html#gf465203c58c5a8066a7ef3ee91b15cec">moc_tag_release</a> (unsigned int speid, int tag)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Releases a reserved tag. <a href="#gf465203c58c5a8066a7ef3ee91b15cec"></a><br></td></tr>
<tr><td colspan="2"><br><h2>SPU-only</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de2/group__internal__p2p__dma.html#g026790f4f64135c54c4e61c08925344c">IMOC_get_data</a> (void *target, uint64_t source, uint32_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal wrapper-function for a blocking DMA-get operation. <a href="#g026790f4f64135c54c4e61c08925344c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de2/group__internal__p2p__dma.html#gbcda581536f49d62ee307da5cddc150e">IMOC_put_data</a> (void *source, uint64_t target, uint32_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal wrapper-function for a blocking DMA-put operation. <a href="#gbcda581536f49d62ee307da5cddc150e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de2/group__internal__p2p__dma.html#g928d605bbb172de96e44517820b59278">IMOC_iget_data</a> (void *target, uint64_t source, uint32_t size, <a class="el" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a> *request)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal wrapper-function for a non-blocking DMA-get operation. <a href="#g928d605bbb172de96e44517820b59278"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de2/group__internal__p2p__dma.html#ga362f58242dfec61a0a9efb4f3c7ffcb">IMOC_iput_data</a> (void *source, uint64_t target, uint32_t size, <a class="el" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a> *request)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal wrapper-function for a blocking DMA-put operation. <a href="#ga362f58242dfec61a0a9efb4f3c7ffcb"></a><br></td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g026790f4f64135c54c4e61c08925344c"></a><!-- doxytag: member="imoc_dma_spu.h::IMOC_get_data" ref="g026790f4f64135c54c4e61c08925344c" args="(void *target, uint64_t source, uint32_t size)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int IMOC_get_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>size</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Internal wrapper-function for a blocking DMA-get operation.
<p>
Data can be of any size, constraints of low-level DMA-functions are dealt by this function. However data-addresses have to be at least 16-byte aligned.<p>
This function actually always reads a multiple of 16 from the source, but copies only size bytes of it to target. This means however that up to 15 bytes are read from an invalid location. As it is never written to them this should always be safe.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td><b>in</b> ls-address of buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> ea-address of data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td><b>in</b> size of data in byte </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
<p>Definition at line <a class="el" href="../../dc/d78/imoc__dma-get__spu_8c-source.html#l00008">8</a> of file <a class="el" href="../../dc/d78/imoc__dma-get__spu_8c-source.html">imoc_dma-get_spu.c</a>.</p>
<p>References <a class="el" href="../../d7/de1/moc_8h-source.html#l00033">MAX_DMA_CALL_SIZE</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, and <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00030">MOC_SUCCESS</a>.</p>
</div>
</div><p>
<a class="anchor" name="g53d36c567e4c98e5d258a7857096e7ab"></a><!-- doxytag: member="imoc_dma_ppu.h::IMOC_get_data" ref="g53d36c567e4c98e5d258a7857096e7ab" args="(void *target, uint64_t source, uint32_t size, int dest)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int IMOC_get_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>dest</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Internal wrapper-function for a blocking DMA-get operation.
<p>
Data can be of any size, constraints of low-level DMA-functions are dealt by this function. However data-addresses have to be at least 16-byte aligned.<p>
This function actually always reads a multiple of 16 from the source, but copies only size bytes of it to target. This means however that up to 15 bytes are read from an invalid location. As it is never written to them this should always be safe.<p>
On the ppu the system for tag reservation is not present, so a hardcoded tag is used. It has also to be noted that the dma calls are actually initiated on the spu by the ppu.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td><b>in</b> local-address of buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> ea-address of data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td><b>in</b> size of data in byte </td></tr>
<tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td><b>in</b> id of source spe </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
<p>Definition at line <a class="el" href="../../d7/df2/imoc__dma-get__ppu_8c-source.html#l00009">9</a> of file <a class="el" href="../../d7/df2/imoc__dma-get__ppu_8c-source.html">imoc_dma-get_ppu.c</a>.</p>
<p>References <a class="el" href="../../d7/d1f/imoc__buffer__malloc_8c-source.html#l00056">__attribute__()</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00033">MAX_DMA_CALL_SIZE</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00106">moc_ppu_thread_count</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00123">moc_spu_thread_list</a>, and <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00030">MOC_SUCCESS</a>.</p>
<p>Referenced by <a class="el" href="../../dd/d90/moc__dma-get__ppu_8c-source.html#l00009">MOC_Get_data()</a>, and <a class="el" href="../../d8/dbc/moc__recv__ppu_8c-source.html#l00011">MOC_Recv()</a>.</p>
<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_g53d36c567e4c98e5d258a7857096e7ab_cgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_g53d36c567e4c98e5d258a7857096e7ab_cgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_g53d36c567e4c98e5d258a7857096e7ab_cgraph_map">
<area shape="rect" href="../../d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531" title="void bmalloc_print_nodes() { if (!bmalloc_first_node) printf(&quot;No nodes in list\\n&quot;);..." alt="" coords="165,5,261,32"></map>
</div>
<p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_g53d36c567e4c98e5d258a7857096e7ab_icgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_g53d36c567e4c98e5d258a7857096e7ab_icgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_g53d36c567e4c98e5d258a7857096e7ab_icgraph_map">
<area shape="rect" href="../../d9/d16/group__dma__access.html#g3716465d42f20379bbf65002ecd9e448" title="Wrapper&#45;function for a blocking DMA&#45;get operation." alt="" coords="165,5,277,32"><area shape="rect" href="../../d0/d64/group__p2p__main.html#g30c532510cffd36acd1b9b0b3edb3832" title="Performs a blocking standard mode receive operation." alt="" coords="179,56,264,83"></map>
</div>
</div>
</div><p>
<a class="anchor" name="g928d605bbb172de96e44517820b59278"></a><!-- doxytag: member="imoc_dma_spu.h::IMOC_iget_data" ref="g928d605bbb172de96e44517820b59278" args="(void *target, uint64_t source, uint32_t size, imoc_dma_request *request)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int IMOC_iget_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a> *&nbsp;</td>
<td class="paramname"> <em>request</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Internal wrapper-function for a non-blocking DMA-get operation.
<p>
Data can be of any size, constraints of low-level DMA-functions are dealt by this function. However data-addresses have to be at least 16-byte aligned.<p>
This function actually always reads a multiple of 16 from the source, but copies only size bytes of it to target. This means however that up to 15 bytes are read from an invalid location. As it is never written to them this should always be safe.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td><b>in</b> ls-address of buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> ea-address of data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td><b>in</b> size of data in byte </td></tr>
<tr><td valign="top"></td><td valign="top"><em>request</em>&nbsp;</td><td><b>out</b> request-handle </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
<p>Definition at line <a class="el" href="../../d4/db3/imoc__dma-iget__spu_8c-source.html#l00010">10</a> of file <a class="el" href="../../d4/db3/imoc__dma-iget__spu_8c-source.html">imoc_dma-iget_spu.c</a>.</p>
<p>References <a class="el" href="../../d7/de1/moc_8h-source.html#l00061">imoc_dma_request_struct::buffer</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00033">MAX_DMA_CALL_SIZE</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00030">MOC_SUCCESS</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00064">imoc_dma_request_struct::remainder</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00063">imoc_dma_request_struct::size</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00066">imoc_dma_request_struct::tag_id</a>, and <a class="el" href="../../d7/de1/moc_8h-source.html#l00062">imoc_dma_request_struct::target</a>.</p>
</div>
</div><p>
<a class="anchor" name="g0c76eeaa08ac299e19dc2758d4142cd9"></a><!-- doxytag: member="imoc_dma_ppu.h::IMOC_iget_data" ref="g0c76eeaa08ac299e19dc2758d4142cd9" args="(void *target, uint64_t source, uint32_t size, uint32_t dest, imoc_dma_request *request)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int IMOC_iget_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a> *&nbsp;</td>
<td class="paramname"> <em>request</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Internal wrapper-function for a non-blocking DMA-get operation.
<p>
Data can be of any size, constraints of low-level DMA-functions are dealt by this function. However data-addresses have to be at least 16-byte aligned.<p>
This function actually always reads a multiple of 16 from the source, but copies only size bytes of it to target. This means however that up to 15 bytes are read from an invalid location. As it is never written to them this should always be safe.<p>
On the ppu the system for tag reservation is not present, so a hardcoded tag is used. It has also to be noted that the dma calls are actually initiated on the spu by the ppu.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td><b>in</b> local-address of buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> ea-address of data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td><b>in</b> size of data in byte </td></tr>
<tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td><b>in</b> id of source spe </td></tr>
<tr><td valign="top"></td><td valign="top"><em>request</em>&nbsp;</td><td><b>out</b> request-handle </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
<p>Definition at line <a class="el" href="../../d6/df6/imoc__dma-iget__ppu_8c-source.html#l00010">10</a> of file <a class="el" href="../../d6/df6/imoc__dma-iget__ppu_8c-source.html">imoc_dma-iget_ppu.c</a>.</p>
<p>References <a class="el" href="../../d7/de1/moc_8h-source.html#l00061">imoc_dma_request_struct::buffer</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00065">imoc_dma_request_struct::dest</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00033">MAX_DMA_CALL_SIZE</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00106">moc_ppu_thread_count</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00123">moc_spu_thread_list</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00030">MOC_SUCCESS</a>, <a class="el" href="../../d0/d43/imoc__dma-tags__ppu_8c-source.html#l00014">moc_tag_reserve()</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00064">imoc_dma_request_struct::remainder</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00063">imoc_dma_request_struct::size</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00066">imoc_dma_request_struct::tag_id</a>, and <a class="el" href="../../d7/de1/moc_8h-source.html#l00062">imoc_dma_request_struct::target</a>.</p>
<p>Referenced by <a class="el" href="../../d8/da3/moc__dma-iget__ppu_8c-source.html#l00011">MOC_IGet_data()</a>.</p>
<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_g0c76eeaa08ac299e19dc2758d4142cd9_cgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_g0c76eeaa08ac299e19dc2758d4142cd9_cgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_g0c76eeaa08ac299e19dc2758d4142cd9_cgraph_map">
<area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#g29d3bf9879af70f97d63e774a5aa4d33" title="Reserves a tag on the ppu, for communication with a given spu." alt="" coords="168,5,288,32"></map>
</div>
<p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_g0c76eeaa08ac299e19dc2758d4142cd9_icgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_g0c76eeaa08ac299e19dc2758d4142cd9_icgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_g0c76eeaa08ac299e19dc2758d4142cd9_icgraph_map">
<area shape="rect" href="../../d9/d16/group__dma__access.html#g08f0af30f2e0e6840ec2be5ca93fd14f" title="Wrapper&#45;function for a non&#45;blocking DMA&#45;get operation." alt="" coords="168,5,283,32"></map>
</div>
</div>
</div><p>
<a class="anchor" name="ga362f58242dfec61a0a9efb4f3c7ffcb"></a><!-- doxytag: member="imoc_dma_spu.h::IMOC_iput_data" ref="ga362f58242dfec61a0a9efb4f3c7ffcb" args="(void *source, uint64_t target, uint32_t size, imoc_dma_request *request)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int IMOC_iput_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&nbsp;</td>
<td class="paramname"> <em>target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a> *&nbsp;</td>
<td class="paramname"> <em>request</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Internal wrapper-function for a blocking DMA-put operation.
<p>
Data-size should be a multiple of 16 because of low-level constraints, but there is no upper limit of transfer-size. Data-addresses have to be at least 16-byte aligned.<p>
This function actually always reads a multiple of 16 from the source, and copies it to target. This means however that up to 15 bytes are written to and invalid location, so if one wants to use it with invalid sizes precautions have to be taken in order to make it safe.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> ls-address of data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td><b>in</b> ea-address of buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td><b>in</b> size of data in byte </td></tr>
<tr><td valign="top"></td><td valign="top"><em>request</em>&nbsp;</td><td><b>out</b> request-handle </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
<p>Definition at line <a class="el" href="../../d0/d4d/imoc__dma-iput__spu_8c-source.html#l00010">10</a> of file <a class="el" href="../../d0/d4d/imoc__dma-iput__spu_8c-source.html">imoc_dma-iput_spu.c</a>.</p>
<p>References <a class="el" href="../../d7/de1/moc_8h-source.html#l00033">MAX_DMA_CALL_SIZE</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00030">MOC_SUCCESS</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00064">imoc_dma_request_struct::remainder</a>, and <a class="el" href="../../d7/de1/moc_8h-source.html#l00066">imoc_dma_request_struct::tag_id</a>.</p>
</div>
</div><p>
<a class="anchor" name="gc181bb2e3eb058990534c71355af3443"></a><!-- doxytag: member="imoc_dma_ppu.h::IMOC_iput_data" ref="gc181bb2e3eb058990534c71355af3443" args="(void *source, uint64_t target, uint32_t size, uint32_t dest, imoc_dma_request *request)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int IMOC_iput_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&nbsp;</td>
<td class="paramname"> <em>target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a> *&nbsp;</td>
<td class="paramname"> <em>request</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Internal wrapper-function for a non-blocking DMA-put operation.
<p>
Data-size should be a multiple of 16 because of low-level constraints, but there is no upper limit of transfer-size. Data-addresses have to be at least 16-byte aligned.<p>
This function actually always reads a multiple of 16 from the source, and copies it to target. This means however that up to 15 bytes are written to and invalid location, so if one wants to use it with invalid sizes precautions have to be taken in order to make it safe.<p>
On the ppu the system for tag reservation is not present, so a hardcoded tag is used. It has also to be noted that the dma calls are actually initiated on the spu by the ppu.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> local-address of data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td><b>in</b> ea-address of buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td><b>in</b> size of data in byte </td></tr>
<tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td><b>in</b> id of source spe </td></tr>
<tr><td valign="top"></td><td valign="top"><em>request</em>&nbsp;</td><td><b>out</b> request-handle </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
<p>Definition at line <a class="el" href="../../dd/d07/imoc__dma-iput__ppu_8c-source.html#l00019">19</a> of file <a class="el" href="../../dd/d07/imoc__dma-iput__ppu_8c-source.html">imoc_dma-iput_ppu.c</a>.</p>
<p>References <a class="el" href="../../d7/de1/moc_8h-source.html#l00065">imoc_dma_request_struct::dest</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00033">MAX_DMA_CALL_SIZE</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00106">moc_ppu_thread_count</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00123">moc_spu_thread_list</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00030">MOC_SUCCESS</a>, <a class="el" href="../../d0/d43/imoc__dma-tags__ppu_8c-source.html#l00014">moc_tag_reserve()</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00064">imoc_dma_request_struct::remainder</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00063">imoc_dma_request_struct::size</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00066">imoc_dma_request_struct::tag_id</a>, and <a class="el" href="../../d7/de1/moc_8h-source.html#l00062">imoc_dma_request_struct::target</a>.</p>
<p>Referenced by <a class="el" href="../../dd/dd5/moc__dma-iput__ppu_8c-source.html#l00011">MOC_IPut_data()</a>.</p>
<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_gc181bb2e3eb058990534c71355af3443_cgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_gc181bb2e3eb058990534c71355af3443_cgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_gc181bb2e3eb058990534c71355af3443_cgraph_map">
<area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#g29d3bf9879af70f97d63e774a5aa4d33" title="Reserves a tag on the ppu, for communication with a given spu." alt="" coords="168,5,288,32"></map>
</div>
<p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_gc181bb2e3eb058990534c71355af3443_icgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_gc181bb2e3eb058990534c71355af3443_icgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_gc181bb2e3eb058990534c71355af3443_icgraph_map">
<area shape="rect" href="../../d9/d16/group__dma__access.html#g1fd9a141352dd4344e20f1bde778d265" title="Wrapper&#45;function for a non&#45;blocking DMA&#45;put operation." alt="" coords="169,5,281,32"></map>
</div>
</div>
</div><p>
<a class="anchor" name="gbcda581536f49d62ee307da5cddc150e"></a><!-- doxytag: member="imoc_dma_spu.h::IMOC_put_data" ref="gbcda581536f49d62ee307da5cddc150e" args="(void *source, uint64_t target, uint32_t size)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int IMOC_put_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&nbsp;</td>
<td class="paramname"> <em>target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>size</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Internal wrapper-function for a blocking DMA-put operation.
<p>
Data-size should be a multiple of 16 because of low-level constraints, but there is no upper limit of transfer-size. Data-addresses have to be at least 16-byte aligned.<p>
This function actually always reads a multiple of 16 from the source, and copies it to target. This means however that up to 15 bytes are written to and invalid location, so if one wants to use it with invalid sizes precautions have to be taken in order to make it safe.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> ls-address of data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td><b>in</b> ea-address of buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td><b>in</b> size of data in byte </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
<p>Definition at line <a class="el" href="../../d9/d44/imoc__dma-put__spu_8c-source.html#l00008">8</a> of file <a class="el" href="../../d9/d44/imoc__dma-put__spu_8c-source.html">imoc_dma-put_spu.c</a>.</p>
<p>References <a class="el" href="../../d7/de1/moc_8h-source.html#l00033">MAX_DMA_CALL_SIZE</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, and <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00030">MOC_SUCCESS</a>.</p>
</div>
</div><p>
<a class="anchor" name="gb48c58191a7cf4d3e502d1c7a6c0ab9c"></a><!-- doxytag: member="imoc_dma_ppu.h::IMOC_put_data" ref="gb48c58191a7cf4d3e502d1c7a6c0ab9c" args="(void *source, uint64_t target, uint32_t size, int dest)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int IMOC_put_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&nbsp;</td>
<td class="paramname"> <em>target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>dest</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Internal wrapper-function for a blocking DMA-put operation.
<p>
Data-size should be a multiple of 16 because of low-level constraints, but there is no upper limit of transfer-size. Data-addresses have to be at least 16-byte aligned.<p>
This function actually always reads a multiple of 16 from the source, and copies it to target. This means however that up to 15 bytes are written to and invalid location, so if one wants to use it with invalid sizes precautions have to be taken in order to make it safe.<p>
On the ppu the system for tag reservation is not present, so a hardcoded tag is used. It has also to be noted that the dma calls are actually initiated on the spu by the ppu.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> local-address of data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td><b>in</b> ea-address of buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td><b>in</b> size of data in byte </td></tr>
<tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td><b>in</b> id of source spe </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
<p>Definition at line <a class="el" href="../../db/db1/imoc__dma-put__ppu_8c-source.html#l00009">9</a> of file <a class="el" href="../../db/db1/imoc__dma-put__ppu_8c-source.html">imoc_dma-put_ppu.c</a>.</p>
<p>References <a class="el" href="../../d7/de1/moc_8h-source.html#l00033">MAX_DMA_CALL_SIZE</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00106">moc_ppu_thread_count</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00123">moc_spu_thread_list</a>, and <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00030">MOC_SUCCESS</a>.</p>
<p>Referenced by <a class="el" href="../../d9/d63/moc__bsend__spu_8c-source.html#l00011">MOC_Bsend()</a>, and <a class="el" href="../../da/d4a/moc__dma-put__ppu_8c-source.html#l00009">MOC_Put_data()</a>.</p>
<p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_gb48c58191a7cf4d3e502d1c7a6c0ab9c_icgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_gb48c58191a7cf4d3e502d1c7a6c0ab9c_icgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_gb48c58191a7cf4d3e502d1c7a6c0ab9c_icgraph_map">
<area shape="rect" href="../../de/d84/group__p2p__buffered.html#g307bf844e1416c7c021e4a3468209d0b" title="Performs a blocking buffered mode send operation." alt="" coords="173,31,269,57"><area shape="rect" href="../../d9/d16/group__dma__access.html#ge07f4b35da50be472772f9d3a426669e" title="Wrapper&#45;function for a blocking DMA&#45;put operation." alt="" coords="167,81,276,108"><area shape="rect" href="../../d7/d62/group__p2p__imm.html#gd88773e68570adfad9f99159c69502af" title="Performs a non&#45;blocking standard mode send operation." alt="" coords="327,5,417,32"><area shape="rect" href="../../d0/d64/group__p2p__main.html#g23e0afbe55bc4c86cb738c3361623a4c" title="Performs a blocking standard mode send operation." alt="" coords="328,56,416,83"><area shape="rect" href="../../db/dc2/group__broadcast.html#gfd25e9a19a1ad4032fdf3703531167d6" title="Broadcasts a message from the process with rank &quot;root&quot; to all other processes..." alt="" coords="501,5,592,32"><area shape="rect" href="../../d2/ded/group__p2p__sendrecv.html#g70885aadac98497e169267e74abee516" title="Execute a blocking send and receive operation." alt="" coords="491,56,603,83"><area shape="rect" href="../../d2/ded/group__p2p__sendrecv.html#g1e5b32eaefd61f863f89778dcbbb70a2" title="Execute a blocking send and receive." alt="" coords="467,107,627,133"></map>
</div>
</div>
</div><p>
<a class="anchor" name="gdc3d91a083a9dc3aa539aee4d56616f0"></a><!-- doxytag: member="imoc_dma_ppu.h::IMOC_test_dma" ref="gdc3d91a083a9dc3aa539aee4d56616f0" args="(imoc_dma_request *request, int *flag)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int IMOC_test_dma </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a> *&nbsp;</td>
<td class="paramname"> <em>request</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&nbsp;</td>
<td class="paramname"> <em>flag</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Tests if a IMOC_iget_data or IMOC_iput_data is completed.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>request</em>&nbsp;</td><td><b>in</b> request-handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>flag</em>&nbsp;</td><td><b>out</b> true if operation is completed </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
<p>Definition at line <a class="el" href="../../d2/df9/imoc__dma-test__ppu_8c-source.html#l00009">9</a> of file <a class="el" href="../../d2/df9/imoc__dma-test__ppu_8c-source.html">imoc_dma-test_ppu.c</a>.</p>
<p>References <a class="el" href="../../d7/de1/moc_8h-source.html#l00061">imoc_dma_request_struct::buffer</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00065">imoc_dma_request_struct::dest</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00106">moc_ppu_thread_count</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00123">moc_spu_thread_list</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00030">MOC_SUCCESS</a>, <a class="el" href="../../d0/d43/imoc__dma-tags__ppu_8c-source.html#l00032">moc_tag_release()</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00064">imoc_dma_request_struct::remainder</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00063">imoc_dma_request_struct::size</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00078">moc_spu_thread_struct::speid</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00066">imoc_dma_request_struct::tag_id</a>, and <a class="el" href="../../d7/de1/moc_8h-source.html#l00062">imoc_dma_request_struct::target</a>.</p>
<p>Referenced by <a class="el" href="../../d7/d24/moc__test_8c-source.html#l00013">MOC_Test()</a>, and <a class="el" href="../../d7/dc5/moc__dma-test__ppu_8c-source.html#l00011">MOC_Test_data()</a>.</p>
<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_gdc3d91a083a9dc3aa539aee4d56616f0_cgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_gdc3d91a083a9dc3aa539aee4d56616f0_cgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_gdc3d91a083a9dc3aa539aee4d56616f0_cgraph_map">
<area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#gf465203c58c5a8066a7ef3ee91b15cec" title="Releases a reserved tag." alt="" coords="171,5,291,32"></map>
</div>
<p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_gdc3d91a083a9dc3aa539aee4d56616f0_icgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_gdc3d91a083a9dc3aa539aee4d56616f0_icgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_gdc3d91a083a9dc3aa539aee4d56616f0_icgraph_map">
<area shape="rect" href="../../d7/d62/group__p2p__imm.html#g5ee1f1c1275717d2dc78d6058ff81e9e" title="Tests, if a non&#45;blocking communication has been completed." alt="" coords="187,5,269,32"><area shape="rect" href="../../d9/d16/group__dma__access.html#g342d07658aae4252a2e2cd6a8cc185dd" title="Tests if a MOC_IGet_data or IMOC_IPut_data is completed." alt="" coords="171,56,285,83"></map>
</div>
</div>
</div><p>
<a class="anchor" name="g57b89667357146b299f32bd114e0e5ad"></a><!-- doxytag: member="imoc_dma_ppu.h::IMOC_wait_dma" ref="g57b89667357146b299f32bd114e0e5ad" args="(imoc_dma_request *request)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int IMOC_wait_dma </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a> *&nbsp;</td>
<td class="paramname"> <em>request</em> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Waits till a IMOC_iget_data or IMOC_iput_data is completed.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>request</em>&nbsp;</td><td><b>in</b> request-handle </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
<p>Definition at line <a class="el" href="../../d8/da5/imoc__dma-wait__ppu_8c-source.html#l00009">9</a> of file <a class="el" href="../../d8/da5/imoc__dma-wait__ppu_8c-source.html">imoc_dma-wait_ppu.c</a>.</p>
<p>References <a class="el" href="../../d7/de1/moc_8h-source.html#l00061">imoc_dma_request_struct::buffer</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00065">imoc_dma_request_struct::dest</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00106">moc_ppu_thread_count</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00123">moc_spu_thread_list</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00030">MOC_SUCCESS</a>, <a class="el" href="../../d0/d43/imoc__dma-tags__ppu_8c-source.html#l00032">moc_tag_release()</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00064">imoc_dma_request_struct::remainder</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00063">imoc_dma_request_struct::size</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00078">moc_spu_thread_struct::speid</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00066">imoc_dma_request_struct::tag_id</a>, and <a class="el" href="../../d7/de1/moc_8h-source.html#l00062">imoc_dma_request_struct::target</a>.</p>
<p>Referenced by <a class="el" href="../../de/d33/moc__wait_8c-source.html#l00011">MOC_Wait()</a>, and <a class="el" href="../../d4/df9/moc__dma-wait__ppu_8c-source.html#l00011">MOC_Wait_data()</a>.</p>
<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_g57b89667357146b299f32bd114e0e5ad_cgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_g57b89667357146b299f32bd114e0e5ad_cgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_g57b89667357146b299f32bd114e0e5ad_cgraph_map">
<area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#gf465203c58c5a8066a7ef3ee91b15cec" title="Releases a reserved tag." alt="" coords="171,5,291,32"></map>
</div>
<p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_g57b89667357146b299f32bd114e0e5ad_icgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_g57b89667357146b299f32bd114e0e5ad_icgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_g57b89667357146b299f32bd114e0e5ad_icgraph_map">
<area shape="rect" href="../../d7/d62/group__p2p__imm.html#g68043e4a0893fdc25c67f87bae1015a6" title="Wait till a non&#45;blocking communication has been completed." alt="" coords="187,5,272,32"><area shape="rect" href="../../d9/d16/group__dma__access.html#g0ba7b00fbebaabb8b39737a7c13efc67" title="Waits till a MOC_IGet_data or IMOC_IPut_data is completed." alt="" coords="171,56,288,83"><area shape="rect" href="../../db/dc2/group__broadcast.html#gfd25e9a19a1ad4032fdf3703531167d6" title="Broadcasts a message from the process with rank &quot;root&quot; to all other processes..." alt="" coords="337,5,428,32"></map>
</div>
</div>
</div><p>
<a class="anchor" name="gf465203c58c5a8066a7ef3ee91b15cec"></a><!-- doxytag: member="imoc_dma_ppu.h::moc_tag_release" ref="gf465203c58c5a8066a7ef3ee91b15cec" args="(unsigned int speid, int tag)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int moc_tag_release </td>
<td>(</td>
<td class="paramtype">unsigned int&nbsp;</td>
<td class="paramname"> <em>speid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>tag</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Releases a reserved tag.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>speid</em>&nbsp;</td><td><b>id</b> of spu for which the tag was reserved </td></tr>
<tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td><b>tag</b> to be released </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
<p>Definition at line <a class="el" href="../../d0/d43/imoc__dma-tags__ppu_8c-source.html#l00032">32</a> of file <a class="el" href="../../d0/d43/imoc__dma-tags__ppu_8c-source.html">imoc_dma-tags_ppu.c</a>.</p>
<p>References <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00030">MOC_SUCCESS</a>, and <a class="el" href="../../d0/d43/imoc__dma-tags__ppu_8c-source.html#l00012">tags</a>.</p>
<p>Referenced by <a class="el" href="../../d2/df9/imoc__dma-test__ppu_8c-source.html#l00009">IMOC_test_dma()</a>, and <a class="el" href="../../d8/da5/imoc__dma-wait__ppu_8c-source.html#l00009">IMOC_wait_dma()</a>.</p>
<p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_gf465203c58c5a8066a7ef3ee91b15cec_icgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_gf465203c58c5a8066a7ef3ee91b15cec_icgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_gf465203c58c5a8066a7ef3ee91b15cec_icgraph_map">
<area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#gdc3d91a083a9dc3aa539aee4d56616f0" title="Tests if a IMOC_iget_data or IMOC_iput_data is completed." alt="" coords="175,5,289,32"><area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#g57b89667357146b299f32bd114e0e5ad" title="Waits till a IMOC_iget_data or IMOC_iput_data is completed." alt="" coords="175,56,289,83"></map>
</div>
</div>
</div><p>
<a class="anchor" name="g29d3bf9879af70f97d63e774a5aa4d33"></a><!-- doxytag: member="imoc_dma_ppu.h::moc_tag_reserve" ref="g29d3bf9879af70f97d63e774a5aa4d33" args="(unsigned int speid)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int moc_tag_reserve </td>
<td>(</td>
<td class="paramtype">unsigned int&nbsp;</td>
<td class="paramname"> <em>speid</em> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Reserves a tag on the ppu, for communication with a given spu.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>speid</em>&nbsp;</td><td><b>id</b> of spu to communicate with </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>tag (0-14) when success otherwise error code </dd></dl>
<p>Definition at line <a class="el" href="../../d0/d43/imoc__dma-tags__ppu_8c-source.html#l00014">14</a> of file <a class="el" href="../../d0/d43/imoc__dma-tags__ppu_8c-source.html">imoc_dma-tags_ppu.c</a>.</p>
<p>References <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, and <a class="el" href="../../d0/d43/imoc__dma-tags__ppu_8c-source.html#l00012">tags</a>.</p>
<p>Referenced by <a class="el" href="../../d6/df6/imoc__dma-iget__ppu_8c-source.html#l00010">IMOC_iget_data()</a>, and <a class="el" href="../../dd/d07/imoc__dma-iput__ppu_8c-source.html#l00019">IMOC_iput_data()</a>.</p>
<p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/de2/group__internal__p2p__dma_g29d3bf9879af70f97d63e774a5aa4d33_icgraph.png" border="0" usemap="#d2/de2/group__internal__p2p__dma_g29d3bf9879af70f97d63e774a5aa4d33_icgraph_map" alt=""></center>
<map name="d2/de2/group__internal__p2p__dma_g29d3bf9879af70f97d63e774a5aa4d33_icgraph_map">
<area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#g0c76eeaa08ac299e19dc2758d4142cd9" title="Internal wrapper&#45;function for a non&#45;blocking DMA&#45;get operation." alt="" coords="173,5,288,32"><area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#gc181bb2e3eb058990534c71355af3443" title="Internal wrapper&#45;function for a non&#45;blocking DMA&#45;put operation." alt="" coords="173,56,288,83"><area shape="rect" href="../../d9/d16/group__dma__access.html#g08f0af30f2e0e6840ec2be5ca93fd14f" title="Wrapper&#45;function for a non&#45;blocking DMA&#45;get operation." alt="" coords="336,5,451,32"><area shape="rect" href="../../d9/d16/group__dma__access.html#g1fd9a141352dd4344e20f1bde778d265" title="Wrapper&#45;function for a non&#45;blocking DMA&#45;put operation." alt="" coords="337,56,449,83"></map>
</div>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:51:14 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -0,0 +1 @@
<area shape="rect" href="$d2/de2/group__internal__p2p__dma.html#g29d3bf9879af70f97d63e774a5aa4d33" title="Reserves a tag on the ppu, for communication with a given spu." alt="" coords="168,5,288,32">
@@ -0,0 +1 @@
bda54ea0732025e405ea2f3ee7c537b2
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -0,0 +1 @@
<area shape="rect" href="$d9/d16/group__dma__access.html#g08f0af30f2e0e6840ec2be5ca93fd14f" title="Wrapper&#45;function for a non&#45;blocking DMA&#45;get operation." alt="" coords="168,5,283,32">
@@ -0,0 +1 @@
44d36ff47cb99238fc2f7698ae5c3c5c
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -0,0 +1,4 @@
<area shape="rect" href="$d2/de2/group__internal__p2p__dma.html#g0c76eeaa08ac299e19dc2758d4142cd9" title="Internal wrapper&#45;function for a non&#45;blocking DMA&#45;get operation." alt="" coords="173,5,288,32">
<area shape="rect" href="$d2/de2/group__internal__p2p__dma.html#gc181bb2e3eb058990534c71355af3443" title="Internal wrapper&#45;function for a non&#45;blocking DMA&#45;put operation." alt="" coords="173,56,288,83">
<area shape="rect" href="$d9/d16/group__dma__access.html#g08f0af30f2e0e6840ec2be5ca93fd14f" title="Wrapper&#45;function for a non&#45;blocking DMA&#45;get operation." alt="" coords="336,5,451,32">
<area shape="rect" href="$d9/d16/group__dma__access.html#g1fd9a141352dd4344e20f1bde778d265" title="Wrapper&#45;function for a non&#45;blocking DMA&#45;put operation." alt="" coords="337,56,449,83">
@@ -0,0 +1 @@
df849505d2ffd43782a3564cc89aee12
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

@@ -0,0 +1 @@
<area shape="rect" href="$d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531" title="void bmalloc_print_nodes() { if (!bmalloc_first_node) printf(&quot;No nodes in list\\n&quot;);..." alt="" coords="165,5,261,32">
@@ -0,0 +1 @@
d6bcce489811e9c5f1eab7f6387817c4
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1,2 @@
<area shape="rect" href="$d9/d16/group__dma__access.html#g3716465d42f20379bbf65002ecd9e448" title="Wrapper&#45;function for a blocking DMA&#45;get operation." alt="" coords="165,5,277,32">
<area shape="rect" href="$d0/d64/group__p2p__main.html#g30c532510cffd36acd1b9b0b3edb3832" title="Performs a blocking standard mode receive operation." alt="" coords="179,56,264,83">
@@ -0,0 +1 @@
27e0e8bd048800791ef5aead0369892c
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

@@ -0,0 +1 @@
<area shape="rect" href="$d2/de2/group__internal__p2p__dma.html#gf465203c58c5a8066a7ef3ee91b15cec" title="Releases a reserved tag." alt="" coords="171,5,291,32">
@@ -0,0 +1 @@
cbb383eac3b7873fe8473237cec08838
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

@@ -0,0 +1,3 @@
<area shape="rect" href="$d7/d62/group__p2p__imm.html#g68043e4a0893fdc25c67f87bae1015a6" title="Wait till a non&#45;blocking communication has been completed." alt="" coords="187,5,272,32">
<area shape="rect" href="$d9/d16/group__dma__access.html#g0ba7b00fbebaabb8b39737a7c13efc67" title="Waits till a MOC_IGet_data or IMOC_IPut_data is completed." alt="" coords="171,56,288,83">
<area shape="rect" href="$db/dc2/group__broadcast.html#gfd25e9a19a1ad4032fdf3703531167d6" title="Broadcasts a message from the process with rank &quot;root&quot; to all other processes..." alt="" coords="337,5,428,32">
@@ -0,0 +1 @@
437915f627a99704f1cd51e4490b3efc
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

@@ -0,0 +1,7 @@
<area shape="rect" href="$de/d84/group__p2p__buffered.html#g307bf844e1416c7c021e4a3468209d0b" title="Performs a blocking buffered mode send operation." alt="" coords="173,31,269,57">
<area shape="rect" href="$d9/d16/group__dma__access.html#ge07f4b35da50be472772f9d3a426669e" title="Wrapper&#45;function for a blocking DMA&#45;put operation." alt="" coords="167,81,276,108">
<area shape="rect" href="$d7/d62/group__p2p__imm.html#gd88773e68570adfad9f99159c69502af" title="Performs a non&#45;blocking standard mode send operation." alt="" coords="327,5,417,32">
<area shape="rect" href="$d0/d64/group__p2p__main.html#g23e0afbe55bc4c86cb738c3361623a4c" title="Performs a blocking standard mode send operation." alt="" coords="328,56,416,83">
<area shape="rect" href="$db/dc2/group__broadcast.html#gfd25e9a19a1ad4032fdf3703531167d6" title="Broadcasts a message from the process with rank &quot;root&quot; to all other processes..." alt="" coords="501,5,592,32">
<area shape="rect" href="$d2/ded/group__p2p__sendrecv.html#g70885aadac98497e169267e74abee516" title="Execute a blocking send and receive operation." alt="" coords="491,56,603,83">
<area shape="rect" href="$d2/ded/group__p2p__sendrecv.html#g1e5b32eaefd61f863f89778dcbbb70a2" title="Execute a blocking send and receive." alt="" coords="467,107,627,133">
@@ -0,0 +1 @@
2baebd254628320f036ba4a64f1f8989
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1 @@
<area shape="rect" href="$d2/de2/group__internal__p2p__dma.html#g29d3bf9879af70f97d63e774a5aa4d33" title="Reserves a tag on the ppu, for communication with a given spu." alt="" coords="168,5,288,32">
@@ -0,0 +1 @@
666210f54adf74337a08e7907608b473
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1 @@
<area shape="rect" href="$d9/d16/group__dma__access.html#g1fd9a141352dd4344e20f1bde778d265" title="Wrapper&#45;function for a non&#45;blocking DMA&#45;put operation." alt="" coords="169,5,281,32">
@@ -0,0 +1 @@
46f3bd7ab55d324d7a5564dc8166cb3b
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1 @@
<area shape="rect" href="$d2/de2/group__internal__p2p__dma.html#gf465203c58c5a8066a7ef3ee91b15cec" title="Releases a reserved tag." alt="" coords="171,5,291,32">
@@ -0,0 +1 @@
45ce75d27b88c1e041d2458dd5d9ddb9
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -0,0 +1,2 @@
<area shape="rect" href="$d7/d62/group__p2p__imm.html#g5ee1f1c1275717d2dc78d6058ff81e9e" title="Tests, if a non&#45;blocking communication has been completed." alt="" coords="187,5,269,32">
<area shape="rect" href="$d9/d16/group__dma__access.html#g342d07658aae4252a2e2cd6a8cc185dd" title="Tests if a MOC_IGet_data or IMOC_IPut_data is completed." alt="" coords="171,56,285,83">
@@ -0,0 +1 @@
c4d361de4e1a73da093bec4ad6e1ab01
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

@@ -0,0 +1,2 @@
<area shape="rect" href="$d2/de2/group__internal__p2p__dma.html#gdc3d91a083a9dc3aa539aee4d56616f0" title="Tests if a IMOC_iget_data or IMOC_iput_data is completed." alt="" coords="175,5,289,32">
<area shape="rect" href="$d2/de2/group__internal__p2p__dma.html#g57b89667357146b299f32bd114e0e5ad" title="Waits till a IMOC_iget_data or IMOC_iput_data is completed." alt="" coords="175,56,289,83">
@@ -0,0 +1 @@
ec480351a3ddb0122a5fbb655e5330c0
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

@@ -0,0 +1,285 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): Send-Receive</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Send-Receive<br>
<small>
[<a class="el" href="../../d0/d64/group__p2p__main.html">Point-to-Point Communication</a>]</small>
</h1>
<p>
<div class="dynheader">
Collaboration diagram for Send-Receive:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d2/ded/group__p2p__sendrecv.png" border="0" alt="" usemap="#d1/d97/d2_2ded_2group____p2p____sendrecv_map">
<map name="d1/d97/d2_2ded_2group____p2p____sendrecv_map">
<area shape="rect" href="../../d0/d64/group__p2p__main.html" title="Sending and receiving of messages by processes is the basic MPI communication mechanism..." alt="" coords="5,5,200,32"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The send-receive operations combine in one call the sending of a message to one destination and the receiving of another message, from another process.
<p>
A message sent by a send-receive operation can be received by a regular receive operation or probed by a probe operation; a send-receive operation can receive a message sent by a regular send operation.
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/ded/group__p2p__sendrecv.html#g70885aadac98497e169267e74abee516">MOC_Sendrecv</a> (void *sendbuf, int sendcount, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> sendtype, int dest, int sendtag, void *recvbuf, int recvcount, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> recvtype, int source, int recvtag, <a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> comm, <a class="el" href="../../dd/d7a/structMOC__Status__struct.html">MOC_Status</a> *status)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Execute a blocking send and receive operation. <a href="#g70885aadac98497e169267e74abee516"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/ded/group__p2p__sendrecv.html#g1e5b32eaefd61f863f89778dcbbb70a2">MOC_Sendrecv_replace</a> (void *buf, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, int dest, int sendtag, int source, int recvtag, <a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> comm, <a class="el" href="../../dd/d7a/structMOC__Status__struct.html">MOC_Status</a> *status)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Execute a blocking send and receive. <a href="#g1e5b32eaefd61f863f89778dcbbb70a2"></a><br></td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g70885aadac98497e169267e74abee516"></a><!-- doxytag: member="moc.h::MOC_Sendrecv" ref="g70885aadac98497e169267e74abee516" args="(void *sendbuf, int sendcount, MOC_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MOC_Datatype recvtype, int source, int recvtag, MOC_Comm comm, MOC_Status *status)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Sendrecv </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>sendbuf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>sendcount</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>&nbsp;</td>
<td class="paramname"> <em>sendtype</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>sendtag</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>recvbuf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>recvcount</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>&nbsp;</td>
<td class="paramname"> <em>recvtype</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>recvtag</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a>&nbsp;</td>
<td class="paramname"> <em>comm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../dd/d7a/structMOC__Status__struct.html">MOC_Status</a> *&nbsp;</td>
<td class="paramname"> <em>status</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Execute a blocking send and receive operation.
<p>
Both send and receive use the same communicator, but possibly different tags. The send buffer and receive buffers may be disjoint, and may have different lengths and datatypes.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>sendbuf</em>&nbsp;</td><td><b>in</b> Pointer to buffer where data is stored </td></tr>
<tr><td valign="top"></td><td valign="top"><em>sendcount</em>&nbsp;</td><td><b>in</b> Number of elements to be send (not equal to actual byte-value) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>sendtype</em>&nbsp;</td><td><b>in</b> Type of elements to be send </td></tr>
<tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td><b>in</b> Rank of receiving process </td></tr>
<tr><td valign="top"></td><td valign="top"><em>sendtag</em>&nbsp;</td><td><b>in</b> Tag of message to be send</td></tr>
<tr><td valign="top"></td><td valign="top"><em>recvbuf</em>&nbsp;</td><td><b>inout</b> Buffer into which data should be stored </td></tr>
<tr><td valign="top"></td><td valign="top"><em>recvcount</em>&nbsp;</td><td><b>in</b> Number of elements in receive buffer (not equal to actual byte-value) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>recvtype</em>&nbsp;</td><td><b>in</b> Datatype of each receive buffer element </td></tr>
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> Rank of source </td></tr>
<tr><td valign="top"></td><td valign="top"><em>recvtag</em>&nbsp;</td><td><b>in</b> Tag of message to be received</td></tr>
<tr><td valign="top"></td><td valign="top"><em>comm</em>&nbsp;</td><td><b>in</b> Communicator of message </td></tr>
<tr><td valign="top"></td><td valign="top"><em>status</em>&nbsp;</td><td><b>inout</b> Object holding status-information (has to be allocated by user)</td></tr>
</table>
</dl>
<dl compact><dt><b>Return values:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>MOC_SUCCESS</em>&nbsp;</td><td>No error; MPI routine completed successfully. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>error-code </td></tr>
</table>
</dl>
<p>Definition at line <a class="el" href="../../db/da3/moc__send__recv_8c-source.html#l00003">3</a> of file <a class="el" href="../../db/da3/moc__send__recv_8c-source.html">moc_send_recv.c</a>.</p>
<p>References <a class="el" href="../../d8/dbc/moc__recv__ppu_8c-source.html#l00011">MOC_Recv()</a>, and <a class="el" href="../../dd/d4a/moc__send_8c-source.html#l00019">MOC_Send()</a>.</p>
<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/ded/group__p2p__sendrecv_g70885aadac98497e169267e74abee516_cgraph.png" border="0" usemap="#d2/ded/group__p2p__sendrecv_g70885aadac98497e169267e74abee516_cgraph_map" alt=""></center>
<map name="d2/ded/group__p2p__sendrecv_g70885aadac98497e169267e74abee516_cgraph_map">
<area shape="rect" href="../../d0/d64/group__p2p__main.html#g30c532510cffd36acd1b9b0b3edb3832" title="Performs a blocking standard mode receive operation." alt="" coords="167,81,252,108"><area shape="rect" href="../../d0/d64/group__p2p__main.html#g23e0afbe55bc4c86cb738c3361623a4c" title="Performs a blocking standard mode send operation." alt="" coords="165,157,253,184"><area shape="rect" href="../../d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531" title="void bmalloc_print_nodes() { if (!bmalloc_first_node) printf(&quot;No nodes in list\\n&quot;);..." alt="" coords="529,56,625,83"><area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#g53d36c567e4c98e5d258a7857096e7ab" title="Internal wrapper&#45;function for a blocking DMA&#45;get operation." alt="" coords="304,5,416,32"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g8980da77fa506e9a6d503c8c6eba68e2" title="Get the next valid message&#45;envelope from &quot;source&quot; with specified &quot;tag&quot;..." alt="" coords="303,107,417,133"><area shape="rect" href="../../de/d84/group__p2p__buffered.html#g307bf844e1416c7c021e4a3468209d0b" title="Performs a blocking buffered mode send operation." alt="" coords="312,208,408,235"><area shape="rect" href="../../d5/dc2/group__p2p__synch.html#g46cb2ff2b5a0601165978598932d6120" title="Performs a blocking synchronous mode send operation." alt="" coords="312,157,408,184"><area shape="rect" href="../../d3/dd3/group__internal__p2p__bmalloc.html#g5295b372d853993b2e6cfb6912a0ee41" title="Allocate buffer&#45;space." alt="" coords="524,259,631,285"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g2a948cdecce651ae6cc1b0c0ddb1b750" title="Get next free entry in message&#45;queue (a local copy of the message&#45;queue has to be..." alt="" coords="509,157,645,184"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g409bdbea503611cf04829413d15830df" title="Get free message&#45;ID." alt="" coords="513,208,641,235"><area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#gb48c58191a7cf4d3e502d1c7a6c0ab9c" title="Internal wrapper&#45;function for a blocking DMA&#45;put operation." alt="" coords="521,309,633,336"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g8675f9552168f2dd8926cad5ac00be69" title="Wait till message with message&#45;ID mid has been received." alt="" coords="467,107,688,133"></map>
</div>
</div>
</div><p>
<a class="anchor" name="g1e5b32eaefd61f863f89778dcbbb70a2"></a><!-- doxytag: member="moc.h::MOC_Sendrecv_replace" ref="g1e5b32eaefd61f863f89778dcbbb70a2" args="(void *buf, int count, MOC_Datatype datatype, int dest, int sendtag, int source, int recvtag, MOC_Comm comm, MOC_Status *status)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Sendrecv_replace </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>&nbsp;</td>
<td class="paramname"> <em>datatype</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>sendtag</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>recvtag</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a>&nbsp;</td>
<td class="paramname"> <em>comm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../dd/d7a/structMOC__Status__struct.html">MOC_Status</a> *&nbsp;</td>
<td class="paramname"> <em>status</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Execute a blocking send and receive.
<p>
The same buffer is used both for the send and for the receive, so that the message sent is replaced by the message received.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td><b>inout</b> Pointer to buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td><b>in</b> Number of elements (not equal to actual byte-value) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>datatype</em>&nbsp;</td><td><b>in</b> Type of elements</td></tr>
<tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td><b>in</b> Rank of receiving process </td></tr>
<tr><td valign="top"></td><td valign="top"><em>sendtag</em>&nbsp;</td><td><b>in</b> Tag of message to be send</td></tr>
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> Rank of source </td></tr>
<tr><td valign="top"></td><td valign="top"><em>recvtag</em>&nbsp;</td><td><b>in</b> Tag of message to be received</td></tr>
<tr><td valign="top"></td><td valign="top"><em>comm</em>&nbsp;</td><td><b>in</b> Communicator of message </td></tr>
<tr><td valign="top"></td><td valign="top"><em>status</em>&nbsp;</td><td><b>inout</b> Object holding status-information (has to be allocated by user)</td></tr>
</table>
</dl>
<dl compact><dt><b>Return values:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>MOC_SUCCESS</em>&nbsp;</td><td>No error; MPI routine completed successfully. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>error-code </td></tr>
</table>
</dl>
<p>Definition at line <a class="el" href="../../d9/d96/moc__send__recv__replace_8c-source.html#l00003">3</a> of file <a class="el" href="../../d9/d96/moc__send__recv__replace_8c-source.html">moc_send_recv_replace.c</a>.</p>
<p>References <a class="el" href="../../d8/dbc/moc__recv__ppu_8c-source.html#l00011">MOC_Recv()</a>, and <a class="el" href="../../dd/d4a/moc__send_8c-source.html#l00019">MOC_Send()</a>.</p>
<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d2/ded/group__p2p__sendrecv_g1e5b32eaefd61f863f89778dcbbb70a2_cgraph.png" border="0" usemap="#d2/ded/group__p2p__sendrecv_g1e5b32eaefd61f863f89778dcbbb70a2_cgraph_map" alt=""></center>
<map name="d2/ded/group__p2p__sendrecv_g1e5b32eaefd61f863f89778dcbbb70a2_cgraph_map">
<area shape="rect" href="../../d0/d64/group__p2p__main.html#g30c532510cffd36acd1b9b0b3edb3832" title="Performs a blocking standard mode receive operation." alt="" coords="215,81,300,108"><area shape="rect" href="../../d0/d64/group__p2p__main.html#g23e0afbe55bc4c86cb738c3361623a4c" title="Performs a blocking standard mode send operation." alt="" coords="213,157,301,184"><area shape="rect" href="../../d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531" title="void bmalloc_print_nodes() { if (!bmalloc_first_node) printf(&quot;No nodes in list\\n&quot;);..." alt="" coords="577,56,673,83"><area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#g53d36c567e4c98e5d258a7857096e7ab" title="Internal wrapper&#45;function for a blocking DMA&#45;get operation." alt="" coords="352,5,464,32"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g8980da77fa506e9a6d503c8c6eba68e2" title="Get the next valid message&#45;envelope from &quot;source&quot; with specified &quot;tag&quot;..." alt="" coords="351,107,465,133"><area shape="rect" href="../../de/d84/group__p2p__buffered.html#g307bf844e1416c7c021e4a3468209d0b" title="Performs a blocking buffered mode send operation." alt="" coords="360,208,456,235"><area shape="rect" href="../../d5/dc2/group__p2p__synch.html#g46cb2ff2b5a0601165978598932d6120" title="Performs a blocking synchronous mode send operation." alt="" coords="360,157,456,184"><area shape="rect" href="../../d3/dd3/group__internal__p2p__bmalloc.html#g5295b372d853993b2e6cfb6912a0ee41" title="Allocate buffer&#45;space." alt="" coords="572,259,679,285"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g2a948cdecce651ae6cc1b0c0ddb1b750" title="Get next free entry in message&#45;queue (a local copy of the message&#45;queue has to be..." alt="" coords="557,157,693,184"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g409bdbea503611cf04829413d15830df" title="Get free message&#45;ID." alt="" coords="561,208,689,235"><area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#gb48c58191a7cf4d3e502d1c7a6c0ab9c" title="Internal wrapper&#45;function for a blocking DMA&#45;put operation." alt="" coords="569,309,681,336"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g8675f9552168f2dd8926cad5ac00be69" title="Wait till message with message&#45;ID mid has been received." alt="" coords="515,107,736,133"></map>
</div>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:50:53 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,12 @@
<area shape="rect" href="$d0/d64/group__p2p__main.html#g30c532510cffd36acd1b9b0b3edb3832" title="Performs a blocking standard mode receive operation." alt="" coords="215,81,300,108">
<area shape="rect" href="$d0/d64/group__p2p__main.html#g23e0afbe55bc4c86cb738c3361623a4c" title="Performs a blocking standard mode send operation." alt="" coords="213,157,301,184">
<area shape="rect" href="$d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531" title="void bmalloc_print_nodes() { if (!bmalloc_first_node) printf(&quot;No nodes in list\\n&quot;);..." alt="" coords="577,56,673,83">
<area shape="rect" href="$d2/de2/group__internal__p2p__dma.html#g53d36c567e4c98e5d258a7857096e7ab" title="Internal wrapper&#45;function for a blocking DMA&#45;get operation." alt="" coords="352,5,464,32">
<area shape="rect" href="$d8/d88/group__internal__p2p__main.html#g8980da77fa506e9a6d503c8c6eba68e2" title="Get the next valid message&#45;envelope from &quot;source&quot; with specified &quot;tag&quot;..." alt="" coords="351,107,465,133">
<area shape="rect" href="$de/d84/group__p2p__buffered.html#g307bf844e1416c7c021e4a3468209d0b" title="Performs a blocking buffered mode send operation." alt="" coords="360,208,456,235">
<area shape="rect" href="$d5/dc2/group__p2p__synch.html#g46cb2ff2b5a0601165978598932d6120" title="Performs a blocking synchronous mode send operation." alt="" coords="360,157,456,184">
<area shape="rect" href="$d3/dd3/group__internal__p2p__bmalloc.html#g5295b372d853993b2e6cfb6912a0ee41" title="Allocate buffer&#45;space." alt="" coords="572,259,679,285">
<area shape="rect" href="$d8/d88/group__internal__p2p__main.html#g2a948cdecce651ae6cc1b0c0ddb1b750" title="Get next free entry in message&#45;queue (a local copy of the message&#45;queue has to be..." alt="" coords="557,157,693,184">
<area shape="rect" href="$d8/d88/group__internal__p2p__main.html#g409bdbea503611cf04829413d15830df" title="Get free message&#45;ID." alt="" coords="561,208,689,235">
<area shape="rect" href="$d2/de2/group__internal__p2p__dma.html#gb48c58191a7cf4d3e502d1c7a6c0ab9c" title="Internal wrapper&#45;function for a blocking DMA&#45;put operation." alt="" coords="569,309,681,336">
<area shape="rect" href="$d8/d88/group__internal__p2p__main.html#g8675f9552168f2dd8926cad5ac00be69" title="Wait till message with message&#45;ID mid has been received." alt="" coords="515,107,736,133">
@@ -0,0 +1 @@
4ae61932e5eb308c7f595be5ec1378d8
Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

@@ -0,0 +1,12 @@
<area shape="rect" href="$d0/d64/group__p2p__main.html#g30c532510cffd36acd1b9b0b3edb3832" title="Performs a blocking standard mode receive operation." alt="" coords="167,81,252,108">
<area shape="rect" href="$d0/d64/group__p2p__main.html#g23e0afbe55bc4c86cb738c3361623a4c" title="Performs a blocking standard mode send operation." alt="" coords="165,157,253,184">
<area shape="rect" href="$d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531" title="void bmalloc_print_nodes() { if (!bmalloc_first_node) printf(&quot;No nodes in list\\n&quot;);..." alt="" coords="529,56,625,83">
<area shape="rect" href="$d2/de2/group__internal__p2p__dma.html#g53d36c567e4c98e5d258a7857096e7ab" title="Internal wrapper&#45;function for a blocking DMA&#45;get operation." alt="" coords="304,5,416,32">
<area shape="rect" href="$d8/d88/group__internal__p2p__main.html#g8980da77fa506e9a6d503c8c6eba68e2" title="Get the next valid message&#45;envelope from &quot;source&quot; with specified &quot;tag&quot;..." alt="" coords="303,107,417,133">
<area shape="rect" href="$de/d84/group__p2p__buffered.html#g307bf844e1416c7c021e4a3468209d0b" title="Performs a blocking buffered mode send operation." alt="" coords="312,208,408,235">
<area shape="rect" href="$d5/dc2/group__p2p__synch.html#g46cb2ff2b5a0601165978598932d6120" title="Performs a blocking synchronous mode send operation." alt="" coords="312,157,408,184">
<area shape="rect" href="$d3/dd3/group__internal__p2p__bmalloc.html#g5295b372d853993b2e6cfb6912a0ee41" title="Allocate buffer&#45;space." alt="" coords="524,259,631,285">
<area shape="rect" href="$d8/d88/group__internal__p2p__main.html#g2a948cdecce651ae6cc1b0c0ddb1b750" title="Get next free entry in message&#45;queue (a local copy of the message&#45;queue has to be..." alt="" coords="509,157,645,184">
<area shape="rect" href="$d8/d88/group__internal__p2p__main.html#g409bdbea503611cf04829413d15830df" title="Get free message&#45;ID." alt="" coords="513,208,641,235">
<area shape="rect" href="$d2/de2/group__internal__p2p__dma.html#gb48c58191a7cf4d3e502d1c7a6c0ab9c" title="Internal wrapper&#45;function for a blocking DMA&#45;put operation." alt="" coords="521,309,633,336">
<area shape="rect" href="$d8/d88/group__internal__p2p__main.html#g8675f9552168f2dd8926cad5ac00be69" title="Wait till message with message&#45;ID mid has been received." alt="" coords="467,107,688,133">
@@ -0,0 +1 @@
5d092073b4734ee8a7d84c5443ee90b2
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

@@ -0,0 +1,55 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): src/ppu/internal/dma/imoc_dma-test_ppu.c Source File</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<h1>src/ppu/internal/dma/imoc_dma-test_ppu.c</h1><a href="../../d4/d5b/imoc__dma-test__ppu_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include &lt;string.h&gt;</span>
<a name="l00002"></a>00002 <span class="preprocessor">#include &lt;stdint.h&gt;</span>
<a name="l00003"></a>00003 <span class="preprocessor">#include &lt;free_align.h&gt;</span>
<a name="l00004"></a>00004
<a name="l00005"></a>00005 <span class="preprocessor">#include &lt;<a class="code" href="../../d0/d3a/spu_2moc_8h.html">moc.h</a>&gt;</span>
<a name="l00006"></a>00006 <span class="preprocessor">#include &lt;<a class="code" href="../../d6/d09/imoc__core__ppu_8h.html">internal/ppu/imoc_core_ppu.h</a>&gt;</span>
<a name="l00007"></a>00007 <span class="preprocessor">#include &lt;<a class="code" href="../../de/df9/imoc__dma__ppu_8h.html">internal/ppu/imoc_dma_ppu.h</a>&gt;</span>
<a name="l00008"></a>00008
<a name="l00009"></a><a class="code" href="../../d2/de2/group__internal__p2p__dma.html#gdc3d91a083a9dc3aa539aee4d56616f0">00009</a> <span class="keywordtype">int</span> <a class="code" href="../../d2/de2/group__internal__p2p__dma.html#gdc3d91a083a9dc3aa539aee4d56616f0" title="Tests if a IMOC_iget_data or IMOC_iput_data is completed.">IMOC_test_dma</a>(<a class="code" href="../../d4/da3/structimoc__dma__request__struct.html">imoc_dma_request</a>* request, <span class="keywordtype">int</span> *flag)
<a name="l00010"></a>00010 {
<a name="l00011"></a>00011 uint32_t dmastatus;
<a name="l00012"></a>00012 <span class="keywordtype">int</span> err;
<a name="l00013"></a>00013 err = spe_mfcio_tag_status_read(<a class="code" href="../../dc/df1/group__internal__spu__thread.html#ga5b74732b1e31ec1674ea0e5ae465c4e" title="array of SPU-Threads.">moc_spu_thread_list</a>[request-&gt;<a class="code" href="../../d4/da3/structimoc__dma__request__struct.html#f81a1887a3f1aa7f965e1fb15e2220de">dest</a>
<a name="l00014"></a>00014 - <a class="code" href="../../dc/df1/group__internal__spu__thread.html#gf4270da4dbf663fde50a876067ed0d52" title="actual number of PPU-Threads.">moc_ppu_thread_count</a>].<a class="code" href="../../d1/d8b/structmoc__spu__thread__struct.html#61d6807e3bab9b37ef07b0543e33574e" title="SPE-Context.">speid</a>, 0, SPE_TAG_IMMEDIATE, &amp;dmastatus);
<a name="l00015"></a>00015 <span class="keywordflow">if</span> (err)
<a name="l00016"></a>00016 <span class="keywordflow">return</span> <a class="code" href="../../d8/da1/group__environment__error.html#g05b3a70831c823a59014c4853a76ca7e" title="Internal MOC (implementation) error.">MOC_ERR_INTERN</a>;
<a name="l00017"></a>00017
<a name="l00018"></a>00018 <span class="keywordflow">if</span> (dmastatus == (1 &lt;&lt; request-&gt;<a class="code" href="../../d4/da3/structimoc__dma__request__struct.html#93345f8438f78d7a0309b4b0b0670476">tag_id</a>)) <span class="comment">// dma transfer not finished</span>
<a name="l00019"></a>00019 *flag = 0;
<a name="l00020"></a>00020 <span class="keywordflow">else</span> <span class="comment">// dma transfer finished</span>
<a name="l00021"></a>00021 {
<a name="l00022"></a>00022 <span class="keywordflow">if</span> (request-&gt;<a class="code" href="../../d4/da3/structimoc__dma__request__struct.html#e9940544a153813fd1284eaa8883a1f2">remainder</a> != 0) <span class="comment">// check if buffer was used and copy back data from there to target</span>
<a name="l00023"></a>00023 {
<a name="l00024"></a>00024 memcpy(request-&gt;<a class="code" href="../../d4/da3/structimoc__dma__request__struct.html#aab928f79935740e686706a1296b01a9">target</a> + request-&gt;<a class="code" href="../../d4/da3/structimoc__dma__request__struct.html#8322ab9ff0dbd0be788bf765f3e85e94">size</a>, request-&gt;<a class="code" href="../../d4/da3/structimoc__dma__request__struct.html#efdb405d93fc52fbe483551e3bbaafac">buffer</a>,
<a name="l00025"></a>00025 request-&gt;<a class="code" href="../../d4/da3/structimoc__dma__request__struct.html#e9940544a153813fd1284eaa8883a1f2">remainder</a>);
<a name="l00026"></a>00026 _free_align(request-&gt;<a class="code" href="../../d4/da3/structimoc__dma__request__struct.html#efdb405d93fc52fbe483551e3bbaafac">buffer</a>);
<a name="l00027"></a>00027 }
<a name="l00028"></a>00028 *flag = 1;
<a name="l00029"></a>00029 <a class="code" href="../../d2/de2/group__internal__p2p__dma.html#gf465203c58c5a8066a7ef3ee91b15cec" title="Releases a reserved tag.">moc_tag_release</a>(request-&gt;<a class="code" href="../../d4/da3/structimoc__dma__request__struct.html#f81a1887a3f1aa7f965e1fb15e2220de">dest</a> - <a class="code" href="../../dc/df1/group__internal__spu__thread.html#gf4270da4dbf663fde50a876067ed0d52" title="actual number of PPU-Threads.">moc_ppu_thread_count</a>, request-&gt;<a class="code" href="../../d4/da3/structimoc__dma__request__struct.html#93345f8438f78d7a0309b4b0b0670476">tag_id</a>);
<a name="l00030"></a>00030 }
<a name="l00031"></a>00031
<a name="l00032"></a>00032 <span class="keywordflow">return</span> <a class="code" href="../../d8/da1/group__environment__error.html#g8a73ed6676bcf0c0607d98482ca1aca4" title="No error.">MOC_SUCCESS</a>;
<a name="l00033"></a>00033 }
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:49:47 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>