1 <!-- HTML header for doxygen 1.8.20-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
5 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
7 <meta name="generator" content="Doxygen 1.9.4"/>
8 <meta name="viewport" content="width=device-width, initial-scale=1"/>
9 <title>Raspberry Pi Pico SDK: fifo</title>
10 <!-- <link href="tabs.css" rel="stylesheet" type="text/css"/> -->
11 <script type="text/javascript" src="jquery.js"></script>
12 <script type="text/javascript" src="dynsections.js"></script>
13 <link href="navtree.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="resize.js"></script>
15 <script type="text/javascript" src="navtreedata.js"></script>
16 <script type="text/javascript" src="navtree.js"></script>
17 <link href="search/search.css" rel="stylesheet" type="text/css"/>
18 <script type="text/javascript" src="search/searchdata.js"></script>
19 <script type="text/javascript" src="search/search.js"></script>
20 <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
21 <link href="doxygen.css" rel="stylesheet" type="text/css" />
22 <link href="normalise.css" rel="stylesheet" type="text/css"/>
23 <link href="main.css" rel="stylesheet" type="text/css"/>
24 <link href="styles.css" rel="stylesheet" type="text/css"/>
27 <div class="navigation-mobile">
28 <div class="logo--mobile">
29 <a href="/"><img src="logo-mobile.svg" alt="Raspberry Pi"></a>
31 <div class="navigation-toggle">
32 <span class="line-1"></span>
36 <span class="line-3"></span>
39 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
41 <a href="index.html"> <img src="logo.svg" alt="Raspberry Pi"></a>
42 <span style="display: inline-block; margin-top: 10px;">
46 <div class="navigation-footer">
47 <img src="logo-mobile.svg" alt="Raspberry Pi">
48 <a href="https://www.raspberrypi.com/" target="_blank">By Raspberry Pi Ltd</a>
50 <!-- <div class="search">
52 <input type="search" name="search" id="search" placeholder="Search">
53 <input type="submit" value="Search">
56 <!-- Generated by Doxygen 1.9.4 -->
57 <script type="text/javascript">
58 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
59 var searchBox = new SearchBox("searchBox", "search",'Search','.html');
62 <script type="text/javascript" src="menudata.js"></script>
63 <script type="text/javascript" src="menu.js"></script>
64 <script type="text/javascript">
65 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
67 initMenu('',true,false,'search.php','Search');
68 $(document).ready(function() { init_search(); });
72 <div id="main-nav"></div>
74 <div id="side-nav" class="ui-resizable side-nav-resizable">
76 <div id="nav-tree-contents">
77 <div id="nav-sync" class="sync"></div>
80 <div id="splitbar" style="-moz-user-select:none;"
81 class="ui-resizable-handle">
84 <script type="text/javascript">
85 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
86 $(document).ready(function(){initNavTree('group__multicore__fifo.html',''); initResizable(); });
89 <div id="doc-content">
90 <!-- window showing the filter options -->
91 <div id="MSearchSelectWindow"
92 onmouseover="return searchBox.OnSearchSelectShow()"
93 onmouseout="return searchBox.OnSearchSelectHide()"
94 onkeydown="return searchBox.OnSearchSelectKey(event)">
97 <!-- iframe showing the search results (closed by default) -->
98 <div id="MSearchResultsWindow">
99 <iframe src="javascript:void(0)" frameborder="0"
100 name="MSearchResults" id="MSearchResults">
105 <div class="summary">
106 <a href="#func-members">Functions</a> </div>
107 <div class="headertitle"><div class="title">fifo<div class="ingroups"><a class="el" href="group__high__level.html">High Level APIs</a> » <a class="el" href="group__pico__multicore.html">pico_multicore</a></div></div></div>
109 <div class="contents">
111 <p>Functions for the inter-core FIFOs.
112 <a href="#details">More...</a></p>
113 <table class="memberdecls">
114 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
115 Functions</h2></td></tr>
116 <tr class="memitem:gaffd246b81370d37fc13181a561303834"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__multicore__fifo.html#gaffd246b81370d37fc13181a561303834">multicore_fifo_rvalid</a> (void)</td></tr>
117 <tr class="memdesc:gaffd246b81370d37fc13181a561303834"><td class="mdescLeft"> </td><td class="mdescRight">Check the read FIFO to see if there is data available (sent by the other core) <a href="group__multicore__fifo.html#gaffd246b81370d37fc13181a561303834">More...</a><br /></td></tr>
118 <tr class="separator:gaffd246b81370d37fc13181a561303834"><td class="memSeparator" colspan="2"> </td></tr>
119 <tr class="memitem:ga6065367210695961c11ab3706140d3a9"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__multicore__fifo.html#ga6065367210695961c11ab3706140d3a9">multicore_fifo_wready</a> (void)</td></tr>
120 <tr class="memdesc:ga6065367210695961c11ab3706140d3a9"><td class="mdescLeft"> </td><td class="mdescRight">Check the write FIFO to see if it has space for more data. <a href="group__multicore__fifo.html#ga6065367210695961c11ab3706140d3a9">More...</a><br /></td></tr>
121 <tr class="separator:ga6065367210695961c11ab3706140d3a9"><td class="memSeparator" colspan="2"> </td></tr>
122 <tr class="memitem:ga134933a693c53c4f94c9d3cd3cabfc79"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__multicore__fifo.html#ga134933a693c53c4f94c9d3cd3cabfc79">multicore_fifo_push_blocking</a> (uint32_t data)</td></tr>
123 <tr class="memdesc:ga134933a693c53c4f94c9d3cd3cabfc79"><td class="mdescLeft"> </td><td class="mdescRight">Push data on to the write FIFO (data to the other core). <a href="group__multicore__fifo.html#ga134933a693c53c4f94c9d3cd3cabfc79">More...</a><br /></td></tr>
124 <tr class="separator:ga134933a693c53c4f94c9d3cd3cabfc79"><td class="memSeparator" colspan="2"> </td></tr>
125 <tr class="memitem:ga559050fb6fd4a37ccc81ef6272cbf34b"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__multicore__fifo.html#ga559050fb6fd4a37ccc81ef6272cbf34b">multicore_fifo_push_blocking_inline</a> (uint32_t data)</td></tr>
126 <tr class="memdesc:ga559050fb6fd4a37ccc81ef6272cbf34b"><td class="mdescLeft"> </td><td class="mdescRight">Push data on to the write FIFO (data to the other core). <a href="group__multicore__fifo.html#ga559050fb6fd4a37ccc81ef6272cbf34b">More...</a><br /></td></tr>
127 <tr class="separator:ga559050fb6fd4a37ccc81ef6272cbf34b"><td class="memSeparator" colspan="2"> </td></tr>
128 <tr class="memitem:ga0c32cfcd182d5f1d3a25b6fb503352b7"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__multicore__fifo.html#ga0c32cfcd182d5f1d3a25b6fb503352b7">multicore_fifo_push_timeout_us</a> (uint32_t data, uint64_t timeout_us)</td></tr>
129 <tr class="memdesc:ga0c32cfcd182d5f1d3a25b6fb503352b7"><td class="mdescLeft"> </td><td class="mdescRight">Push data on to the write FIFO (data to the other core) with timeout. <a href="group__multicore__fifo.html#ga0c32cfcd182d5f1d3a25b6fb503352b7">More...</a><br /></td></tr>
130 <tr class="separator:ga0c32cfcd182d5f1d3a25b6fb503352b7"><td class="memSeparator" colspan="2"> </td></tr>
131 <tr class="memitem:ga929272dd1056d8ae05667beda4adb0fc"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__multicore__fifo.html#ga929272dd1056d8ae05667beda4adb0fc">multicore_fifo_pop_blocking</a> (void)</td></tr>
132 <tr class="memdesc:ga929272dd1056d8ae05667beda4adb0fc"><td class="mdescLeft"> </td><td class="mdescRight">Pop data from the read FIFO (data from the other core). <a href="group__multicore__fifo.html#ga929272dd1056d8ae05667beda4adb0fc">More...</a><br /></td></tr>
133 <tr class="separator:ga929272dd1056d8ae05667beda4adb0fc"><td class="memSeparator" colspan="2"> </td></tr>
134 <tr class="memitem:ga282badad31e14f5b593ec1ddffae08f5"><td class="memItemLeft" align="right" valign="top">static uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__multicore__fifo.html#ga282badad31e14f5b593ec1ddffae08f5">multicore_fifo_pop_blocking_inline</a> (void)</td></tr>
135 <tr class="memdesc:ga282badad31e14f5b593ec1ddffae08f5"><td class="mdescLeft"> </td><td class="mdescRight">Pop data from the read FIFO (data from the other core). <a href="group__multicore__fifo.html#ga282badad31e14f5b593ec1ddffae08f5">More...</a><br /></td></tr>
136 <tr class="separator:ga282badad31e14f5b593ec1ddffae08f5"><td class="memSeparator" colspan="2"> </td></tr>
137 <tr class="memitem:ga27824f253c72ae50ae97e6f516220c60"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__multicore__fifo.html#ga27824f253c72ae50ae97e6f516220c60">multicore_fifo_pop_timeout_us</a> (uint64_t timeout_us, uint32_t *out)</td></tr>
138 <tr class="memdesc:ga27824f253c72ae50ae97e6f516220c60"><td class="mdescLeft"> </td><td class="mdescRight">Pop data from the read FIFO (data from the other core) with timeout. <a href="group__multicore__fifo.html#ga27824f253c72ae50ae97e6f516220c60">More...</a><br /></td></tr>
139 <tr class="separator:ga27824f253c72ae50ae97e6f516220c60"><td class="memSeparator" colspan="2"> </td></tr>
140 <tr class="memitem:ga436e676544edeafb2f2f9e7245282cbf"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__multicore__fifo.html#ga436e676544edeafb2f2f9e7245282cbf">multicore_fifo_drain</a> (void)</td></tr>
141 <tr class="memdesc:ga436e676544edeafb2f2f9e7245282cbf"><td class="mdescLeft"> </td><td class="mdescRight">Discard any data in the read FIFO. <a href="group__multicore__fifo.html#ga436e676544edeafb2f2f9e7245282cbf">More...</a><br /></td></tr>
142 <tr class="separator:ga436e676544edeafb2f2f9e7245282cbf"><td class="memSeparator" colspan="2"> </td></tr>
143 <tr class="memitem:ga96583311e8237cf590d9c78052b288eb"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__multicore__fifo.html#ga96583311e8237cf590d9c78052b288eb">multicore_fifo_clear_irq</a> (void)</td></tr>
144 <tr class="memdesc:ga96583311e8237cf590d9c78052b288eb"><td class="mdescLeft"> </td><td class="mdescRight">Clear FIFO interrupt. <a href="group__multicore__fifo.html#ga96583311e8237cf590d9c78052b288eb">More...</a><br /></td></tr>
145 <tr class="separator:ga96583311e8237cf590d9c78052b288eb"><td class="memSeparator" colspan="2"> </td></tr>
146 <tr class="memitem:ga7c5944bf2b7266465dfe6d4bac4b1c58"><td class="memItemLeft" align="right" valign="top">static uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__multicore__fifo.html#ga7c5944bf2b7266465dfe6d4bac4b1c58">multicore_fifo_get_status</a> (void)</td></tr>
147 <tr class="memdesc:ga7c5944bf2b7266465dfe6d4bac4b1c58"><td class="mdescLeft"> </td><td class="mdescRight">Get FIFO statuses. <a href="group__multicore__fifo.html#ga7c5944bf2b7266465dfe6d4bac4b1c58">More...</a><br /></td></tr>
148 <tr class="separator:ga7c5944bf2b7266465dfe6d4bac4b1c58"><td class="memSeparator" colspan="2"> </td></tr>
150 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
151 <p >Functions for the inter-core FIFOs. </p>
152 <p >RP-series microcontrollers contains two FIFOs for passing data, messages or ordered events between the two cores. Each FIFO is 32 bits wide, and 8 entries deep on the RP2040, and 4 entries deep on the RP2350. One of the FIFOs can only be written by core 0, and read by core 1. The other can only be written by core 1, and read by core 0.</p>
153 <dl class="section note"><dt>Note</dt><dd>The inter-core FIFOs are a very precious resource and are frequently used for SDK functionality (e.g. during core 1 launch or by the <a class="el" href="group__multicore__lockout.html">lockout</a> functions). Additionally they are often required for the exclusive use of an RTOS (e.g. FreeRTOS SMP). For these reasons it is suggested that you do not use the FIFO for your own purposes unless none of the above concerns apply; the majority of cases for transferring data between cores can be eqaully well handled by using a <a class="el" href="group__queue.html">queue</a> </dd></dl>
154 <h2 class="groupheader">Function Documentation</h2>
155 <a id="ga96583311e8237cf590d9c78052b288eb" name="ga96583311e8237cf590d9c78052b288eb"></a>
156 <h2 class="memtitle"><span class="permalink"><a href="#ga96583311e8237cf590d9c78052b288eb">◆ </a></span>multicore_fifo_clear_irq()</h2>
158 <div class="memitem">
159 <div class="memproto">
160 <table class="mlabels">
162 <td class="mlabels-left">
163 <table class="memname">
165 <td class="memname">static void multicore_fifo_clear_irq </td>
167 <td class="paramtype">void </td>
168 <td class="paramname"></td><td>)</td>
173 <td class="mlabels-right">
174 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
177 </div><div class="memdoc">
179 <p>Clear FIFO interrupt. </p>
180 <p >Note that this only clears an interrupt that was caused by the ROE or WOF flags. To clear the VLD flag you need to use one of the 'pop' or 'drain' functions.</p>
181 <p >See the note in the <a class="el" href="group__multicore__fifo.html">fifo</a> section for considerations regarding use of the inter-core FIFOs</p>
182 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__multicore__fifo.html#ga7c5944bf2b7266465dfe6d4bac4b1c58" title="Get FIFO statuses.">multicore_fifo_get_status</a> </dd></dl>
186 <a id="ga436e676544edeafb2f2f9e7245282cbf" name="ga436e676544edeafb2f2f9e7245282cbf"></a>
187 <h2 class="memtitle"><span class="permalink"><a href="#ga436e676544edeafb2f2f9e7245282cbf">◆ </a></span>multicore_fifo_drain()</h2>
189 <div class="memitem">
190 <div class="memproto">
191 <table class="mlabels">
193 <td class="mlabels-left">
194 <table class="memname">
196 <td class="memname">static void multicore_fifo_drain </td>
198 <td class="paramtype">void </td>
199 <td class="paramname"></td><td>)</td>
204 <td class="mlabels-right">
205 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
208 </div><div class="memdoc">
210 <p>Discard any data in the read FIFO. </p>
211 <p >See the note in the <a class="el" href="group__multicore__fifo.html">fifo</a> section for considerations regarding use of the inter-core FIFOs </p>
215 <a id="ga7c5944bf2b7266465dfe6d4bac4b1c58" name="ga7c5944bf2b7266465dfe6d4bac4b1c58"></a>
216 <h2 class="memtitle"><span class="permalink"><a href="#ga7c5944bf2b7266465dfe6d4bac4b1c58">◆ </a></span>multicore_fifo_get_status()</h2>
218 <div class="memitem">
219 <div class="memproto">
220 <table class="mlabels">
222 <td class="mlabels-left">
223 <table class="memname">
225 <td class="memname">static uint32_t multicore_fifo_get_status </td>
227 <td class="paramtype">void </td>
228 <td class="paramname"></td><td>)</td>
233 <td class="mlabels-right">
234 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
237 </div><div class="memdoc">
239 <p>Get FIFO statuses. </p>
240 <dl class="section return"><dt>Returns</dt><dd>The statuses as a bitfield</dd></dl>
241 <table class="markdownTable">
242 <tr class="markdownTableHead">
243 <th class="markdownTableHeadNone">Bit </th><th class="markdownTableHeadNone">Description </th></tr>
244 <tr class="markdownTableRowOdd">
245 <td class="markdownTableBodyNone">3 </td><td class="markdownTableBodyNone">Sticky flag indicating the RX FIFO was read when empty (ROE). This read was ignored by the FIFO. </td></tr>
246 <tr class="markdownTableRowEven">
247 <td class="markdownTableBodyNone">2 </td><td class="markdownTableBodyNone">Sticky flag indicating the TX FIFO was written when full (WOF). This write was ignored by the FIFO. </td></tr>
248 <tr class="markdownTableRowOdd">
249 <td class="markdownTableBodyNone">1 </td><td class="markdownTableBodyNone">Value is 1 if this core’s TX FIFO is not full (i.e. if FIFO_WR is ready for more data) </td></tr>
250 <tr class="markdownTableRowEven">
251 <td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">Value is 1 if this core’s RX FIFO is not empty (i.e. if FIFO_RD is valid) </td></tr>
253 <p >See the note in the <a class="el" href="group__multicore__fifo.html">fifo</a> section for considerations regarding use of the inter-core FIFOs </p>
257 <a id="ga929272dd1056d8ae05667beda4adb0fc" name="ga929272dd1056d8ae05667beda4adb0fc"></a>
258 <h2 class="memtitle"><span class="permalink"><a href="#ga929272dd1056d8ae05667beda4adb0fc">◆ </a></span>multicore_fifo_pop_blocking()</h2>
260 <div class="memitem">
261 <div class="memproto">
262 <table class="memname">
264 <td class="memname">uint32_t multicore_fifo_pop_blocking </td>
266 <td class="paramtype">void </td>
267 <td class="paramname"></td><td>)</td>
271 </div><div class="memdoc">
273 <p>Pop data from the read FIFO (data from the other core). </p>
274 <p >This function will block until there is data ready to be read Use <a class="el" href="group__multicore__fifo.html#gaffd246b81370d37fc13181a561303834" title="Check the read FIFO to see if there is data available (sent by the other core)">multicore_fifo_rvalid()</a> to check if data is ready to be read if you don't want to block.</p>
275 <p >See the note in the <a class="el" href="group__multicore__fifo.html">fifo</a> section for considerations regarding use of the inter-core FIFOs</p>
276 <dl class="section return"><dt>Returns</dt><dd>32 bit data from the read FIFO. </dd></dl>
280 <a id="ga282badad31e14f5b593ec1ddffae08f5" name="ga282badad31e14f5b593ec1ddffae08f5"></a>
281 <h2 class="memtitle"><span class="permalink"><a href="#ga282badad31e14f5b593ec1ddffae08f5">◆ </a></span>multicore_fifo_pop_blocking_inline()</h2>
283 <div class="memitem">
284 <div class="memproto">
285 <table class="mlabels">
287 <td class="mlabels-left">
288 <table class="memname">
290 <td class="memname">static uint32_t multicore_fifo_pop_blocking_inline </td>
292 <td class="paramtype">void </td>
293 <td class="paramname"></td><td>)</td>
298 <td class="mlabels-right">
299 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
302 </div><div class="memdoc">
304 <p>Pop data from the read FIFO (data from the other core). </p>
305 <p >This function will block until there is data ready to be read Use <a class="el" href="group__multicore__fifo.html#gaffd246b81370d37fc13181a561303834" title="Check the read FIFO to see if there is data available (sent by the other core)">multicore_fifo_rvalid()</a> to check if data is ready to be read if you don't want to block.</p>
306 <p >See the note in the <a class="el" href="group__multicore__fifo.html">fifo</a> section for considerations regarding use of the inter-core FIFOs</p>
307 <dl class="section return"><dt>Returns</dt><dd>32 bit data from the read FIFO. </dd></dl>
311 <a id="ga27824f253c72ae50ae97e6f516220c60" name="ga27824f253c72ae50ae97e6f516220c60"></a>
312 <h2 class="memtitle"><span class="permalink"><a href="#ga27824f253c72ae50ae97e6f516220c60">◆ </a></span>multicore_fifo_pop_timeout_us()</h2>
314 <div class="memitem">
315 <div class="memproto">
316 <table class="memname">
318 <td class="memname">bool multicore_fifo_pop_timeout_us </td>
320 <td class="paramtype">uint64_t </td>
321 <td class="paramname"><em>timeout_us</em>, </td>
324 <td class="paramkey"></td>
326 <td class="paramtype">uint32_t * </td>
327 <td class="paramname"><em>out</em> </td>
335 </div><div class="memdoc">
337 <p>Pop data from the read FIFO (data from the other core) with timeout. </p>
338 <p >This function will block until there is data ready to be read or the timeout is reached</p>
339 <p >See the note in the <a class="el" href="group__multicore__fifo.html">fifo</a> section for considerations regarding use of the inter-core FIFOs</p>
340 <dl class="params"><dt>Parameters</dt><dd>
341 <table class="params">
342 <tr><td class="paramname">timeout_us</td><td>the timeout in microseconds </td></tr>
343 <tr><td class="paramname">out</td><td>the location to store the popped data if available </td></tr>
347 <dl class="section return"><dt>Returns</dt><dd>true if the data was popped and a value copied into <code>out</code>, false if the timeout occurred before data could be popped </dd></dl>
351 <a id="ga134933a693c53c4f94c9d3cd3cabfc79" name="ga134933a693c53c4f94c9d3cd3cabfc79"></a>
352 <h2 class="memtitle"><span class="permalink"><a href="#ga134933a693c53c4f94c9d3cd3cabfc79">◆ </a></span>multicore_fifo_push_blocking()</h2>
354 <div class="memitem">
355 <div class="memproto">
356 <table class="memname">
358 <td class="memname">void multicore_fifo_push_blocking </td>
360 <td class="paramtype">uint32_t </td>
361 <td class="paramname"><em>data</em></td><td>)</td>
365 </div><div class="memdoc">
367 <p>Push data on to the write FIFO (data to the other core). </p>
368 <p >This function will block until there is space for the data to be sent. Use <a class="el" href="group__multicore__fifo.html#ga6065367210695961c11ab3706140d3a9">multicore_fifo_wready()</a> to check if it is possible to write to the FIFO if you don't want to block.</p>
369 <p >See the note in the <a class="el" href="group__multicore__fifo.html">fifo</a> section for considerations regarding use of the inter-core FIFOs</p>
370 <dl class="params"><dt>Parameters</dt><dd>
371 <table class="params">
372 <tr><td class="paramname">data</td><td>A 32 bit value to push on to the FIFO </td></tr>
379 <a id="ga559050fb6fd4a37ccc81ef6272cbf34b" name="ga559050fb6fd4a37ccc81ef6272cbf34b"></a>
380 <h2 class="memtitle"><span class="permalink"><a href="#ga559050fb6fd4a37ccc81ef6272cbf34b">◆ </a></span>multicore_fifo_push_blocking_inline()</h2>
382 <div class="memitem">
383 <div class="memproto">
384 <table class="mlabels">
386 <td class="mlabels-left">
387 <table class="memname">
389 <td class="memname">static void multicore_fifo_push_blocking_inline </td>
391 <td class="paramtype">uint32_t </td>
392 <td class="paramname"><em>data</em></td><td>)</td>
397 <td class="mlabels-right">
398 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
401 </div><div class="memdoc">
403 <p>Push data on to the write FIFO (data to the other core). </p>
404 <p >This function will block until there is space for the data to be sent. Use <a class="el" href="group__multicore__fifo.html#ga6065367210695961c11ab3706140d3a9" title="Check the write FIFO to see if it has space for more data.">multicore_fifo_wready()</a> to check if it is possible to write to the FIFO if you don't want to block.</p>
405 <p >See the note in the <a class="el" href="group__multicore__fifo.html">fifo</a> section for considerations regarding use of the inter-core FIFOs</p>
406 <dl class="params"><dt>Parameters</dt><dd>
407 <table class="params">
408 <tr><td class="paramname">data</td><td>A 32 bit value to push on to the FIFO </td></tr>
415 <a id="ga0c32cfcd182d5f1d3a25b6fb503352b7" name="ga0c32cfcd182d5f1d3a25b6fb503352b7"></a>
416 <h2 class="memtitle"><span class="permalink"><a href="#ga0c32cfcd182d5f1d3a25b6fb503352b7">◆ </a></span>multicore_fifo_push_timeout_us()</h2>
418 <div class="memitem">
419 <div class="memproto">
420 <table class="memname">
422 <td class="memname">bool multicore_fifo_push_timeout_us </td>
424 <td class="paramtype">uint32_t </td>
425 <td class="paramname"><em>data</em>, </td>
428 <td class="paramkey"></td>
430 <td class="paramtype">uint64_t </td>
431 <td class="paramname"><em>timeout_us</em> </td>
439 </div><div class="memdoc">
441 <p>Push data on to the write FIFO (data to the other core) with timeout. </p>
442 <p >This function will block until there is space for the data to be sent or the timeout is reached</p>
443 <dl class="params"><dt>Parameters</dt><dd>
444 <table class="params">
445 <tr><td class="paramname">data</td><td>A 32 bit value to push on to the FIFO </td></tr>
446 <tr><td class="paramname">timeout_us</td><td>the timeout in microseconds </td></tr>
450 <dl class="section return"><dt>Returns</dt><dd>true if the data was pushed, false if the timeout occurred before data could be pushed </dd></dl>
454 <a id="gaffd246b81370d37fc13181a561303834" name="gaffd246b81370d37fc13181a561303834"></a>
455 <h2 class="memtitle"><span class="permalink"><a href="#gaffd246b81370d37fc13181a561303834">◆ </a></span>multicore_fifo_rvalid()</h2>
457 <div class="memitem">
458 <div class="memproto">
459 <table class="mlabels">
461 <td class="mlabels-left">
462 <table class="memname">
464 <td class="memname">static bool multicore_fifo_rvalid </td>
466 <td class="paramtype">void </td>
467 <td class="paramname"></td><td>)</td>
472 <td class="mlabels-right">
473 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
476 </div><div class="memdoc">
478 <p>Check the read FIFO to see if there is data available (sent by the other core) </p>
479 <p >See the note in the <a class="el" href="group__multicore__fifo.html">fifo</a> section for considerations regarding use of the inter-core FIFOs</p>
480 <dl class="section return"><dt>Returns</dt><dd>true if the FIFO has data in it, false otherwise </dd></dl>
484 <a id="ga6065367210695961c11ab3706140d3a9" name="ga6065367210695961c11ab3706140d3a9"></a>
485 <h2 class="memtitle"><span class="permalink"><a href="#ga6065367210695961c11ab3706140d3a9">◆ </a></span>multicore_fifo_wready()</h2>
487 <div class="memitem">
488 <div class="memproto">
489 <table class="mlabels">
491 <td class="mlabels-left">
492 <table class="memname">
494 <td class="memname">static bool multicore_fifo_wready </td>
496 <td class="paramtype">void </td>
497 <td class="paramname"></td><td>)</td>
502 <td class="mlabels-right">
503 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
506 </div><div class="memdoc">
508 <p>Check the write FIFO to see if it has space for more data. </p>
509 <p >See the note in the <a class="el" href="group__multicore__fifo.html">fifo</a> section for considerations regarding use of the inter-core FIFOs</p>
510 <dl class="section return"><dt>Returns</dt><dd>true if the FIFO has room for more data, false otherwise </dd></dl>
514 </div><!-- contents -->
515 </div><!-- doc-content -->
517 <script src="main.js"></script>