834 lines
57 KiB
HTML
Executable File
834 lines
57 KiB
HTML
Executable File
<!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 Page</span></a></li>
|
|
<li><a href="../../modules.html"><span>Modules</span></a></li>
|
|
<li><a href="../../annotated.html"><span>Data 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-to-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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 * </td>
|
|
<td class="paramname"> <em>target</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint64_t </td>
|
|
<td class="paramname"> <em>source</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint32_t </td>
|
|
<td class="paramname"> <em>size</em></td><td> </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> </td><td><b>in</b> ls-address of buffer </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>source</em> </td><td><b>in</b> ea-address of data </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>size</em> </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 * </td>
|
|
<td class="paramname"> <em>target</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint64_t </td>
|
|
<td class="paramname"> <em>source</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint32_t </td>
|
|
<td class="paramname"> <em>size</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"> <em>dest</em></td><td> </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> </td><td><b>in</b> local-address of buffer </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>source</em> </td><td><b>in</b> ea-address of data </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>size</em> </td><td><b>in</b> size of data in byte </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>dest</em> </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("No nodes in list\\n");..." 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-function for a blocking DMA-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 * </td>
|
|
<td class="paramname"> <em>target</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint64_t </td>
|
|
<td class="paramname"> <em>source</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint32_t </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> * </td>
|
|
<td class="paramname"> <em>request</em></td><td> </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> </td><td><b>in</b> ls-address of buffer </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>source</em> </td><td><b>in</b> ea-address of data </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>size</em> </td><td><b>in</b> size of data in byte </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>request</em> </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 * </td>
|
|
<td class="paramname"> <em>target</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint64_t </td>
|
|
<td class="paramname"> <em>source</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint32_t </td>
|
|
<td class="paramname"> <em>size</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint32_t </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> * </td>
|
|
<td class="paramname"> <em>request</em></td><td> </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> </td><td><b>in</b> local-address of buffer </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>source</em> </td><td><b>in</b> ea-address of data </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>size</em> </td><td><b>in</b> size of data in byte </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td><b>in</b> id of source spe </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>request</em> </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-function for a non-blocking DMA-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 * </td>
|
|
<td class="paramname"> <em>source</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint64_t </td>
|
|
<td class="paramname"> <em>target</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint32_t </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> * </td>
|
|
<td class="paramname"> <em>request</em></td><td> </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> </td><td><b>in</b> ls-address of data </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>target</em> </td><td><b>in</b> ea-address of buffer </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>size</em> </td><td><b>in</b> size of data in byte </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>request</em> </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 * </td>
|
|
<td class="paramname"> <em>source</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint64_t </td>
|
|
<td class="paramname"> <em>target</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint32_t </td>
|
|
<td class="paramname"> <em>size</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint32_t </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> * </td>
|
|
<td class="paramname"> <em>request</em></td><td> </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> </td><td><b>in</b> local-address of data </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>target</em> </td><td><b>in</b> ea-address of buffer </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>size</em> </td><td><b>in</b> size of data in byte </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td><b>in</b> id of source spe </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>request</em> </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-function for a non-blocking DMA-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 * </td>
|
|
<td class="paramname"> <em>source</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint64_t </td>
|
|
<td class="paramname"> <em>target</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint32_t </td>
|
|
<td class="paramname"> <em>size</em></td><td> </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> </td><td><b>in</b> ls-address of data </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>target</em> </td><td><b>in</b> ea-address of buffer </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>size</em> </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 * </td>
|
|
<td class="paramname"> <em>source</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint64_t </td>
|
|
<td class="paramname"> <em>target</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint32_t </td>
|
|
<td class="paramname"> <em>size</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"> <em>dest</em></td><td> </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> </td><td><b>in</b> local-address of data </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>target</em> </td><td><b>in</b> ea-address of buffer </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>size</em> </td><td><b>in</b> size of data in byte </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>dest</em> </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-function for a blocking DMA-put operation." alt="" coords="167,81,276,108"><area shape="rect" href="../../d7/d62/group__p2p__imm.html#gd88773e68570adfad9f99159c69502af" title="Performs a non-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 "root" 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> * </td>
|
|
<td class="paramname"> <em>request</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int * </td>
|
|
<td class="paramname"> <em>flag</em></td><td> </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> </td><td><b>in</b> request-handle </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>flag</em> </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-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> * </td>
|
|
<td class="paramname"> <em>request</em> </td>
|
|
<td> ) </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> </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-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 "root" 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 </td>
|
|
<td class="paramname"> <em>speid</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"> <em>tag</em></td><td> </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> </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> </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 </td>
|
|
<td class="paramname"> <em>speid</em> </td>
|
|
<td> ) </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> </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-function for a non-blocking DMA-get operation." alt="" coords="173,5,288,32"><area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#gc181bb2e3eb058990534c71355af3443" title="Internal wrapper-function for a non-blocking DMA-put operation." alt="" coords="173,56,288,83"><area shape="rect" href="../../d9/d16/group__dma__access.html#g08f0af30f2e0e6840ec2be5ca93fd14f" title="Wrapper-function for a non-blocking DMA-get operation." alt="" coords="336,5,451,32"><area shape="rect" href="../../d9/d16/group__dma__access.html#g1fd9a141352dd4344e20f1bde778d265" title="Wrapper-function for a non-blocking DMA-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
|
|
<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>
|