[processor-sdk/performance-audio-sr.git] / psdk_cust / libarch_k2g_1_0_1_0 / packages / ti / libarch / docs / doxygen / html / d1 / df3 / group__libarch__datatrans.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6 <meta name="generator" content="Doxygen 1.8.6"/>
7 <title>LibArch: Data Transfer API</title>
8 <link href="../../tabs.css" rel="stylesheet" type="text/css"/>
9 <script type="text/javascript" src="../../jquery.js"></script>
10 <script type="text/javascript" src="../../dynsections.js"></script>
11 <link href="../../search/search.css" rel="stylesheet" type="text/css"/>
12 <script type="text/javascript" src="../../search/search.js"></script>
13 <script type="text/javascript">
14 $(document).ready(function() { searchBox.OnSelectItem(0); });
15 </script>
16 <link href="../../doxygen.css" rel="stylesheet" type="text/css" />
17 </head>
18 <body>
19 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20 <div id="titlearea">
21 <table cellspacing="0" cellpadding="0">
22 <tbody>
23 <tr style="height: 56px;">
24 <td style="padding-left: 0.5em;">
25 <div id="projectname">LibArch
26 </div>
27 <div id="projectbrief">Library architecture and framework</div>
28 </td>
29 </tr>
30 </tbody>
31 </table>
32 </div>
33 <!-- end header part -->
34 <!-- Generated by Doxygen 1.8.6 -->
35 <script type="text/javascript">
36 var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
37 </script>
38 <div id="navrow1" class="tabs">
39 <ul class="tablist">
40 <li><a href="../../index.html"><span>Main Page</span></a></li>
41 <li><a href="../../modules.html"><span>Modules</span></a></li>
42 <li><a href="../../annotated.html"><span>Data Structures</span></a></li>
43 <li><a href="../../files.html"><span>Files</span></a></li>
44 <li>
45 <div id="MSearchBox" class="MSearchBoxInactive">
46 <span class="left">
47 <img id="MSearchSelect" src="../../search/mag_sel.png"
48 onmouseover="return searchBox.OnSearchSelectShow()"
49 onmouseout="return searchBox.OnSearchSelectHide()"
50 alt=""/>
51 <input type="text" id="MSearchField" value="Search" accesskey="S"
52 onfocus="searchBox.OnSearchFieldFocus(true)"
53 onblur="searchBox.OnSearchFieldFocus(false)"
54 onkeyup="searchBox.OnSearchFieldChange(event)"/>
55 </span><span class="right">
56 <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
57 </span>
58 </div>
59 </li>
60 </ul>
61 </div>
62 </div><!-- top -->
63 <!-- window showing the filter options -->
64 <div id="MSearchSelectWindow"
65 onmouseover="return searchBox.OnSearchSelectShow()"
66 onmouseout="return searchBox.OnSearchSelectHide()"
67 onkeydown="return searchBox.OnSearchSelectKey(event)">
68 <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Pages</a></div>
70 <!-- iframe showing the search results (closed by default) -->
71 <div id="MSearchResultsWindow">
72 <iframe src="javascript:void(0)" frameborder="0"
73 name="MSearchResults" id="MSearchResults">
74 </iframe>
75 </div>
77 <div class="header">
78 <div class="summary">
79 <a href="#nested-classes">Data Structures</a> |
80 <a href="#typedef-members">Typedefs</a> |
81 <a href="#func-members">Functions</a> </div>
82 <div class="headertitle">
83 <div class="title">Data Transfer API</div> </div>
84 </div><!--header-->
85 <div class="contents">
87 <p>LibArch Data Transfers API provides functions to perform data transfers between two memory locations which can be internal memory or external memory:
88 <a href="#details">More...</a></p>
89 <table class="memberdecls">
90 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
91 Data Structures</h2></td></tr>
92 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/da7/structlib__emt__Config__s.html">lib_emt_Config_s</a></td></tr>
93 <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Configuration parameters for the initialization of external memory data transfer. <a href="../../dd/da7/structlib__emt__Config__s.html#details">More...</a><br/></td></tr>
94 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
95 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d98/structlib__emt__ConfigLarge__s.html">lib_emt_ConfigLarge_s</a></td></tr>
96 <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Configuration for large external memory data transfers. <a href="../../d8/d98/structlib__emt__ConfigLarge__s.html#details">More...</a><br/></td></tr>
97 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
98 </table><table class="memberdecls">
99 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
100 Typedefs</h2></td></tr>
101 <tr class="memitem:ga3ee110c7c5d95cfe386b113d2d078ec3"><td class="memItemLeft" align="right" valign="top">typedef void * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a></td></tr>
102 <tr class="memdesc:ga3ee110c7c5d95cfe386b113d2d078ec3"><td class="mdescLeft"> </td><td class="mdescRight">Handle to an external memory data transfer instance. <a href="#ga3ee110c7c5d95cfe386b113d2d078ec3">More...</a><br/></td></tr>
103 <tr class="separator:ga3ee110c7c5d95cfe386b113d2d078ec3"><td class="memSeparator" colspan="2"> </td></tr>
104 <tr class="memitem:ga22177ad0d4d825d5ed3b26021634b221"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="../../dd/da7/structlib__emt__Config__s.html">lib_emt_Config_s</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga22177ad0d4d825d5ed3b26021634b221">lib_emt_Config_t</a></td></tr>
105 <tr class="memdesc:ga22177ad0d4d825d5ed3b26021634b221"><td class="mdescLeft"> </td><td class="mdescRight">Configuration parameters for the initialization of external memory data transfer. <a href="#ga22177ad0d4d825d5ed3b26021634b221">More...</a><br/></td></tr>
106 <tr class="separator:ga22177ad0d4d825d5ed3b26021634b221"><td class="memSeparator" colspan="2"> </td></tr>
107 <tr class="memitem:ga437bfecb0c8f550b36bae0f0ee65702d"><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/>
108 <a class="el" href="../../d8/d98/structlib__emt__ConfigLarge__s.html">lib_emt_ConfigLarge_s</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga437bfecb0c8f550b36bae0f0ee65702d">lib_emt_ConfigLarge_t</a></td></tr>
109 <tr class="memdesc:ga437bfecb0c8f550b36bae0f0ee65702d"><td class="mdescLeft"> </td><td class="mdescRight">Configuration for large external memory data transfers. <a href="#ga437bfecb0c8f550b36bae0f0ee65702d">More...</a><br/></td></tr>
110 <tr class="separator:ga437bfecb0c8f550b36bae0f0ee65702d"><td class="memSeparator" colspan="2"> </td></tr>
111 </table><table class="memberdecls">
112 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
113 Functions</h2></td></tr>
114 <tr class="memitem:ga0e8d22819c818e39a2bae0ea24bb567b"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga0e8d22819c818e39a2bae0ea24bb567b">lib_imt_copy</a> (const void *src, void *dst, size_t size)</td></tr>
115 <tr class="memdesc:ga0e8d22819c818e39a2bae0ea24bb567b"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_imt_copy performs data transfers between any two internal memory locations local to the C66x CorePac: L1P, L1D, and L2. This function uses IDMA channel 1 to perform the transfer. <a href="#ga0e8d22819c818e39a2bae0ea24bb567b">More...</a><br/></td></tr>
116 <tr class="separator:ga0e8d22819c818e39a2bae0ea24bb567b"><td class="memSeparator" colspan="2"> </td></tr>
117 <tr class="memitem:ga8189ff38ebc25a3700ab04ffb612b1f2"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga8189ff38ebc25a3700ab04ffb612b1f2">lib_imt_set</a> (uint32_t pattern, void *dst, size_t size)</td></tr>
118 <tr class="memdesc:ga8189ff38ebc25a3700ab04ffb612b1f2"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_imt_set fills a block of internal memory, L1P, L1D, or L2 with a given pattern. <a href="#ga8189ff38ebc25a3700ab04ffb612b1f2">More...</a><br/></td></tr>
119 <tr class="separator:ga8189ff38ebc25a3700ab04ffb612b1f2"><td class="memSeparator" colspan="2"> </td></tr>
120 <tr class="memitem:ga320847c84fb1dd50ce67a1f5c5315043"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga320847c84fb1dd50ce67a1f5c5315043">lib_imt_wait</a> ()</td></tr>
121 <tr class="memdesc:ga320847c84fb1dd50ce67a1f5c5315043"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_imt_wait waits for completion of transfers started by lib_imt_copy or lib_imt_set. <a href="#ga320847c84fb1dd50ce67a1f5c5315043">More...</a><br/></td></tr>
122 <tr class="separator:ga320847c84fb1dd50ce67a1f5c5315043"><td class="memSeparator" colspan="2"> </td></tr>
123 <tr class="memitem:ga40fa4887611b6ceb4d57b9804d6b26fb"><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga40fa4887611b6ceb4d57b9804d6b26fb">lib_emt_init</a> ()</td></tr>
124 <tr class="memdesc:ga40fa4887611b6ceb4d57b9804d6b26fb"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_init performs all necessary initialization for external memory data transfers. <a href="#ga40fa4887611b6ceb4d57b9804d6b26fb">More...</a><br/></td></tr>
125 <tr class="separator:ga40fa4887611b6ceb4d57b9804d6b26fb"><td class="memSeparator" colspan="2"> </td></tr>
126 <tr class="memitem:ga2d74d954ddeabe505cdc1caf5fc775bc"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc">lib_emt_alloc</a> (int32_t max_linked_transfers)</td></tr>
127 <tr class="memdesc:ga2d74d954ddeabe505cdc1caf5fc775bc"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_alloc allocates a channel to do external memory data transfers. <a href="#ga2d74d954ddeabe505cdc1caf5fc775bc">More...</a><br/></td></tr>
128 <tr class="separator:ga2d74d954ddeabe505cdc1caf5fc775bc"><td class="memSeparator" colspan="2"> </td></tr>
129 <tr class="memitem:gad8adc89232fa208dc86267a4885170ed"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#gad8adc89232fa208dc86267a4885170ed">lib_emt_allocLarge</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga437bfecb0c8f550b36bae0f0ee65702d">lib_emt_ConfigLarge_t</a> *cfg, IALG_MemRec *memTab)</td></tr>
130 <tr class="memdesc:gad8adc89232fa208dc86267a4885170ed"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_allocLarge allocates a data transfer channel for external "Large" 1D2D or 2D1D transfers which have a pitch outside the range [-32768,32768]. <a href="#gad8adc89232fa208dc86267a4885170ed">More...</a><br/></td></tr>
131 <tr class="separator:gad8adc89232fa208dc86267a4885170ed"><td class="memSeparator" colspan="2"> </td></tr>
132 <tr class="memitem:ga01f4f02c995d8842a1b172670a97dc80"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga01f4f02c995d8842a1b172670a97dc80">lib_emt_getSizesLarge</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga437bfecb0c8f550b36bae0f0ee65702d">lib_emt_ConfigLarge_t</a> *cfg, IALG_MemRec *memTab)</td></tr>
133 <tr class="memdesc:ga01f4f02c995d8842a1b172670a97dc80"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_getSizesLarge gets buffer requirements for a channel used to do large transfers. <a href="#ga01f4f02c995d8842a1b172670a97dc80">More...</a><br/></td></tr>
134 <tr class="separator:ga01f4f02c995d8842a1b172670a97dc80"><td class="memSeparator" colspan="2"> </td></tr>
135 <tr class="memitem:ga97f5256765c92ada94fed76df35da8f8"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga97f5256765c92ada94fed76df35da8f8">lib_emt_free</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> h)</td></tr>
136 <tr class="memdesc:ga97f5256765c92ada94fed76df35da8f8"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_free frees a channel previously allocated for external memory data transfers. <a href="#ga97f5256765c92ada94fed76df35da8f8">More...</a><br/></td></tr>
137 <tr class="separator:ga97f5256765c92ada94fed76df35da8f8"><td class="memSeparator" colspan="2"> </td></tr>
138 <tr class="memitem:gadfa5407c4b9d573f3f67d072f8ee76da"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#gadfa5407c4b9d573f3f67d072f8ee76da">lib_emt_wait</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> h)</td></tr>
139 <tr class="memdesc:gadfa5407c4b9d573f3f67d072f8ee76da"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_wait waits for completion of external transfers started by lib_emt_copyxxx. <a href="#gadfa5407c4b9d573f3f67d072f8ee76da">More...</a><br/></td></tr>
140 <tr class="separator:gadfa5407c4b9d573f3f67d072f8ee76da"><td class="memSeparator" colspan="2"> </td></tr>
141 <tr class="memitem:gabe9856fed82fa0fc911a9fdb43e494e1"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#gabe9856fed82fa0fc911a9fdb43e494e1">lib_emt_copy1D1D</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> h, void *restrict src, void *restrict dst, int32_t num_bytes)</td></tr>
142 <tr class="memdesc:gabe9856fed82fa0fc911a9fdb43e494e1"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_copy1D1D performs a single 1D->1D data transfer in external memory. <a href="#gabe9856fed82fa0fc911a9fdb43e494e1">More...</a><br/></td></tr>
143 <tr class="separator:gabe9856fed82fa0fc911a9fdb43e494e1"><td class="memSeparator" colspan="2"> </td></tr>
144 <tr class="memitem:ga7eac2e886fc99a5be1086cb0fa6d9d4e"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga7eac2e886fc99a5be1086cb0fa6d9d4e">lib_emt_copy1D2D</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> h, void *restrict src, void *restrict dst, int32_t num_bytes, int32_t num_lines, int32_t pitch)</td></tr>
145 <tr class="memdesc:ga7eac2e886fc99a5be1086cb0fa6d9d4e"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_copy1D2D performs a 1D->2D transfer. <a href="#ga7eac2e886fc99a5be1086cb0fa6d9d4e">More...</a><br/></td></tr>
146 <tr class="separator:ga7eac2e886fc99a5be1086cb0fa6d9d4e"><td class="memSeparator" colspan="2"> </td></tr>
147 <tr class="memitem:gab6426d5afb67b7e9b4a8cff88135ab3f"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#gab6426d5afb67b7e9b4a8cff88135ab3f">lib_emt_copy2D1D</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> h, void *restrict src, void *restrict dst, int32_t num_bytes, int32_t num_lines, int32_t pitch)</td></tr>
148 <tr class="memdesc:gab6426d5afb67b7e9b4a8cff88135ab3f"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_copy2D1D performs a 2D->1D transfer. <a href="#gab6426d5afb67b7e9b4a8cff88135ab3f">More...</a><br/></td></tr>
149 <tr class="separator:gab6426d5afb67b7e9b4a8cff88135ab3f"><td class="memSeparator" colspan="2"> </td></tr>
150 <tr class="memitem:ga624053012144128867ef2a9ef808f264"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga624053012144128867ef2a9ef808f264">lib_emt_copy2D2D</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> h, void *restrict src, void *restrict dst, int32_t num_bytes, int32_t num_lines, int32_t src_pitch, int32_t dst_pitch)</td></tr>
151 <tr class="memdesc:ga624053012144128867ef2a9ef808f264"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_copy2D2D perform a 2D->2D transfer. <a href="#ga624053012144128867ef2a9ef808f264">More...</a><br/></td></tr>
152 <tr class="separator:ga624053012144128867ef2a9ef808f264"><td class="memSeparator" colspan="2"> </td></tr>
153 <tr class="memitem:ga5f4e571bc160df4f1ccf934aaeaa325b"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga5f4e571bc160df4f1ccf934aaeaa325b">lib_emt_copy1D1DLinked</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> h, void *restrict src[], void *restrict dst[], int32_t num_bytes[], int32_t num_transfers)</td></tr>
154 <tr class="memdesc:ga5f4e571bc160df4f1ccf934aaeaa325b"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_copy1D1DLinked performs a group of linked 1D->1D transfers. <a href="#ga5f4e571bc160df4f1ccf934aaeaa325b">More...</a><br/></td></tr>
155 <tr class="separator:ga5f4e571bc160df4f1ccf934aaeaa325b"><td class="memSeparator" colspan="2"> </td></tr>
156 <tr class="memitem:gaa0783528473328cd5a809bd528bea150"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#gaa0783528473328cd5a809bd528bea150">lib_emt_copy1D2DLinked</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> h, void *restrict src[], void *restrict dst[], int32_t num_bytes[], int32_t num_lines[], int32_t pitch[], int32_t num_transfers)</td></tr>
157 <tr class="memdesc:gaa0783528473328cd5a809bd528bea150"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_copy1D2DLinked performs a group of linked 1D->2D transfers. <a href="#gaa0783528473328cd5a809bd528bea150">More...</a><br/></td></tr>
158 <tr class="separator:gaa0783528473328cd5a809bd528bea150"><td class="memSeparator" colspan="2"> </td></tr>
159 <tr class="memitem:gaae7bb385b41241410af0b5e917158e7b"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#gaae7bb385b41241410af0b5e917158e7b">lib_emt_copy2D1DLinked</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> h, void *restrict src[], void *restrict dst[], int32_t num_bytes[], int32_t num_lines[], int32_t pitch[], int32_t num_transfers)</td></tr>
160 <tr class="memdesc:gaae7bb385b41241410af0b5e917158e7b"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_copy2D1DLinked performs a group of linked 2D->1D transfers. <a href="#gaae7bb385b41241410af0b5e917158e7b">More...</a><br/></td></tr>
161 <tr class="separator:gaae7bb385b41241410af0b5e917158e7b"><td class="memSeparator" colspan="2"> </td></tr>
162 <tr class="memitem:gaef9d8b5dd3d94847af102329ead8a081"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#gaef9d8b5dd3d94847af102329ead8a081">lib_emt_copy2D2DLinked</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> h, void *restrict src[], void *restrict dst[], int32_t num_bytes[], int32_t num_lines[], int32_t src_pitch[], int32_t dst_pitch[], int32_t num_transfers)</td></tr>
163 <tr class="memdesc:gaef9d8b5dd3d94847af102329ead8a081"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_copy2D2DLinked performs a group of linked 2D->2D transfers. <a href="#gaef9d8b5dd3d94847af102329ead8a081">More...</a><br/></td></tr>
164 <tr class="separator:gaef9d8b5dd3d94847af102329ead8a081"><td class="memSeparator" colspan="2"> </td></tr>
165 <tr class="memitem:ga1a987a6a5bddf31afc70ce6a0fbd17e1"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga1a987a6a5bddf31afc70ce6a0fbd17e1">lib_emt_copy1D2DLarge</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> h, void *restrict src, void *restrict dst, int32_t num_bytes, int32_t num_lines, int32_t pitch)</td></tr>
166 <tr class="memdesc:ga1a987a6a5bddf31afc70ce6a0fbd17e1"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_copy1D2DLarge performs a 1D->2D transfer when destination pitch is large (outside the range of [-32768,32767]). <a href="#ga1a987a6a5bddf31afc70ce6a0fbd17e1">More...</a><br/></td></tr>
167 <tr class="separator:ga1a987a6a5bddf31afc70ce6a0fbd17e1"><td class="memSeparator" colspan="2"> </td></tr>
168 <tr class="memitem:gab1b291a6ce214301ed50b5731590e29a"><td class="memItemLeft" align="right" valign="top">static int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#gab1b291a6ce214301ed50b5731590e29a">lib_emt_copy2D1DLarge</a> (<a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> h, void *restrict src, void *restrict dst, int32_t num_bytes, int32_t num_lines, int32_t pitch)</td></tr>
169 <tr class="memdesc:gab1b291a6ce214301ed50b5731590e29a"><td class="mdescLeft"> </td><td class="mdescRight">Function lib_emt_copy2D1DLarge performs a 2D->1D transfer when source pitch is large (outside the range of [-32768,32767]). <a href="#gab1b291a6ce214301ed50b5731590e29a">More...</a><br/></td></tr>
170 <tr class="separator:gab1b291a6ce214301ed50b5731590e29a"><td class="memSeparator" colspan="2"> </td></tr>
171 <tr class="memitem:ga6682ba347b624952140c5ead3301a8be"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga6682ba347b624952140c5ead3301a8be">LIB_EMT_SUCCESS</a>   (0)</td></tr>
172 <tr class="memdesc:ga6682ba347b624952140c5ead3301a8be"><td class="mdescLeft"> </td><td class="mdescRight">Return error codes of external memory data transfer functions. <a href="#ga6682ba347b624952140c5ead3301a8be">More...</a><br/></td></tr>
173 <tr class="separator:ga6682ba347b624952140c5ead3301a8be"><td class="memSeparator" colspan="2"> </td></tr>
174 <tr class="memitem:ga7c00744552e888fa1c1da7bafc3fb362"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga7c00744552e888fa1c1da7bafc3fb362">LIB_EMT_ERROR_INVARG</a>   (-1)</td></tr>
175 <tr class="separator:ga7c00744552e888fa1c1da7bafc3fb362"><td class="memSeparator" colspan="2"> </td></tr>
176 <tr class="memitem:gaec3d5fb167114b1c4dbf5d3a6220b0d1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#gaec3d5fb167114b1c4dbf5d3a6220b0d1">LIB_EMT_ERROR_INVCFG</a>   (-2)</td></tr>
177 <tr class="separator:gaec3d5fb167114b1c4dbf5d3a6220b0d1"><td class="memSeparator" colspan="2"> </td></tr>
178 <tr class="memitem:ga9189f70619c7a767d69d7fe8b9500e7e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga9189f70619c7a767d69d7fe8b9500e7e">LIB_EMT_ERROR_RMANINIT</a>   (-3)</td></tr>
179 <tr class="separator:ga9189f70619c7a767d69d7fe8b9500e7e"><td class="memSeparator" colspan="2"> </td></tr>
180 <tr class="memitem:ga7ca25bc939f597f627bc633b7256c05e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga7ca25bc939f597f627bc633b7256c05e">LIB_EMT_ERROR_INVHANDLE</a>   (-4)</td></tr>
181 <tr class="separator:ga7ca25bc939f597f627bc633b7256c05e"><td class="memSeparator" colspan="2"> </td></tr>
182 <tr class="memitem:ga5262fd9542b2a9beb4f9b6a7c1215a95"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga5262fd9542b2a9beb4f9b6a7c1215a95">LIB_EMT_ERROR_FREE</a>   (-5)</td></tr>
183 <tr class="separator:ga5262fd9542b2a9beb4f9b6a7c1215a95"><td class="memSeparator" colspan="2"> </td></tr>
184 <tr class="memitem:ga25622242e06ac967497797f20e3095dd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga25622242e06ac967497797f20e3095dd">LIB_EMT_ERROR_XFER</a>   (-6)</td></tr>
185 <tr class="separator:ga25622242e06ac967497797f20e3095dd"><td class="memSeparator" colspan="2"> </td></tr>
186 </table>
187 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
188 <p>LibArch Data Transfers API provides functions to perform data transfers between two memory locations which can be internal memory or external memory: </p>
189 <ul>
190 <li>internal memory data transfer: transfer data between memory locations local to the C66x CorePac: L1P, L1D, and L2.</li>
191 <li>external memory data transfer: transfer data between internal and external (not local to C66x Core) memory locations or between two external memory locations.</li>
192 </ul>
193 <dl class="section remark"><dt>Remarks</dt><dd>Since LibArch data transfer API is based on DMA, users need to maintain cache coherence when transfer involves external memory. Refer to TMS320C66x DSP Cache User Guide for more information. </dd></dl>
194 <h2 class="groupheader">Macro Definition Documentation</h2>
195 <a class="anchor" id="ga5262fd9542b2a9beb4f9b6a7c1215a95"></a>
196 <div class="memitem">
197 <div class="memproto">
198 <table class="memname">
199 <tr>
200 <td class="memname">#define LIB_EMT_ERROR_FREE   (-5)</td>
201 </tr>
202 </table>
203 </div><div class="memdoc">
204 <p>Failure to free a resource. </p>
206 </div>
207 </div>
208 <a class="anchor" id="ga7c00744552e888fa1c1da7bafc3fb362"></a>
209 <div class="memitem">
210 <div class="memproto">
211 <table class="memname">
212 <tr>
213 <td class="memname">#define LIB_EMT_ERROR_INVARG   (-1)</td>
214 </tr>
215 </table>
216 </div><div class="memdoc">
217 <p>Failure. Invalid argument. </p>
219 </div>
220 </div>
221 <a class="anchor" id="gaec3d5fb167114b1c4dbf5d3a6220b0d1"></a>
222 <div class="memitem">
223 <div class="memproto">
224 <table class="memname">
225 <tr>
226 <td class="memname">#define LIB_EMT_ERROR_INVCFG   (-2)</td>
227 </tr>
228 </table>
229 </div><div class="memdoc">
230 <p>Failure. Invalid configuration. </p>
232 </div>
233 </div>
234 <a class="anchor" id="ga7ca25bc939f597f627bc633b7256c05e"></a>
235 <div class="memitem">
236 <div class="memproto">
237 <table class="memname">
238 <tr>
239 <td class="memname">#define LIB_EMT_ERROR_INVHANDLE   (-4)</td>
240 </tr>
241 </table>
242 </div><div class="memdoc">
243 <p>Failure. Invalid handle. </p>
245 </div>
246 </div>
247 <a class="anchor" id="ga9189f70619c7a767d69d7fe8b9500e7e"></a>
248 <div class="memitem">
249 <div class="memproto">
250 <table class="memname">
251 <tr>
252 <td class="memname">#define LIB_EMT_ERROR_RMANINIT   (-3)</td>
253 </tr>
254 </table>
255 </div><div class="memdoc">
256 <p>Failure. RMAN initialization. </p>
258 </div>
259 </div>
260 <a class="anchor" id="ga25622242e06ac967497797f20e3095dd"></a>
261 <div class="memitem">
262 <div class="memproto">
263 <table class="memname">
264 <tr>
265 <td class="memname">#define LIB_EMT_ERROR_XFER   (-6)</td>
266 </tr>
267 </table>
268 </div><div class="memdoc">
269 <p>Failure to transfer. </p>
271 </div>
272 </div>
273 <a class="anchor" id="ga6682ba347b624952140c5ead3301a8be"></a>
274 <div class="memitem">
275 <div class="memproto">
276 <table class="memname">
277 <tr>
278 <td class="memname">#define LIB_EMT_SUCCESS   (0)</td>
279 </tr>
280 </table>
281 </div><div class="memdoc">
283 <p>Return error codes of external memory data transfer functions. </p>
284 <p>Success. No error. </p>
286 </div>
287 </div>
288 <h2 class="groupheader">Typedef Documentation</h2>
289 <a class="anchor" id="ga22177ad0d4d825d5ed3b26021634b221"></a>
290 <div class="memitem">
291 <div class="memproto">
292 <table class="memname">
293 <tr>
294 <td class="memname">typedef struct <a class="el" href="../../dd/da7/structlib__emt__Config__s.html">lib_emt_Config_s</a> <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga22177ad0d4d825d5ed3b26021634b221">lib_emt_Config_t</a></td>
295 </tr>
296 </table>
297 </div><div class="memdoc">
299 <p>Configuration parameters for the initialization of external memory data transfer. </p>
300 <dl class="section remark"><dt>Remarks</dt><dd>This configuration is used by function lib_emt_init. </dd></dl>
302 </div>
303 </div>
304 <a class="anchor" id="ga437bfecb0c8f550b36bae0f0ee65702d"></a>
305 <div class="memitem">
306 <div class="memproto">
307 <table class="memname">
308 <tr>
309 <td class="memname">typedef struct <a class="el" href="../../d8/d98/structlib__emt__ConfigLarge__s.html">lib_emt_ConfigLarge_s</a> <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga437bfecb0c8f550b36bae0f0ee65702d">lib_emt_ConfigLarge_t</a></td>
310 </tr>
311 </table>
312 </div><div class="memdoc">
314 <p>Configuration for large external memory data transfers. </p>
315 <dl class="section remark"><dt>Remarks</dt><dd>This configuration is used by functions lib_emt_getSizesLarge and lib_emt_allocLarge to prepare for lib_emt_copy2D1DLarge and lib_emt_copy1D2DLarge. </dd></dl>
317 </div>
318 </div>
319 <a class="anchor" id="ga3ee110c7c5d95cfe386b113d2d078ec3"></a>
320 <div class="memitem">
321 <div class="memproto">
322 <table class="memname">
323 <tr>
324 <td class="memname">typedef void* <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a></td>
325 </tr>
326 </table>
327 </div><div class="memdoc">
329 <p>Handle to an external memory data transfer instance. </p>
331 </div>
332 </div>
333 <h2 class="groupheader">Function Documentation</h2>
334 <a class="anchor" id="ga2d74d954ddeabe505cdc1caf5fc775bc"></a>
335 <div class="memitem">
336 <div class="memproto">
337 <table class="mlabels">
338 <tr>
339 <td class="mlabels-left">
340 <table class="memname">
341 <tr>
342 <td class="memname">static <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> lib_emt_alloc </td>
343 <td>(</td>
344 <td class="paramtype">int32_t </td>
345 <td class="paramname"><em>max_linked_transfers</em></td><td>)</td>
346 <td></td>
347 </tr>
348 </table>
349 </td>
350 <td class="mlabels-right">
351 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
352 </tr>
353 </table>
354 </div><div class="memdoc">
356 <p>Function lib_emt_alloc allocates a channel to do external memory data transfers. </p>
357 <dl class="params"><dt>Parameters</dt><dd>
358 <table class="params">
359 <tr><td class="paramdir">[in]</td><td class="paramname">max_linked_transfers</td><td>Maximum number of linked transfers which must be smaller than or equal to LIB_EMT_MAX_NUM_CHANNELS.</td></tr>
360 </table>
361 </dd>
362 </dl>
363 <dl class="retval"><dt>Return values</dt><dd>
364 <table class="retval">
365 <tr><td class="paramname">NULL</td><td>Failure to allocate the channel due to lack of resources </td></tr>
366 <tr><td class="paramname">non-NULL</td><td>The handle to the allocated channel</td></tr>
367 </table>
368 </dd>
369 </dl>
370 <dl class="section pre"><dt>Precondition</dt><dd><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga40fa4887611b6ceb4d57b9804d6b26fb" title="Function lib_emt_init performs all necessary initialization for external memory data transfers...">lib_emt_init()</a> must be called before this function can be called.</dd></dl>
371 <dl class="section remark"><dt>Remarks</dt><dd>Linked transfer not yet implemented for K2G. </dd></dl>
373 </div>
374 </div>
375 <a class="anchor" id="gad8adc89232fa208dc86267a4885170ed"></a>
376 <div class="memitem">
377 <div class="memproto">
378 <table class="mlabels">
379 <tr>
380 <td class="mlabels-left">
381 <table class="memname">
382 <tr>
383 <td class="memname">static <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> lib_emt_allocLarge </td>
384 <td>(</td>
385 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga437bfecb0c8f550b36bae0f0ee65702d">lib_emt_ConfigLarge_t</a> * </td>
386 <td class="paramname"><em>cfg</em>, </td>
387 </tr>
388 <tr>
389 <td class="paramkey"></td>
390 <td></td>
391 <td class="paramtype">IALG_MemRec * </td>
392 <td class="paramname"><em>memTab</em> </td>
393 </tr>
394 <tr>
395 <td></td>
396 <td>)</td>
397 <td></td><td></td>
398 </tr>
399 </table>
400 </td>
401 <td class="mlabels-right">
402 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
403 </tr>
404 </table>
405 </div><div class="memdoc">
407 <p>Function lib_emt_allocLarge allocates a data transfer channel for external "Large" 1D2D or 2D1D transfers which have a pitch outside the range [-32768,32768]. </p>
408 <dl class="params"><dt>Parameters</dt><dd>
409 <table class="params">
410 <tr><td class="paramdir">[in]</td><td class="paramname">cfg</td><td>Configuration for a channel to be allocated to do large 1D->2D or 2D->1D transfers. </td></tr>
411 <tr><td class="paramdir">[in]</td><td class="paramname">memTab</td><td>Pointer to the structure which holds the base address and properties of the buffer allocated by the user.</td></tr>
412 </table>
413 </dd>
414 </dl>
415 <dl class="retval"><dt>Return values</dt><dd>
416 <table class="retval">
417 <tr><td class="paramname">NULL</td><td>Failure to allocate the channel </td></tr>
418 <tr><td class="paramname">non-NULL</td><td>The handle to the allocated channel</td></tr>
419 </table>
420 </dd>
421 </dl>
422 <dl class="section pre"><dt>Precondition</dt><dd><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga40fa4887611b6ceb4d57b9804d6b26fb" title="Function lib_emt_init performs all necessary initialization for external memory data transfers...">lib_emt_init()</a> must be called before this function can be called. </dd>
423 <dd>
424 <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga01f4f02c995d8842a1b172670a97dc80" title="Function lib_emt_getSizesLarge gets buffer requirements for a channel used to do large transfers...">lib_emt_getSizesLarge()</a> must be called and the requested buffer be allocated satisfying the requirements specified in memTab returned by <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga01f4f02c995d8842a1b172670a97dc80" title="Function lib_emt_getSizesLarge gets buffer requirements for a channel used to do large transfers...">lib_emt_getSizesLarge()</a>. </dd></dl>
426 </div>
427 </div>
428 <a class="anchor" id="gabe9856fed82fa0fc911a9fdb43e494e1"></a>
429 <div class="memitem">
430 <div class="memproto">
431 <table class="mlabels">
432 <tr>
433 <td class="mlabels-left">
434 <table class="memname">
435 <tr>
436 <td class="memname">static int32_t lib_emt_copy1D1D </td>
437 <td>(</td>
438 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td>
439 <td class="paramname"><em>h</em>, </td>
440 </tr>
441 <tr>
442 <td class="paramkey"></td>
443 <td></td>
444 <td class="paramtype">void *restrict </td>
445 <td class="paramname"><em>src</em>, </td>
446 </tr>
447 <tr>
448 <td class="paramkey"></td>
449 <td></td>
450 <td class="paramtype">void *restrict </td>
451 <td class="paramname"><em>dst</em>, </td>
452 </tr>
453 <tr>
454 <td class="paramkey"></td>
455 <td></td>
456 <td class="paramtype">int32_t </td>
457 <td class="paramname"><em>num_bytes</em> </td>
458 </tr>
459 <tr>
460 <td></td>
461 <td>)</td>
462 <td></td><td></td>
463 </tr>
464 </table>
465 </td>
466 <td class="mlabels-right">
467 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
468 </tr>
469 </table>
470 </div><div class="memdoc">
472 <p>Function lib_emt_copy1D1D performs a single 1D->1D data transfer in external memory. </p>
473 <dl class="params"><dt>Parameters</dt><dd>
474 <table class="params">
475 <tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Handle returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>. </td></tr>
476 <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source address </td></tr>
477 <tr><td class="paramdir">[in]</td><td class="paramname">dst</td><td>Destination address </td></tr>
478 <tr><td class="paramdir">[in]</td><td class="paramname">num_bytes</td><td>Number of bytes to transfer</td></tr>
479 </table>
480 </dd>
481 </dl>
482 <dl class="section pre"><dt>Precondition</dt><dd><code>h</code> must be a handle successfully returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>.</dd></dl>
483 <dl class="retval"><dt>Return values</dt><dd>
484 <table class="retval">
485 <tr><td class="paramname">LIB_EMT_SUCCESS</td><td>Return error codes of external memory data transfer functions. Success. No error. </td></tr>
486 <tr><td class="paramname">LIB_EMT_ERROR_INVCFG</td><td>Failure. Invalid configuration. </td></tr>
487 <tr><td class="paramname">LIB_EMT_ERROR_XFER</td><td>Failure to transfer.</td></tr>
488 </table>
489 </dd>
490 </dl>
491 <dl class="section remark"><dt>Remarks</dt><dd>Perform a single 1D->1D transfer of <code>num_bytes</code> bytes from <code>src</code> address to <code>dst</code> address.</dd>
492 <dd>
493 Maximum transfer size is 65535 bytes.</dd></dl>
494 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga5f4e571bc160df4f1ccf934aaeaa325b" title="Function lib_emt_copy1D1DLinked performs a group of linked 1D->1D transfers. ">lib_emt_copy1D1DLinked</a> </dd></dl>
496 </div>
497 </div>
498 <a class="anchor" id="ga5f4e571bc160df4f1ccf934aaeaa325b"></a>
499 <div class="memitem">
500 <div class="memproto">
501 <table class="mlabels">
502 <tr>
503 <td class="mlabels-left">
504 <table class="memname">
505 <tr>
506 <td class="memname">static int32_t lib_emt_copy1D1DLinked </td>
507 <td>(</td>
508 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td>
509 <td class="paramname"><em>h</em>, </td>
510 </tr>
511 <tr>
512 <td class="paramkey"></td>
513 <td></td>
514 <td class="paramtype">void *restrict </td>
515 <td class="paramname"><em>src</em>[], </td>
516 </tr>
517 <tr>
518 <td class="paramkey"></td>
519 <td></td>
520 <td class="paramtype">void *restrict </td>
521 <td class="paramname"><em>dst</em>[], </td>
522 </tr>
523 <tr>
524 <td class="paramkey"></td>
525 <td></td>
526 <td class="paramtype">int32_t </td>
527 <td class="paramname"><em>num_bytes</em>[], </td>
528 </tr>
529 <tr>
530 <td class="paramkey"></td>
531 <td></td>
532 <td class="paramtype">int32_t </td>
533 <td class="paramname"><em>num_transfers</em> </td>
534 </tr>
535 <tr>
536 <td></td>
537 <td>)</td>
538 <td></td><td></td>
539 </tr>
540 </table>
541 </td>
542 <td class="mlabels-right">
543 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
544 </tr>
545 </table>
546 </div><div class="memdoc">
548 <p>Function lib_emt_copy1D1DLinked performs a group of linked 1D->1D transfers. </p>
549 <dl class="params"><dt>Parameters</dt><dd>
550 <table class="params">
551 <tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Handle returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>. </td></tr>
552 <tr><td class="paramdir">[in]</td><td class="paramname">src[]</td><td>Array of source addresses </td></tr>
553 <tr><td class="paramdir">[in]</td><td class="paramname">dst[]</td><td>Array of destination addresses </td></tr>
554 <tr><td class="paramdir">[in]</td><td class="paramname">num_bytes[]</td><td>Array of number of bytes to transfer </td></tr>
555 <tr><td class="paramdir">[in]</td><td class="paramname">num_transfers</td><td>Number of transfers</td></tr>
556 </table>
557 </dd>
558 </dl>
559 <dl class="retval"><dt>Return values</dt><dd>
560 <table class="retval">
561 <tr><td class="paramname">Always</td><td>Return error codes of external memory data transfer functions. Success. No error.</td></tr>
562 </table>
563 </dd>
564 </dl>
565 <dl class="section pre"><dt>Precondition</dt><dd><code>h</code> must be a handle successfully returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>.</dd></dl>
566 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="../../d1/df3/group__libarch__datatrans.html#gabe9856fed82fa0fc911a9fdb43e494e1" title="Function lib_emt_copy1D1D performs a single 1D->1D data transfer in external memory. ">lib_emt_copy1D1D</a> </dd></dl>
568 </div>
569 </div>
570 <a class="anchor" id="ga7eac2e886fc99a5be1086cb0fa6d9d4e"></a>
571 <div class="memitem">
572 <div class="memproto">
573 <table class="mlabels">
574 <tr>
575 <td class="mlabels-left">
576 <table class="memname">
577 <tr>
578 <td class="memname">static int32_t lib_emt_copy1D2D </td>
579 <td>(</td>
580 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td>
581 <td class="paramname"><em>h</em>, </td>
582 </tr>
583 <tr>
584 <td class="paramkey"></td>
585 <td></td>
586 <td class="paramtype">void *restrict </td>
587 <td class="paramname"><em>src</em>, </td>
588 </tr>
589 <tr>
590 <td class="paramkey"></td>
591 <td></td>
592 <td class="paramtype">void *restrict </td>
593 <td class="paramname"><em>dst</em>, </td>
594 </tr>
595 <tr>
596 <td class="paramkey"></td>
597 <td></td>
598 <td class="paramtype">int32_t </td>
599 <td class="paramname"><em>num_bytes</em>, </td>
600 </tr>
601 <tr>
602 <td class="paramkey"></td>
603 <td></td>
604 <td class="paramtype">int32_t </td>
605 <td class="paramname"><em>num_lines</em>, </td>
606 </tr>
607 <tr>
608 <td class="paramkey"></td>
609 <td></td>
610 <td class="paramtype">int32_t </td>
611 <td class="paramname"><em>pitch</em> </td>
612 </tr>
613 <tr>
614 <td></td>
615 <td>)</td>
616 <td></td><td></td>
617 </tr>
618 </table>
619 </td>
620 <td class="mlabels-right">
621 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
622 </tr>
623 </table>
624 </div><div class="memdoc">
626 <p>Function lib_emt_copy1D2D performs a 1D->2D transfer. </p>
627 <dl class="params"><dt>Parameters</dt><dd>
628 <table class="params">
629 <tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Handle returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>. </td></tr>
630 <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source address </td></tr>
631 <tr><td class="paramdir">[in]</td><td class="paramname">dst</td><td>Destination (two dimensional) address </td></tr>
632 <tr><td class="paramdir">[in]</td><td class="paramname">num_bytes</td><td>Number of bytes to transfer </td></tr>
633 <tr><td class="paramdir">[in]</td><td class="paramname">num_lines</td><td>Number of lines </td></tr>
634 <tr><td class="paramdir">[in]</td><td class="paramname">pitch</td><td>Pitch for destination address increment</td></tr>
635 </table>
636 </dd>
637 </dl>
638 <dl class="retval"><dt>Return values</dt><dd>
639 <table class="retval">
640 <tr><td class="paramname">Always</td><td>Return error codes of external memory data transfer functions. Success. No error.</td></tr>
641 </table>
642 </dd>
643 </dl>
644 <dl class="section pre"><dt>Precondition</dt><dd><code>h</code> must be a handle successfully returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>.</dd></dl>
645 <dl class="section remark"><dt>Remarks</dt><dd>Perform a 1D->2D transfer of <code>num_bytes</code> bytes. The source is one dimensional, and the destination is two dimensional.</dd>
646 <dd>
647 After every line of <code>num_bytes</code> is transferred, the <code>src</code> address is incremented by <code>num_bytes</code> and the <code>dst</code> address is incremented by <code>pitch</code> bytes. </dd></dl>
649 </div>
650 </div>
651 <a class="anchor" id="ga1a987a6a5bddf31afc70ce6a0fbd17e1"></a>
652 <div class="memitem">
653 <div class="memproto">
654 <table class="mlabels">
655 <tr>
656 <td class="mlabels-left">
657 <table class="memname">
658 <tr>
659 <td class="memname">static int32_t lib_emt_copy1D2DLarge </td>
660 <td>(</td>
661 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td>
662 <td class="paramname"><em>h</em>, </td>
663 </tr>
664 <tr>
665 <td class="paramkey"></td>
666 <td></td>
667 <td class="paramtype">void *restrict </td>
668 <td class="paramname"><em>src</em>, </td>
669 </tr>
670 <tr>
671 <td class="paramkey"></td>
672 <td></td>
673 <td class="paramtype">void *restrict </td>
674 <td class="paramname"><em>dst</em>, </td>
675 </tr>
676 <tr>
677 <td class="paramkey"></td>
678 <td></td>
679 <td class="paramtype">int32_t </td>
680 <td class="paramname"><em>num_bytes</em>, </td>
681 </tr>
682 <tr>
683 <td class="paramkey"></td>
684 <td></td>
685 <td class="paramtype">int32_t </td>
686 <td class="paramname"><em>num_lines</em>, </td>
687 </tr>
688 <tr>
689 <td class="paramkey"></td>
690 <td></td>
691 <td class="paramtype">int32_t </td>
692 <td class="paramname"><em>pitch</em> </td>
693 </tr>
694 <tr>
695 <td></td>
696 <td>)</td>
697 <td></td><td></td>
698 </tr>
699 </table>
700 </td>
701 <td class="mlabels-right">
702 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
703 </tr>
704 </table>
705 </div><div class="memdoc">
707 <p>Function lib_emt_copy1D2DLarge performs a 1D->2D transfer when destination pitch is large (outside the range of [-32768,32767]). </p>
708 <dl class="params"><dt>Parameters</dt><dd>
709 <table class="params">
710 <tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Handle returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#gad8adc89232fa208dc86267a4885170ed" title="Function lib_emt_allocLarge allocates a data transfer channel for external "Large" 1D2D or 2D1D trans...">lib_emt_allocLarge()</a>. </td></tr>
711 <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source address </td></tr>
712 <tr><td class="paramdir">[in]</td><td class="paramname">dst</td><td>Destination address </td></tr>
713 <tr><td class="paramdir">[in]</td><td class="paramname">num_bytes</td><td>Number of bytes to transfer </td></tr>
714 <tr><td class="paramdir">[in]</td><td class="paramname">num_lines</td><td>Number of lines </td></tr>
715 <tr><td class="paramdir">[in]</td><td class="paramname">pitch</td><td>Pitch for destination address increment</td></tr>
716 </table>
717 </dd>
718 </dl>
719 <dl class="retval"><dt>Return values</dt><dd>
720 <table class="retval">
721 <tr><td class="paramname">Always</td><td>Return error codes of external memory data transfer functions. Success. No error.</td></tr>
722 </table>
723 </dd>
724 </dl>
725 <dl class="section pre"><dt>Precondition</dt><dd><code>h</code> must be a handle successfully returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#gad8adc89232fa208dc86267a4885170ed" title="Function lib_emt_allocLarge allocates a data transfer channel for external "Large" 1D2D or 2D1D trans...">lib_emt_allocLarge()</a>.</dd></dl>
726 <dl class="section remark"><dt>Remarks</dt><dd>Perform a 1D->2D transfer of <code>num_bytes</code> bytes. The source is one dimensional, and the destination is two dimensional.</dd>
727 <dd>
728 After every line of <code>num_bytes</code> is transferred, the <code>src</code> address is incremented by <code>num_bytes</code> and the <code>dst</code> address is incremented by <code>pitch</code> bytes.</dd>
729 <dd>
730 This should be used when the pitch is outside the range of [-32768,32767]. </dd></dl>
732 </div>
733 </div>
734 <a class="anchor" id="gaa0783528473328cd5a809bd528bea150"></a>
735 <div class="memitem">
736 <div class="memproto">
737 <table class="mlabels">
738 <tr>
739 <td class="mlabels-left">
740 <table class="memname">
741 <tr>
742 <td class="memname">static int32_t lib_emt_copy1D2DLinked </td>
743 <td>(</td>
744 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td>
745 <td class="paramname"><em>h</em>, </td>
746 </tr>
747 <tr>
748 <td class="paramkey"></td>
749 <td></td>
750 <td class="paramtype">void *restrict </td>
751 <td class="paramname"><em>src</em>[], </td>
752 </tr>
753 <tr>
754 <td class="paramkey"></td>
755 <td></td>
756 <td class="paramtype">void *restrict </td>
757 <td class="paramname"><em>dst</em>[], </td>
758 </tr>
759 <tr>
760 <td class="paramkey"></td>
761 <td></td>
762 <td class="paramtype">int32_t </td>
763 <td class="paramname"><em>num_bytes</em>[], </td>
764 </tr>
765 <tr>
766 <td class="paramkey"></td>
767 <td></td>
768 <td class="paramtype">int32_t </td>
769 <td class="paramname"><em>num_lines</em>[], </td>
770 </tr>
771 <tr>
772 <td class="paramkey"></td>
773 <td></td>
774 <td class="paramtype">int32_t </td>
775 <td class="paramname"><em>pitch</em>[], </td>
776 </tr>
777 <tr>
778 <td class="paramkey"></td>
779 <td></td>
780 <td class="paramtype">int32_t </td>
781 <td class="paramname"><em>num_transfers</em> </td>
782 </tr>
783 <tr>
784 <td></td>
785 <td>)</td>
786 <td></td><td></td>
787 </tr>
788 </table>
789 </td>
790 <td class="mlabels-right">
791 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
792 </tr>
793 </table>
794 </div><div class="memdoc">
796 <p>Function lib_emt_copy1D2DLinked performs a group of linked 1D->2D transfers. </p>
797 <dl class="params"><dt>Parameters</dt><dd>
798 <table class="params">
799 <tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Handle returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>. </td></tr>
800 <tr><td class="paramdir">[in]</td><td class="paramname">src[]</td><td>Array of source addresses </td></tr>
801 <tr><td class="paramdir">[in]</td><td class="paramname">dst[]</td><td>Array of destination addresses </td></tr>
802 <tr><td class="paramdir">[in]</td><td class="paramname">num_bytes[]</td><td>Array of number of bytes to transfer </td></tr>
803 <tr><td class="paramdir">[in]</td><td class="paramname">num_lines[]</td><td>Array of lines to transfer </td></tr>
804 <tr><td class="paramdir">[in]</td><td class="paramname">pitch[]</td><td>Array of pitches for destination address increment </td></tr>
805 <tr><td class="paramdir">[in]</td><td class="paramname">num_transfers</td><td>Number of transfers</td></tr>
806 </table>
807 </dd>
808 </dl>
809 <dl class="retval"><dt>Return values</dt><dd>
810 <table class="retval">
811 <tr><td class="paramname">Always</td><td>Return error codes of external memory data transfer functions. Success. No error.</td></tr>
812 </table>
813 </dd>
814 </dl>
815 <dl class="section pre"><dt>Precondition</dt><dd><code>h</code> must be a handle successfully returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>.</dd></dl>
816 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga7eac2e886fc99a5be1086cb0fa6d9d4e" title="Function lib_emt_copy1D2D performs a 1D->2D transfer. ">lib_emt_copy1D2D</a> </dd></dl>
818 </div>
819 </div>
820 <a class="anchor" id="gab6426d5afb67b7e9b4a8cff88135ab3f"></a>
821 <div class="memitem">
822 <div class="memproto">
823 <table class="mlabels">
824 <tr>
825 <td class="mlabels-left">
826 <table class="memname">
827 <tr>
828 <td class="memname">static int32_t lib_emt_copy2D1D </td>
829 <td>(</td>
830 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td>
831 <td class="paramname"><em>h</em>, </td>
832 </tr>
833 <tr>
834 <td class="paramkey"></td>
835 <td></td>
836 <td class="paramtype">void *restrict </td>
837 <td class="paramname"><em>src</em>, </td>
838 </tr>
839 <tr>
840 <td class="paramkey"></td>
841 <td></td>
842 <td class="paramtype">void *restrict </td>
843 <td class="paramname"><em>dst</em>, </td>
844 </tr>
845 <tr>
846 <td class="paramkey"></td>
847 <td></td>
848 <td class="paramtype">int32_t </td>
849 <td class="paramname"><em>num_bytes</em>, </td>
850 </tr>
851 <tr>
852 <td class="paramkey"></td>
853 <td></td>
854 <td class="paramtype">int32_t </td>
855 <td class="paramname"><em>num_lines</em>, </td>
856 </tr>
857 <tr>
858 <td class="paramkey"></td>
859 <td></td>
860 <td class="paramtype">int32_t </td>
861 <td class="paramname"><em>pitch</em> </td>
862 </tr>
863 <tr>
864 <td></td>
865 <td>)</td>
866 <td></td><td></td>
867 </tr>
868 </table>
869 </td>
870 <td class="mlabels-right">
871 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
872 </tr>
873 </table>
874 </div><div class="memdoc">
876 <p>Function lib_emt_copy2D1D performs a 2D->1D transfer. </p>
877 <dl class="params"><dt>Parameters</dt><dd>
878 <table class="params">
879 <tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Handle returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>. </td></tr>
880 <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source (two dimensional) address </td></tr>
881 <tr><td class="paramdir">[in]</td><td class="paramname">dst</td><td>Destination address </td></tr>
882 <tr><td class="paramdir">[in]</td><td class="paramname">num_bytes</td><td>Number of bytes to transfer </td></tr>
883 <tr><td class="paramdir">[in]</td><td class="paramname">num_lines</td><td>Number of lines </td></tr>
884 <tr><td class="paramdir">[in]</td><td class="paramname">pitch</td><td>Pitch for source address increment</td></tr>
885 </table>
886 </dd>
887 </dl>
888 <dl class="retval"><dt>Return values</dt><dd>
889 <table class="retval">
890 <tr><td class="paramname">Always</td><td>Return error codes of external memory data transfer functions. Success. No error.</td></tr>
891 </table>
892 </dd>
893 </dl>
894 <dl class="section pre"><dt>Precondition</dt><dd><code>h</code> must be a handle successfully returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>.</dd></dl>
895 <dl class="section remark"><dt>Remarks</dt><dd>Perform a 2D->1D transfer of <code>num_bytes</code> bytes. The source is two dimensional, and the destination is one dimensional.</dd>
896 <dd>
897 After every line of <code>num_bytes</code> is transferred, the <code>src</code> address is incremented by <code>pitch</code> and the <code>dst</code> address is incremented by <code>num_bytes</code> bytes. </dd></dl>
899 </div>
900 </div>
901 <a class="anchor" id="gab1b291a6ce214301ed50b5731590e29a"></a>
902 <div class="memitem">
903 <div class="memproto">
904 <table class="mlabels">
905 <tr>
906 <td class="mlabels-left">
907 <table class="memname">
908 <tr>
909 <td class="memname">static int32_t lib_emt_copy2D1DLarge </td>
910 <td>(</td>
911 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td>
912 <td class="paramname"><em>h</em>, </td>
913 </tr>
914 <tr>
915 <td class="paramkey"></td>
916 <td></td>
917 <td class="paramtype">void *restrict </td>
918 <td class="paramname"><em>src</em>, </td>
919 </tr>
920 <tr>
921 <td class="paramkey"></td>
922 <td></td>
923 <td class="paramtype">void *restrict </td>
924 <td class="paramname"><em>dst</em>, </td>
925 </tr>
926 <tr>
927 <td class="paramkey"></td>
928 <td></td>
929 <td class="paramtype">int32_t </td>
930 <td class="paramname"><em>num_bytes</em>, </td>
931 </tr>
932 <tr>
933 <td class="paramkey"></td>
934 <td></td>
935 <td class="paramtype">int32_t </td>
936 <td class="paramname"><em>num_lines</em>, </td>
937 </tr>
938 <tr>
939 <td class="paramkey"></td>
940 <td></td>
941 <td class="paramtype">int32_t </td>
942 <td class="paramname"><em>pitch</em> </td>
943 </tr>
944 <tr>
945 <td></td>
946 <td>)</td>
947 <td></td><td></td>
948 </tr>
949 </table>
950 </td>
951 <td class="mlabels-right">
952 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
953 </tr>
954 </table>
955 </div><div class="memdoc">
957 <p>Function lib_emt_copy2D1DLarge performs a 2D->1D transfer when source pitch is large (outside the range of [-32768,32767]). </p>
958 <dl class="params"><dt>Parameters</dt><dd>
959 <table class="params">
960 <tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Handle returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#gad8adc89232fa208dc86267a4885170ed" title="Function lib_emt_allocLarge allocates a data transfer channel for external "Large" 1D2D or 2D1D trans...">lib_emt_allocLarge()</a>. </td></tr>
961 <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source address </td></tr>
962 <tr><td class="paramdir">[in]</td><td class="paramname">dst</td><td>Destination address </td></tr>
963 <tr><td class="paramdir">[in]</td><td class="paramname">num_bytes</td><td>Number of bytes to transfer </td></tr>
964 <tr><td class="paramdir">[in]</td><td class="paramname">num_lines</td><td>Number of lines </td></tr>
965 <tr><td class="paramdir">[in]</td><td class="paramname">pitch</td><td>Pitch</td></tr>
966 </table>
967 </dd>
968 </dl>
969 <dl class="retval"><dt>Return values</dt><dd>
970 <table class="retval">
971 <tr><td class="paramname">Always</td><td>Return error codes of external memory data transfer functions. Success. No error.</td></tr>
972 </table>
973 </dd>
974 </dl>
975 <dl class="section pre"><dt>Precondition</dt><dd><code>h</code> must be a handle successfully returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#gad8adc89232fa208dc86267a4885170ed" title="Function lib_emt_allocLarge allocates a data transfer channel for external "Large" 1D2D or 2D1D trans...">lib_emt_allocLarge()</a>.</dd></dl>
976 <dl class="section remark"><dt>Remarks</dt><dd>Perform a 2D->1D transfer of <code>num_bytes</code> bytes. The source is two dimensional, and the destination is one dimensional.</dd>
977 <dd>
978 After every line of <code>num_bytes</code> is transferred, the <code>src</code> address is incremented by <code>pitch</code> and the <code>dst</code> address is incremented by <code>num_bytes</code> bytes.</dd>
979 <dd>
980 This should be used when the pitch is outside the range of [-32768,32767]. </dd></dl>
982 </div>
983 </div>
984 <a class="anchor" id="gaae7bb385b41241410af0b5e917158e7b"></a>
985 <div class="memitem">
986 <div class="memproto">
987 <table class="mlabels">
988 <tr>
989 <td class="mlabels-left">
990 <table class="memname">
991 <tr>
992 <td class="memname">static int32_t lib_emt_copy2D1DLinked </td>
993 <td>(</td>
994 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td>
995 <td class="paramname"><em>h</em>, </td>
996 </tr>
997 <tr>
998 <td class="paramkey"></td>
999 <td></td>
1000 <td class="paramtype">void *restrict </td>
1001 <td class="paramname"><em>src</em>[], </td>
1002 </tr>
1003 <tr>
1004 <td class="paramkey"></td>
1005 <td></td>
1006 <td class="paramtype">void *restrict </td>
1007 <td class="paramname"><em>dst</em>[], </td>
1008 </tr>
1009 <tr>
1010 <td class="paramkey"></td>
1011 <td></td>
1012 <td class="paramtype">int32_t </td>
1013 <td class="paramname"><em>num_bytes</em>[], </td>
1014 </tr>
1015 <tr>
1016 <td class="paramkey"></td>
1017 <td></td>
1018 <td class="paramtype">int32_t </td>
1019 <td class="paramname"><em>num_lines</em>[], </td>
1020 </tr>
1021 <tr>
1022 <td class="paramkey"></td>
1023 <td></td>
1024 <td class="paramtype">int32_t </td>
1025 <td class="paramname"><em>pitch</em>[], </td>
1026 </tr>
1027 <tr>
1028 <td class="paramkey"></td>
1029 <td></td>
1030 <td class="paramtype">int32_t </td>
1031 <td class="paramname"><em>num_transfers</em> </td>
1032 </tr>
1033 <tr>
1034 <td></td>
1035 <td>)</td>
1036 <td></td><td></td>
1037 </tr>
1038 </table>
1039 </td>
1040 <td class="mlabels-right">
1041 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1042 </tr>
1043 </table>
1044 </div><div class="memdoc">
1046 <p>Function lib_emt_copy2D1DLinked performs a group of linked 2D->1D transfers. </p>
1047 <dl class="params"><dt>Parameters</dt><dd>
1048 <table class="params">
1049 <tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Handle returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>. </td></tr>
1050 <tr><td class="paramdir">[in]</td><td class="paramname">src[]</td><td>Array of source addresses </td></tr>
1051 <tr><td class="paramdir">[in]</td><td class="paramname">dst[]</td><td>Array of destination addresses </td></tr>
1052 <tr><td class="paramdir">[in]</td><td class="paramname">num_bytes[]</td><td>Array of number of bytes to transfer </td></tr>
1053 <tr><td class="paramdir">[in]</td><td class="paramname">num_lines[]</td><td>Array of lines to transfer </td></tr>
1054 <tr><td class="paramdir">[in]</td><td class="paramname">pitch[]</td><td>Array of pitches for source address increment </td></tr>
1055 <tr><td class="paramdir">[in]</td><td class="paramname">num_transfers</td><td>Number of transfers</td></tr>
1056 </table>
1057 </dd>
1058 </dl>
1059 <dl class="retval"><dt>Return values</dt><dd>
1060 <table class="retval">
1061 <tr><td class="paramname">Always</td><td>Return error codes of external memory data transfer functions. Success. No error.</td></tr>
1062 </table>
1063 </dd>
1064 </dl>
1065 <dl class="section pre"><dt>Precondition</dt><dd><code>h</code> must be a handle successfully returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>.</dd></dl>
1066 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="../../d1/df3/group__libarch__datatrans.html#gab6426d5afb67b7e9b4a8cff88135ab3f" title="Function lib_emt_copy2D1D performs a 2D->1D transfer. ">lib_emt_copy2D1D</a> </dd></dl>
1068 </div>
1069 </div>
1070 <a class="anchor" id="ga624053012144128867ef2a9ef808f264"></a>
1071 <div class="memitem">
1072 <div class="memproto">
1073 <table class="mlabels">
1074 <tr>
1075 <td class="mlabels-left">
1076 <table class="memname">
1077 <tr>
1078 <td class="memname">static int32_t lib_emt_copy2D2D </td>
1079 <td>(</td>
1080 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td>
1081 <td class="paramname"><em>h</em>, </td>
1082 </tr>
1083 <tr>
1084 <td class="paramkey"></td>
1085 <td></td>
1086 <td class="paramtype">void *restrict </td>
1087 <td class="paramname"><em>src</em>, </td>
1088 </tr>
1089 <tr>
1090 <td class="paramkey"></td>
1091 <td></td>
1092 <td class="paramtype">void *restrict </td>
1093 <td class="paramname"><em>dst</em>, </td>
1094 </tr>
1095 <tr>
1096 <td class="paramkey"></td>
1097 <td></td>
1098 <td class="paramtype">int32_t </td>
1099 <td class="paramname"><em>num_bytes</em>, </td>
1100 </tr>
1101 <tr>
1102 <td class="paramkey"></td>
1103 <td></td>
1104 <td class="paramtype">int32_t </td>
1105 <td class="paramname"><em>num_lines</em>, </td>
1106 </tr>
1107 <tr>
1108 <td class="paramkey"></td>
1109 <td></td>
1110 <td class="paramtype">int32_t </td>
1111 <td class="paramname"><em>src_pitch</em>, </td>
1112 </tr>
1113 <tr>
1114 <td class="paramkey"></td>
1115 <td></td>
1116 <td class="paramtype">int32_t </td>
1117 <td class="paramname"><em>dst_pitch</em> </td>
1118 </tr>
1119 <tr>
1120 <td></td>
1121 <td>)</td>
1122 <td></td><td></td>
1123 </tr>
1124 </table>
1125 </td>
1126 <td class="mlabels-right">
1127 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1128 </tr>
1129 </table>
1130 </div><div class="memdoc">
1132 <p>Function lib_emt_copy2D2D perform a 2D->2D transfer. </p>
1133 <dl class="params"><dt>Parameters</dt><dd>
1134 <table class="params">
1135 <tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Handle returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>. </td></tr>
1136 <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source address </td></tr>
1137 <tr><td class="paramdir">[in]</td><td class="paramname">dst</td><td>Destination address </td></tr>
1138 <tr><td class="paramdir">[in]</td><td class="paramname">num_bytes</td><td>Number of bytes to transfer </td></tr>
1139 <tr><td class="paramdir">[in]</td><td class="paramname">num_lines</td><td>Number of lines </td></tr>
1140 <tr><td class="paramdir">[in]</td><td class="paramname">src_pitch</td><td>Pitch for source address increment </td></tr>
1141 <tr><td class="paramdir">[in]</td><td class="paramname">dst_pitch</td><td>Pitch for destination address increment</td></tr>
1142 </table>
1143 </dd>
1144 </dl>
1145 <dl class="retval"><dt>Return values</dt><dd>
1146 <table class="retval">
1147 <tr><td class="paramname">LIB_EMT_SUCCESS</td><td>Return error codes of external memory data transfer functions. Success. No error. </td></tr>
1148 <tr><td class="paramname">LIB_EMT_ERROR_INVCFG</td><td>Failure. Invalid configuration. </td></tr>
1149 <tr><td class="paramname">LIB_EMT_ERROR_XFER</td><td>Failure to transfer.</td></tr>
1150 </table>
1151 </dd>
1152 </dl>
1153 <dl class="section pre"><dt>Precondition</dt><dd><code>h</code> must be a handle successfully returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>.</dd></dl>
1154 <dl class="section remark"><dt>Remarks</dt><dd>Perform a 2D->2D transfer of <code>num_bytes</code> bytes. The source and destination are both two dimensional.</dd>
1155 <dd>
1156 After every line of <code>num_bytes</code> is transferred, the <code>src</code> address is incremented by <code>src_pitch</code> bytes and the <code>dst</code> address is incremented by <code>dst_pitch</code> bytes. </dd></dl>
1158 </div>
1159 </div>
1160 <a class="anchor" id="gaef9d8b5dd3d94847af102329ead8a081"></a>
1161 <div class="memitem">
1162 <div class="memproto">
1163 <table class="mlabels">
1164 <tr>
1165 <td class="mlabels-left">
1166 <table class="memname">
1167 <tr>
1168 <td class="memname">static int32_t lib_emt_copy2D2DLinked </td>
1169 <td>(</td>
1170 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td>
1171 <td class="paramname"><em>h</em>, </td>
1172 </tr>
1173 <tr>
1174 <td class="paramkey"></td>
1175 <td></td>
1176 <td class="paramtype">void *restrict </td>
1177 <td class="paramname"><em>src</em>[], </td>
1178 </tr>
1179 <tr>
1180 <td class="paramkey"></td>
1181 <td></td>
1182 <td class="paramtype">void *restrict </td>
1183 <td class="paramname"><em>dst</em>[], </td>
1184 </tr>
1185 <tr>
1186 <td class="paramkey"></td>
1187 <td></td>
1188 <td class="paramtype">int32_t </td>
1189 <td class="paramname"><em>num_bytes</em>[], </td>
1190 </tr>
1191 <tr>
1192 <td class="paramkey"></td>
1193 <td></td>
1194 <td class="paramtype">int32_t </td>
1195 <td class="paramname"><em>num_lines</em>[], </td>
1196 </tr>
1197 <tr>
1198 <td class="paramkey"></td>
1199 <td></td>
1200 <td class="paramtype">int32_t </td>
1201 <td class="paramname"><em>src_pitch</em>[], </td>
1202 </tr>
1203 <tr>
1204 <td class="paramkey"></td>
1205 <td></td>
1206 <td class="paramtype">int32_t </td>
1207 <td class="paramname"><em>dst_pitch</em>[], </td>
1208 </tr>
1209 <tr>
1210 <td class="paramkey"></td>
1211 <td></td>
1212 <td class="paramtype">int32_t </td>
1213 <td class="paramname"><em>num_transfers</em> </td>
1214 </tr>
1215 <tr>
1216 <td></td>
1217 <td>)</td>
1218 <td></td><td></td>
1219 </tr>
1220 </table>
1221 </td>
1222 <td class="mlabels-right">
1223 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1224 </tr>
1225 </table>
1226 </div><div class="memdoc">
1228 <p>Function lib_emt_copy2D2DLinked performs a group of linked 2D->2D transfers. </p>
1229 <dl class="params"><dt>Parameters</dt><dd>
1230 <table class="params">
1231 <tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Handle returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>. </td></tr>
1232 <tr><td class="paramdir">[in]</td><td class="paramname">src[]</td><td>Array of source addresses </td></tr>
1233 <tr><td class="paramdir">[in]</td><td class="paramname">dst[]</td><td>Array of destination addresses </td></tr>
1234 <tr><td class="paramdir">[in]</td><td class="paramname">num_bytes[]</td><td>Array of number of bytes to transfer </td></tr>
1235 <tr><td class="paramdir">[in]</td><td class="paramname">num_lines[]</td><td>Array of lines to transfer </td></tr>
1236 <tr><td class="paramdir">[in]</td><td class="paramname">src_pitch[]</td><td>Array of source pitches </td></tr>
1237 <tr><td class="paramdir">[in]</td><td class="paramname">dst_pitch[]</td><td>Array of destination pitches </td></tr>
1238 <tr><td class="paramdir">[in]</td><td class="paramname">num_transfers</td><td>Number of transfers</td></tr>
1239 </table>
1240 </dd>
1241 </dl>
1242 <dl class="retval"><dt>Return values</dt><dd>
1243 <table class="retval">
1244 <tr><td class="paramname">Always</td><td>Return error codes of external memory data transfer functions. Success. No error.</td></tr>
1245 </table>
1246 </dd>
1247 </dl>
1248 <dl class="section pre"><dt>Precondition</dt><dd><code>h</code> must be a handle successfully returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a>.</dd></dl>
1249 <dl class="section see"><dt>See Also</dt><dd>lib_emt_copy2D2DSep </dd></dl>
1251 </div>
1252 </div>
1253 <a class="anchor" id="ga97f5256765c92ada94fed76df35da8f8"></a>
1254 <div class="memitem">
1255 <div class="memproto">
1256 <table class="mlabels">
1257 <tr>
1258 <td class="mlabels-left">
1259 <table class="memname">
1260 <tr>
1261 <td class="memname">static int32_t lib_emt_free </td>
1262 <td>(</td>
1263 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td>
1264 <td class="paramname"><em>h</em></td><td>)</td>
1265 <td></td>
1266 </tr>
1267 </table>
1268 </td>
1269 <td class="mlabels-right">
1270 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1271 </tr>
1272 </table>
1273 </div><div class="memdoc">
1275 <p>Function lib_emt_free frees a channel previously allocated for external memory data transfers. </p>
1276 <dl class="params"><dt>Parameters</dt><dd>
1277 <table class="params">
1278 <tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Handle returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a> or <a class="el" href="../../d1/df3/group__libarch__datatrans.html#gad8adc89232fa208dc86267a4885170ed" title="Function lib_emt_allocLarge allocates a data transfer channel for external "Large" 1D2D or 2D1D trans...">lib_emt_allocLarge()</a>.</td></tr>
1279 </table>
1280 </dd>
1281 </dl>
1282 <dl class="retval"><dt>Return values</dt><dd>
1283 <table class="retval">
1284 <tr><td class="paramname">LIB_EMT_SUCCESS</td><td>Return error codes of external memory data transfer functions. Success. No error. </td></tr>
1285 <tr><td class="paramname">LIB_EMT_ERROR_INVHANDLE</td><td>Failure. Invalid handle. </td></tr>
1286 <tr><td class="paramname">LIB_EMT_ERROR_FREE</td><td>Failure to free a resource.</td></tr>
1287 </table>
1288 </dd>
1289 </dl>
1290 <dl class="section pre"><dt>Precondition</dt><dd><code>h</code> must be a handle successfully returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a> or <a class="el" href="../../d1/df3/group__libarch__datatrans.html#gad8adc89232fa208dc86267a4885170ed" title="Function lib_emt_allocLarge allocates a data transfer channel for external "Large" 1D2D or 2D1D trans...">lib_emt_allocLarge()</a>. </dd></dl>
1292 </div>
1293 </div>
1294 <a class="anchor" id="ga01f4f02c995d8842a1b172670a97dc80"></a>
1295 <div class="memitem">
1296 <div class="memproto">
1297 <table class="mlabels">
1298 <tr>
1299 <td class="mlabels-left">
1300 <table class="memname">
1301 <tr>
1302 <td class="memname">static int32_t lib_emt_getSizesLarge </td>
1303 <td>(</td>
1304 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga437bfecb0c8f550b36bae0f0ee65702d">lib_emt_ConfigLarge_t</a> * </td>
1305 <td class="paramname"><em>cfg</em>, </td>
1306 </tr>
1307 <tr>
1308 <td class="paramkey"></td>
1309 <td></td>
1310 <td class="paramtype">IALG_MemRec * </td>
1311 <td class="paramname"><em>memTab</em> </td>
1312 </tr>
1313 <tr>
1314 <td></td>
1315 <td>)</td>
1316 <td></td><td></td>
1317 </tr>
1318 </table>
1319 </td>
1320 <td class="mlabels-right">
1321 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1322 </tr>
1323 </table>
1324 </div><div class="memdoc">
1326 <p>Function lib_emt_getSizesLarge gets buffer requirements for a channel used to do large transfers. </p>
1327 <dl class="params"><dt>Parameters</dt><dd>
1328 <table class="params">
1329 <tr><td class="paramdir">[in]</td><td class="paramname">cfg</td><td>Configuration for a channel to be allocated to do large 1D->2D or 2D->1D transfers. </td></tr>
1330 <tr><td class="paramdir">[out]</td><td class="paramname">memTab</td><td>Returned structure that holds the buffer requirements for a channel to do large 1D->2D or 2D->1D transfers.</td></tr>
1331 </table>
1332 </dd>
1333 </dl>
1334 <dl class="retval"><dt>Return values</dt><dd>
1335 <table class="retval">
1336 <tr><td class="paramname">LIB_EMT_SUCCESS</td><td>Return error codes of external memory data transfer functions. Success. No error. </td></tr>
1337 <tr><td class="paramname">LIB_EMT_ERROR_INVCFG</td><td>Failure. Invalid configuration.</td></tr>
1338 </table>
1339 </dd>
1340 </dl>
1341 <dl class="section remark"><dt>Remarks</dt><dd>The returned array memTab has only one element in it. A buffer satisfying the requirements specified in memTab[0] must be provided to <a class="el" href="../../d1/df3/group__libarch__datatrans.html#gad8adc89232fa208dc86267a4885170ed" title="Function lib_emt_allocLarge allocates a data transfer channel for external "Large" 1D2D or 2D1D trans...">lib_emt_allocLarge()</a> along with the corresponding lib_emt_ConfigLarge_t structure. </dd></dl>
1343 </div>
1344 </div>
1345 <a class="anchor" id="ga40fa4887611b6ceb4d57b9804d6b26fb"></a>
1346 <div class="memitem">
1347 <div class="memproto">
1348 <table class="mlabels">
1349 <tr>
1350 <td class="mlabels-left">
1351 <table class="memname">
1352 <tr>
1353 <td class="memname">static int lib_emt_init </td>
1354 <td>(</td>
1355 <td class="paramname"></td><td>)</td>
1356 <td></td>
1357 </tr>
1358 </table>
1359 </td>
1360 <td class="mlabels-right">
1361 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1362 </tr>
1363 </table>
1364 </div><div class="memdoc">
1366 <p>Function lib_emt_init performs all necessary initialization for external memory data transfers. </p>
1367 <dl class="retval"><dt>Return values</dt><dd>
1368 <table class="retval">
1369 <tr><td class="paramname">LIB_EMT_SUCCESS</td><td>Return error codes of external memory data transfer functions. Success. No error. </td></tr>
1370 <tr><td class="paramname">LIB_EMT_ERROR_INVARG</td><td>Failure. Invalid argument. </td></tr>
1371 <tr><td class="paramname">LIB_EMT_ERROR_INVCFG</td><td>Failure. Invalid configuration. </td></tr>
1372 <tr><td class="paramname">LIB_EMT_ERROR_RMANINIT</td><td>Failure. RMAN initialization. </td></tr>
1373 </table>
1374 </dd>
1375 </dl>
1377 </div>
1378 </div>
1379 <a class="anchor" id="gadfa5407c4b9d573f3f67d072f8ee76da"></a>
1380 <div class="memitem">
1381 <div class="memproto">
1382 <table class="mlabels">
1383 <tr>
1384 <td class="mlabels-left">
1385 <table class="memname">
1386 <tr>
1387 <td class="memname">static int32_t lib_emt_wait </td>
1388 <td>(</td>
1389 <td class="paramtype"><a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga3ee110c7c5d95cfe386b113d2d078ec3">lib_emt_Handle</a> </td>
1390 <td class="paramname"><em>h</em></td><td>)</td>
1391 <td></td>
1392 </tr>
1393 </table>
1394 </td>
1395 <td class="mlabels-right">
1396 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1397 </tr>
1398 </table>
1399 </div><div class="memdoc">
1401 <p>Function lib_emt_wait waits for completion of external transfers started by lib_emt_copyxxx. </p>
1402 <dl class="params"><dt>Parameters</dt><dd>
1403 <table class="params">
1404 <tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Handle returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a> or <a class="el" href="../../d1/df3/group__libarch__datatrans.html#gad8adc89232fa208dc86267a4885170ed" title="Function lib_emt_allocLarge allocates a data transfer channel for external "Large" 1D2D or 2D1D trans...">lib_emt_allocLarge()</a>.</td></tr>
1405 </table>
1406 </dd>
1407 </dl>
1408 <dl class="section pre"><dt>Precondition</dt><dd><code>h</code> must be a handle successfully returned from <a class="el" href="../../d1/df3/group__libarch__datatrans.html#ga2d74d954ddeabe505cdc1caf5fc775bc" title="Function lib_emt_alloc allocates a channel to do external memory data transfers. ">lib_emt_alloc()</a> or <a class="el" href="../../d1/df3/group__libarch__datatrans.html#gad8adc89232fa208dc86267a4885170ed" title="Function lib_emt_allocLarge allocates a data transfer channel for external "Large" 1D2D or 2D1D trans...">lib_emt_allocLarge()</a>.</dd></dl>
1409 <dl class="section remark"><dt>Remarks</dt><dd>This function waits for all transfers on a specific channel to complete. It is a blocking call. </dd></dl>
1411 </div>
1412 </div>
1413 <a class="anchor" id="ga0e8d22819c818e39a2bae0ea24bb567b"></a>
1414 <div class="memitem">
1415 <div class="memproto">
1416 <table class="mlabels">
1417 <tr>
1418 <td class="mlabels-left">
1419 <table class="memname">
1420 <tr>
1421 <td class="memname">static void lib_imt_copy </td>
1422 <td>(</td>
1423 <td class="paramtype">const void * </td>
1424 <td class="paramname"><em>src</em>, </td>
1425 </tr>
1426 <tr>
1427 <td class="paramkey"></td>
1428 <td></td>
1429 <td class="paramtype">void * </td>
1430 <td class="paramname"><em>dst</em>, </td>
1431 </tr>
1432 <tr>
1433 <td class="paramkey"></td>
1434 <td></td>
1435 <td class="paramtype">size_t </td>
1436 <td class="paramname"><em>size</em> </td>
1437 </tr>
1438 <tr>
1439 <td></td>
1440 <td>)</td>
1441 <td></td><td></td>
1442 </tr>
1443 </table>
1444 </td>
1445 <td class="mlabels-right">
1446 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1447 </tr>
1448 </table>
1449 </div><div class="memdoc">
1451 <p>Function lib_imt_copy performs data transfers between any two internal memory locations local to the C66x CorePac: L1P, L1D, and L2. This function uses IDMA channel 1 to perform the transfer. </p>
1452 <dl class="params"><dt>Parameters</dt><dd>
1453 <table class="params">
1454 <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>source address of transfer </td></tr>
1455 <tr><td class="paramdir">[in]</td><td class="paramname">dst</td><td>destination address of transfer </td></tr>
1456 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>size of transfer in minimum access units</td></tr>
1457 </table>
1458 </dd>
1459 </dl>
1460 <dl class="section remark"><dt>Remarks</dt><dd>This function waits for the pending transfer (if any) to become active. It is a blocking call. </dd>
1461 <dd>
1462 There is no need to allocate a channel before using this function. </dd>
1463 <dd>
1464 Both source and destination addresses increment linearly throughout the transfer. </dd>
1465 <dd>
1466 No DSP interrupt is generated after the transfer. Function lib_imt_wait can be called to wait for transfer completion before data in destination memory is used. </dd>
1467 <dd>
1468 During any conflicts between CPU and DMA accesses, transfer started by this function has the lowest priority. </dd></dl>
1470 </div>
1471 </div>
1472 <a class="anchor" id="ga8189ff38ebc25a3700ab04ffb612b1f2"></a>
1473 <div class="memitem">
1474 <div class="memproto">
1475 <table class="mlabels">
1476 <tr>
1477 <td class="mlabels-left">
1478 <table class="memname">
1479 <tr>
1480 <td class="memname">static void lib_imt_set </td>
1481 <td>(</td>
1482 <td class="paramtype">uint32_t </td>
1483 <td class="paramname"><em>pattern</em>, </td>
1484 </tr>
1485 <tr>
1486 <td class="paramkey"></td>
1487 <td></td>
1488 <td class="paramtype">void * </td>
1489 <td class="paramname"><em>dst</em>, </td>
1490 </tr>
1491 <tr>
1492 <td class="paramkey"></td>
1493 <td></td>
1494 <td class="paramtype">size_t </td>
1495 <td class="paramname"><em>size</em> </td>
1496 </tr>
1497 <tr>
1498 <td></td>
1499 <td>)</td>
1500 <td></td><td></td>
1501 </tr>
1502 </table>
1503 </td>
1504 <td class="mlabels-right">
1505 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1506 </tr>
1507 </table>
1508 </div><div class="memdoc">
1510 <p>Function lib_imt_set fills a block of internal memory, L1P, L1D, or L2 with a given pattern. </p>
1511 <dl class="params"><dt>Parameters</dt><dd>
1512 <table class="params">
1513 <tr><td class="paramdir">[in]</td><td class="paramname">pattern</td><td>Filling pattern </td></tr>
1514 <tr><td class="paramdir">[in]</td><td class="paramname">dst</td><td>Address of the memory to be filled </td></tr>
1515 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>size of memory filling in minimum access units</td></tr>
1516 </table>
1517 </dd>
1518 </dl>
1519 <dl class="section remark"><dt>Remarks</dt><dd>This function waits for the pending transfer to become active. It is a blocking call. </dd>
1520 <dd>
1521 Refer to remarks of lib_imt_copy. </dd></dl>
1523 </div>
1524 </div>
1525 <a class="anchor" id="ga320847c84fb1dd50ce67a1f5c5315043"></a>
1526 <div class="memitem">
1527 <div class="memproto">
1528 <table class="mlabels">
1529 <tr>
1530 <td class="mlabels-left">
1531 <table class="memname">
1532 <tr>
1533 <td class="memname">static void lib_imt_wait </td>
1534 <td>(</td>
1535 <td class="paramname"></td><td>)</td>
1536 <td></td>
1537 </tr>
1538 </table>
1539 </td>
1540 <td class="mlabels-right">
1541 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1542 </tr>
1543 </table>
1544 </div><div class="memdoc">
1546 <p>Function lib_imt_wait waits for completion of transfers started by lib_imt_copy or lib_imt_set. </p>
1547 <dl class="section remark"><dt>Remarks</dt><dd>This function waits for both pending and active transfers to complete. It is a blocking call. </dd></dl>
1549 </div>
1550 </div>
1551 </div><!-- contents -->
1552 <!-- start footer part -->
1553 <hr class="footer"/><address class="footer"><small>
1554 Generated on Mon Mar 6 2017 14:10:51 for LibArch by  <a href="http://www.doxygen.org/index.html">
1555 <img class="footer" src="../../doxygen.png" alt="doxygen"/>
1556 </a> 1.8.6
1557 </small></address>
1558 </body>
1559 </html>