]> Git Repo - pico-vscode.git/blob - web/docs/group__queue.html
Merge branch 'main' into main
[pico-vscode.git] / web / docs / group__queue.html
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">
4 <head>
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: queue</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"/>
25 </head>
26 <body>
27         <div class="navigation-mobile">
28                 <div class="logo--mobile">
29                         <a href="/"><img src="logo-mobile.svg" alt="Raspberry Pi"></a>
30                 </div>
31                 <div class="navigation-toggle">
32                         <span class="line-1"></span>
33                         <span class="line-2">
34                                 <p>Menu Toggle</p>
35                         </span>
36                         <span class="line-3"></span>
37                 </div>
38         </div>
39         <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
40                 <div class="logo">
41                         <a href="index.html"> <img src="logo.svg" alt="Raspberry Pi"></a>
42                         <span style="display: inline-block; margin-top: 10px;">
43                                 v2.0.0
44                         </span>
45                 </div>
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>
49                 </div>
50 <!--            <div class="search">
51                         <form>
52                                 <input type="search" name="search" id="search" placeholder="Search">
53                                 <input type="submit" value="Search">
54                         </form>
55                 </div> -->
56 <!-- Generated by Doxygen 1.9.4 -->
57 <script type="text/javascript">
58 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
59 var searchBox = new SearchBox("searchBox", "search",'Search','.html');
60 /* @license-end */
61 </script>
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&amp;dn=expat.txt MIT */
66 $(function() {
67   initMenu('',true,false,'search.php','Search');
68   $(document).ready(function() { init_search(); });
69 });
70 /* @license-end */
71 </script>
72 <div id="main-nav"></div>
73 </div><!-- top -->
74 <div id="side-nav" class="ui-resizable side-nav-resizable">
75   <div id="nav-tree">
76     <div id="nav-tree-contents">
77       <div id="nav-sync" class="sync"></div>
78     </div>
79   </div>
80   <div id="splitbar" style="-moz-user-select:none;" 
81        class="ui-resizable-handle">
82   </div>
83 </div>
84 <script type="text/javascript">
85 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
86 $(document).ready(function(){initNavTree('group__queue.html',''); initResizable(); });
87 /* @license-end */
88 </script>
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)">
95 </div>
96
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">
101 </iframe>
102 </div>
103
104 <div class="header">
105   <div class="summary">
106 <a href="#func-members">Functions</a>  </div>
107   <div class="headertitle"><div class="title">queue<div class="ingroups"><a class="el" href="group__high__level.html">High Level APIs</a> &raquo; <a class="el" href="group__pico__util.html">pico_util</a></div></div></div>
108 </div><!--header-->
109 <div class="contents">
110
111 <p>Multi-core and IRQ safe queue implementation.  
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:ga6b379b09df9ac326e3c07a2727b7ca96"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#ga6b379b09df9ac326e3c07a2727b7ca96">queue_init_with_spinlock</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q, uint element_size, uint element_count, uint spinlock_num)</td></tr>
117 <tr class="memdesc:ga6b379b09df9ac326e3c07a2727b7ca96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialise a queue with a specific spinlock for concurrency protection.  <a href="group__queue.html#ga6b379b09df9ac326e3c07a2727b7ca96">More...</a><br /></td></tr>
118 <tr class="separator:ga6b379b09df9ac326e3c07a2727b7ca96"><td class="memSeparator" colspan="2">&#160;</td></tr>
119 <tr class="memitem:ga0aa8e36b5c51158d836e16c5be2b9925"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#ga0aa8e36b5c51158d836e16c5be2b9925">queue_init</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q, uint element_size, uint element_count)</td></tr>
120 <tr class="memdesc:ga0aa8e36b5c51158d836e16c5be2b9925"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialise a queue, allocating a (possibly shared) spinlock.  <a href="group__queue.html#ga0aa8e36b5c51158d836e16c5be2b9925">More...</a><br /></td></tr>
121 <tr class="separator:ga0aa8e36b5c51158d836e16c5be2b9925"><td class="memSeparator" colspan="2">&#160;</td></tr>
122 <tr class="memitem:gaa13034dd0decdb0faf1b863383560be2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#gaa13034dd0decdb0faf1b863383560be2">queue_free</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q)</td></tr>
123 <tr class="memdesc:gaa13034dd0decdb0faf1b863383560be2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy the specified queue.  <a href="group__queue.html#gaa13034dd0decdb0faf1b863383560be2">More...</a><br /></td></tr>
124 <tr class="separator:gaa13034dd0decdb0faf1b863383560be2"><td class="memSeparator" colspan="2">&#160;</td></tr>
125 <tr class="memitem:ga2ebf4d2dec7ad019b03c2994defdf046"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#ga2ebf4d2dec7ad019b03c2994defdf046">queue_get_level_unsafe</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q)</td></tr>
126 <tr class="memdesc:ga2ebf4d2dec7ad019b03c2994defdf046"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsafe check of level of the specified queue.  <a href="group__queue.html#ga2ebf4d2dec7ad019b03c2994defdf046">More...</a><br /></td></tr>
127 <tr class="separator:ga2ebf4d2dec7ad019b03c2994defdf046"><td class="memSeparator" colspan="2">&#160;</td></tr>
128 <tr class="memitem:ga5cc5a58d2cac83f33aac5e8bb4e35147"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#ga5cc5a58d2cac83f33aac5e8bb4e35147">queue_get_level</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q)</td></tr>
129 <tr class="memdesc:ga5cc5a58d2cac83f33aac5e8bb4e35147"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check of level of the specified queue.  <a href="group__queue.html#ga5cc5a58d2cac83f33aac5e8bb4e35147">More...</a><br /></td></tr>
130 <tr class="separator:ga5cc5a58d2cac83f33aac5e8bb4e35147"><td class="memSeparator" colspan="2">&#160;</td></tr>
131 <tr class="memitem:ga8456f240608d3e58e5323bedadaeebe2"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#ga8456f240608d3e58e5323bedadaeebe2">queue_is_empty</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q)</td></tr>
132 <tr class="memdesc:ga8456f240608d3e58e5323bedadaeebe2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if queue is empty.  <a href="group__queue.html#ga8456f240608d3e58e5323bedadaeebe2">More...</a><br /></td></tr>
133 <tr class="separator:ga8456f240608d3e58e5323bedadaeebe2"><td class="memSeparator" colspan="2">&#160;</td></tr>
134 <tr class="memitem:gaed8287f549f6065fc89c5b56b9f9212e"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#gaed8287f549f6065fc89c5b56b9f9212e">queue_is_full</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q)</td></tr>
135 <tr class="memdesc:gaed8287f549f6065fc89c5b56b9f9212e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if queue is full.  <a href="group__queue.html#gaed8287f549f6065fc89c5b56b9f9212e">More...</a><br /></td></tr>
136 <tr class="separator:gaed8287f549f6065fc89c5b56b9f9212e"><td class="memSeparator" colspan="2">&#160;</td></tr>
137 <tr class="memitem:ga42ddfda77fa6e9c6292deda62d993ae3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#ga42ddfda77fa6e9c6292deda62d993ae3">queue_try_add</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q, const void *data)</td></tr>
138 <tr class="memdesc:ga42ddfda77fa6e9c6292deda62d993ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-blocking add value queue if not full.  <a href="group__queue.html#ga42ddfda77fa6e9c6292deda62d993ae3">More...</a><br /></td></tr>
139 <tr class="separator:ga42ddfda77fa6e9c6292deda62d993ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
140 <tr class="memitem:ga31806423ac9c0b39ee7bb6473aa8d253"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#ga31806423ac9c0b39ee7bb6473aa8d253">queue_try_remove</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q, void *data)</td></tr>
141 <tr class="memdesc:ga31806423ac9c0b39ee7bb6473aa8d253"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-blocking removal of entry from the queue if non empty.  <a href="group__queue.html#ga31806423ac9c0b39ee7bb6473aa8d253">More...</a><br /></td></tr>
142 <tr class="separator:ga31806423ac9c0b39ee7bb6473aa8d253"><td class="memSeparator" colspan="2">&#160;</td></tr>
143 <tr class="memitem:gab2d65c218a1826243d64f6305417dcc0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#gab2d65c218a1826243d64f6305417dcc0">queue_try_peek</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q, void *data)</td></tr>
144 <tr class="memdesc:gab2d65c218a1826243d64f6305417dcc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-blocking peek at the next item to be removed from the queue.  <a href="group__queue.html#gab2d65c218a1826243d64f6305417dcc0">More...</a><br /></td></tr>
145 <tr class="separator:gab2d65c218a1826243d64f6305417dcc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
146 <tr class="memitem:gad01f5e5ddf3403416097f31acc2dbeca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#gad01f5e5ddf3403416097f31acc2dbeca">queue_add_blocking</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q, const void *data)</td></tr>
147 <tr class="memdesc:gad01f5e5ddf3403416097f31acc2dbeca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Blocking add of value to queue.  <a href="group__queue.html#gad01f5e5ddf3403416097f31acc2dbeca">More...</a><br /></td></tr>
148 <tr class="separator:gad01f5e5ddf3403416097f31acc2dbeca"><td class="memSeparator" colspan="2">&#160;</td></tr>
149 <tr class="memitem:ga97fb187c127e26935b37785692d1776b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#ga97fb187c127e26935b37785692d1776b">queue_remove_blocking</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q, void *data)</td></tr>
150 <tr class="memdesc:ga97fb187c127e26935b37785692d1776b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Blocking remove entry from queue.  <a href="group__queue.html#ga97fb187c127e26935b37785692d1776b">More...</a><br /></td></tr>
151 <tr class="separator:ga97fb187c127e26935b37785692d1776b"><td class="memSeparator" colspan="2">&#160;</td></tr>
152 <tr class="memitem:ga104ec5baa82c9635163a511df7abf124"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__queue.html#ga104ec5baa82c9635163a511df7abf124">queue_peek_blocking</a> (<a class="el" href="structqueue__t.html">queue_t</a> *q, void *data)</td></tr>
153 <tr class="memdesc:ga104ec5baa82c9635163a511df7abf124"><td class="mdescLeft">&#160;</td><td class="mdescRight">Blocking peek at next value to be removed from queue.  <a href="group__queue.html#ga104ec5baa82c9635163a511df7abf124">More...</a><br /></td></tr>
154 <tr class="separator:ga104ec5baa82c9635163a511df7abf124"><td class="memSeparator" colspan="2">&#160;</td></tr>
155 </table>
156 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
157 <p >Multi-core and IRQ safe queue implementation. </p>
158 <p >Note that this queue stores values of a specified size, and pushed values are copied into the queue </p>
159 <h2 class="groupheader">Function Documentation</h2>
160 <a id="gad01f5e5ddf3403416097f31acc2dbeca" name="gad01f5e5ddf3403416097f31acc2dbeca"></a>
161 <h2 class="memtitle"><span class="permalink"><a href="#gad01f5e5ddf3403416097f31acc2dbeca">&#9670;&nbsp;</a></span>queue_add_blocking()</h2>
162
163 <div class="memitem">
164 <div class="memproto">
165       <table class="memname">
166         <tr>
167           <td class="memname">void queue_add_blocking </td>
168           <td>(</td>
169           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
170           <td class="paramname"><em>q</em>, </td>
171         </tr>
172         <tr>
173           <td class="paramkey"></td>
174           <td></td>
175           <td class="paramtype">const void *&#160;</td>
176           <td class="paramname"><em>data</em>&#160;</td>
177         </tr>
178         <tr>
179           <td></td>
180           <td>)</td>
181           <td></td><td></td>
182         </tr>
183       </table>
184 </div><div class="memdoc">
185
186 <p>Blocking add of value to queue. </p>
187 <dl class="params"><dt>Parameters</dt><dd>
188   <table class="params">
189     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle </td></tr>
190     <tr><td class="paramname">data</td><td>Pointer to value to be copied into the queue</td></tr>
191   </table>
192   </dd>
193 </dl>
194 <p>If the queue is full this function will block, until a removal happens on the queue </p>
195
196 </div>
197 </div>
198 <a id="gaa13034dd0decdb0faf1b863383560be2" name="gaa13034dd0decdb0faf1b863383560be2"></a>
199 <h2 class="memtitle"><span class="permalink"><a href="#gaa13034dd0decdb0faf1b863383560be2">&#9670;&nbsp;</a></span>queue_free()</h2>
200
201 <div class="memitem">
202 <div class="memproto">
203       <table class="memname">
204         <tr>
205           <td class="memname">void queue_free </td>
206           <td>(</td>
207           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
208           <td class="paramname"><em>q</em></td><td>)</td>
209           <td></td>
210         </tr>
211       </table>
212 </div><div class="memdoc">
213
214 <p>Destroy the specified queue. </p>
215 <dl class="params"><dt>Parameters</dt><dd>
216   <table class="params">
217     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle</td></tr>
218   </table>
219   </dd>
220 </dl>
221 <p>Does not deallocate the <a class="el" href="structqueue__t.html">queue_t</a> structure itself. </p>
222
223 </div>
224 </div>
225 <a id="ga5cc5a58d2cac83f33aac5e8bb4e35147" name="ga5cc5a58d2cac83f33aac5e8bb4e35147"></a>
226 <h2 class="memtitle"><span class="permalink"><a href="#ga5cc5a58d2cac83f33aac5e8bb4e35147">&#9670;&nbsp;</a></span>queue_get_level()</h2>
227
228 <div class="memitem">
229 <div class="memproto">
230 <table class="mlabels">
231   <tr>
232   <td class="mlabels-left">
233       <table class="memname">
234         <tr>
235           <td class="memname">static uint queue_get_level </td>
236           <td>(</td>
237           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
238           <td class="paramname"><em>q</em></td><td>)</td>
239           <td></td>
240         </tr>
241       </table>
242   </td>
243   <td class="mlabels-right">
244 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
245   </tr>
246 </table>
247 </div><div class="memdoc">
248
249 <p>Check of level of the specified queue. </p>
250 <dl class="params"><dt>Parameters</dt><dd>
251   <table class="params">
252     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle </td></tr>
253   </table>
254   </dd>
255 </dl>
256 <dl class="section return"><dt>Returns</dt><dd>Number of entries in the queue </dd></dl>
257
258 </div>
259 </div>
260 <a id="ga2ebf4d2dec7ad019b03c2994defdf046" name="ga2ebf4d2dec7ad019b03c2994defdf046"></a>
261 <h2 class="memtitle"><span class="permalink"><a href="#ga2ebf4d2dec7ad019b03c2994defdf046">&#9670;&nbsp;</a></span>queue_get_level_unsafe()</h2>
262
263 <div class="memitem">
264 <div class="memproto">
265 <table class="mlabels">
266   <tr>
267   <td class="mlabels-left">
268       <table class="memname">
269         <tr>
270           <td class="memname">static uint queue_get_level_unsafe </td>
271           <td>(</td>
272           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
273           <td class="paramname"><em>q</em></td><td>)</td>
274           <td></td>
275         </tr>
276       </table>
277   </td>
278   <td class="mlabels-right">
279 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
280   </tr>
281 </table>
282 </div><div class="memdoc">
283
284 <p>Unsafe check of level of the specified queue. </p>
285 <dl class="params"><dt>Parameters</dt><dd>
286   <table class="params">
287     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle </td></tr>
288   </table>
289   </dd>
290 </dl>
291 <dl class="section return"><dt>Returns</dt><dd>Number of entries in the queue</dd></dl>
292 <p>This does not use the spinlock, so may return incorrect results if the spin lock is not externally locked </p>
293
294 </div>
295 </div>
296 <a id="ga0aa8e36b5c51158d836e16c5be2b9925" name="ga0aa8e36b5c51158d836e16c5be2b9925"></a>
297 <h2 class="memtitle"><span class="permalink"><a href="#ga0aa8e36b5c51158d836e16c5be2b9925">&#9670;&nbsp;</a></span>queue_init()</h2>
298
299 <div class="memitem">
300 <div class="memproto">
301 <table class="mlabels">
302   <tr>
303   <td class="mlabels-left">
304       <table class="memname">
305         <tr>
306           <td class="memname">static void queue_init </td>
307           <td>(</td>
308           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
309           <td class="paramname"><em>q</em>, </td>
310         </tr>
311         <tr>
312           <td class="paramkey"></td>
313           <td></td>
314           <td class="paramtype">uint&#160;</td>
315           <td class="paramname"><em>element_size</em>, </td>
316         </tr>
317         <tr>
318           <td class="paramkey"></td>
319           <td></td>
320           <td class="paramtype">uint&#160;</td>
321           <td class="paramname"><em>element_count</em>&#160;</td>
322         </tr>
323         <tr>
324           <td></td>
325           <td>)</td>
326           <td></td><td></td>
327         </tr>
328       </table>
329   </td>
330   <td class="mlabels-right">
331 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
332   </tr>
333 </table>
334 </div><div class="memdoc">
335
336 <p>Initialise a queue, allocating a (possibly shared) spinlock. </p>
337 <dl class="params"><dt>Parameters</dt><dd>
338   <table class="params">
339     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle </td></tr>
340     <tr><td class="paramname">element_size</td><td>Size of each value in the queue </td></tr>
341     <tr><td class="paramname">element_count</td><td>Maximum number of entries in the queue </td></tr>
342   </table>
343   </dd>
344 </dl>
345
346 </div>
347 </div>
348 <a id="ga6b379b09df9ac326e3c07a2727b7ca96" name="ga6b379b09df9ac326e3c07a2727b7ca96"></a>
349 <h2 class="memtitle"><span class="permalink"><a href="#ga6b379b09df9ac326e3c07a2727b7ca96">&#9670;&nbsp;</a></span>queue_init_with_spinlock()</h2>
350
351 <div class="memitem">
352 <div class="memproto">
353       <table class="memname">
354         <tr>
355           <td class="memname">void queue_init_with_spinlock </td>
356           <td>(</td>
357           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
358           <td class="paramname"><em>q</em>, </td>
359         </tr>
360         <tr>
361           <td class="paramkey"></td>
362           <td></td>
363           <td class="paramtype">uint&#160;</td>
364           <td class="paramname"><em>element_size</em>, </td>
365         </tr>
366         <tr>
367           <td class="paramkey"></td>
368           <td></td>
369           <td class="paramtype">uint&#160;</td>
370           <td class="paramname"><em>element_count</em>, </td>
371         </tr>
372         <tr>
373           <td class="paramkey"></td>
374           <td></td>
375           <td class="paramtype">uint&#160;</td>
376           <td class="paramname"><em>spinlock_num</em>&#160;</td>
377         </tr>
378         <tr>
379           <td></td>
380           <td>)</td>
381           <td></td><td></td>
382         </tr>
383       </table>
384 </div><div class="memdoc">
385
386 <p>Initialise a queue with a specific spinlock for concurrency protection. </p>
387 <dl class="params"><dt>Parameters</dt><dd>
388   <table class="params">
389     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle </td></tr>
390     <tr><td class="paramname">element_size</td><td>Size of each value in the queue </td></tr>
391     <tr><td class="paramname">element_count</td><td>Maximum number of entries in the queue </td></tr>
392     <tr><td class="paramname">spinlock_num</td><td>The spin ID used to protect the queue </td></tr>
393   </table>
394   </dd>
395 </dl>
396
397 </div>
398 </div>
399 <a id="ga8456f240608d3e58e5323bedadaeebe2" name="ga8456f240608d3e58e5323bedadaeebe2"></a>
400 <h2 class="memtitle"><span class="permalink"><a href="#ga8456f240608d3e58e5323bedadaeebe2">&#9670;&nbsp;</a></span>queue_is_empty()</h2>
401
402 <div class="memitem">
403 <div class="memproto">
404 <table class="mlabels">
405   <tr>
406   <td class="mlabels-left">
407       <table class="memname">
408         <tr>
409           <td class="memname">static bool queue_is_empty </td>
410           <td>(</td>
411           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
412           <td class="paramname"><em>q</em></td><td>)</td>
413           <td></td>
414         </tr>
415       </table>
416   </td>
417   <td class="mlabels-right">
418 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
419   </tr>
420 </table>
421 </div><div class="memdoc">
422
423 <p>Check if queue is empty. </p>
424 <dl class="params"><dt>Parameters</dt><dd>
425   <table class="params">
426     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle </td></tr>
427   </table>
428   </dd>
429 </dl>
430 <dl class="section return"><dt>Returns</dt><dd>true if queue is empty, false otherwise</dd></dl>
431 <p>This function is interrupt and multicore safe. </p>
432
433 </div>
434 </div>
435 <a id="gaed8287f549f6065fc89c5b56b9f9212e" name="gaed8287f549f6065fc89c5b56b9f9212e"></a>
436 <h2 class="memtitle"><span class="permalink"><a href="#gaed8287f549f6065fc89c5b56b9f9212e">&#9670;&nbsp;</a></span>queue_is_full()</h2>
437
438 <div class="memitem">
439 <div class="memproto">
440 <table class="mlabels">
441   <tr>
442   <td class="mlabels-left">
443       <table class="memname">
444         <tr>
445           <td class="memname">static bool queue_is_full </td>
446           <td>(</td>
447           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
448           <td class="paramname"><em>q</em></td><td>)</td>
449           <td></td>
450         </tr>
451       </table>
452   </td>
453   <td class="mlabels-right">
454 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
455   </tr>
456 </table>
457 </div><div class="memdoc">
458
459 <p>Check if queue is full. </p>
460 <dl class="params"><dt>Parameters</dt><dd>
461   <table class="params">
462     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle </td></tr>
463   </table>
464   </dd>
465 </dl>
466 <dl class="section return"><dt>Returns</dt><dd>true if queue is full, false otherwise</dd></dl>
467 <p>This function is interrupt and multicore safe. </p>
468
469 </div>
470 </div>
471 <a id="ga104ec5baa82c9635163a511df7abf124" name="ga104ec5baa82c9635163a511df7abf124"></a>
472 <h2 class="memtitle"><span class="permalink"><a href="#ga104ec5baa82c9635163a511df7abf124">&#9670;&nbsp;</a></span>queue_peek_blocking()</h2>
473
474 <div class="memitem">
475 <div class="memproto">
476       <table class="memname">
477         <tr>
478           <td class="memname">void queue_peek_blocking </td>
479           <td>(</td>
480           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
481           <td class="paramname"><em>q</em>, </td>
482         </tr>
483         <tr>
484           <td class="paramkey"></td>
485           <td></td>
486           <td class="paramtype">void *&#160;</td>
487           <td class="paramname"><em>data</em>&#160;</td>
488         </tr>
489         <tr>
490           <td></td>
491           <td>)</td>
492           <td></td><td></td>
493         </tr>
494       </table>
495 </div><div class="memdoc">
496
497 <p>Blocking peek at next value to be removed from queue. </p>
498 <dl class="params"><dt>Parameters</dt><dd>
499   <table class="params">
500     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle </td></tr>
501     <tr><td class="paramname">data</td><td>Pointer to the location to receive the peeked value, or NULL if the data isn't required</td></tr>
502   </table>
503   </dd>
504 </dl>
505 <p>If the queue is empty function will block until a value is added </p>
506
507 </div>
508 </div>
509 <a id="ga97fb187c127e26935b37785692d1776b" name="ga97fb187c127e26935b37785692d1776b"></a>
510 <h2 class="memtitle"><span class="permalink"><a href="#ga97fb187c127e26935b37785692d1776b">&#9670;&nbsp;</a></span>queue_remove_blocking()</h2>
511
512 <div class="memitem">
513 <div class="memproto">
514       <table class="memname">
515         <tr>
516           <td class="memname">void queue_remove_blocking </td>
517           <td>(</td>
518           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
519           <td class="paramname"><em>q</em>, </td>
520         </tr>
521         <tr>
522           <td class="paramkey"></td>
523           <td></td>
524           <td class="paramtype">void *&#160;</td>
525           <td class="paramname"><em>data</em>&#160;</td>
526         </tr>
527         <tr>
528           <td></td>
529           <td>)</td>
530           <td></td><td></td>
531         </tr>
532       </table>
533 </div><div class="memdoc">
534
535 <p>Blocking remove entry from queue. </p>
536 <dl class="params"><dt>Parameters</dt><dd>
537   <table class="params">
538     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle </td></tr>
539     <tr><td class="paramname">data</td><td>Pointer to the location to receive the removed value, or NULL if the data isn't required</td></tr>
540   </table>
541   </dd>
542 </dl>
543 <p>If the queue is empty this function will block until a value is added. </p>
544
545 </div>
546 </div>
547 <a id="ga42ddfda77fa6e9c6292deda62d993ae3" name="ga42ddfda77fa6e9c6292deda62d993ae3"></a>
548 <h2 class="memtitle"><span class="permalink"><a href="#ga42ddfda77fa6e9c6292deda62d993ae3">&#9670;&nbsp;</a></span>queue_try_add()</h2>
549
550 <div class="memitem">
551 <div class="memproto">
552       <table class="memname">
553         <tr>
554           <td class="memname">bool queue_try_add </td>
555           <td>(</td>
556           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
557           <td class="paramname"><em>q</em>, </td>
558         </tr>
559         <tr>
560           <td class="paramkey"></td>
561           <td></td>
562           <td class="paramtype">const void *&#160;</td>
563           <td class="paramname"><em>data</em>&#160;</td>
564         </tr>
565         <tr>
566           <td></td>
567           <td>)</td>
568           <td></td><td></td>
569         </tr>
570       </table>
571 </div><div class="memdoc">
572
573 <p>Non-blocking add value queue if not full. </p>
574 <dl class="params"><dt>Parameters</dt><dd>
575   <table class="params">
576     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle </td></tr>
577     <tr><td class="paramname">data</td><td>Pointer to value to be copied into the queue </td></tr>
578   </table>
579   </dd>
580 </dl>
581 <dl class="section return"><dt>Returns</dt><dd>true if the value was added</dd></dl>
582 <p>If the queue is full this function will return immediately with false, otherwise the data is copied into a new value added to the queue, and this function will return true. </p>
583
584 </div>
585 </div>
586 <a id="gab2d65c218a1826243d64f6305417dcc0" name="gab2d65c218a1826243d64f6305417dcc0"></a>
587 <h2 class="memtitle"><span class="permalink"><a href="#gab2d65c218a1826243d64f6305417dcc0">&#9670;&nbsp;</a></span>queue_try_peek()</h2>
588
589 <div class="memitem">
590 <div class="memproto">
591       <table class="memname">
592         <tr>
593           <td class="memname">bool queue_try_peek </td>
594           <td>(</td>
595           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
596           <td class="paramname"><em>q</em>, </td>
597         </tr>
598         <tr>
599           <td class="paramkey"></td>
600           <td></td>
601           <td class="paramtype">void *&#160;</td>
602           <td class="paramname"><em>data</em>&#160;</td>
603         </tr>
604         <tr>
605           <td></td>
606           <td>)</td>
607           <td></td><td></td>
608         </tr>
609       </table>
610 </div><div class="memdoc">
611
612 <p>Non-blocking peek at the next item to be removed from the queue. </p>
613 <dl class="params"><dt>Parameters</dt><dd>
614   <table class="params">
615     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle </td></tr>
616     <tr><td class="paramname">data</td><td>Pointer to the location to receive the peeked value, or NULL if the data isn't required </td></tr>
617   </table>
618   </dd>
619 </dl>
620 <dl class="section return"><dt>Returns</dt><dd>true if there was a value to peek</dd></dl>
621 <p>If the queue is not empty this function will return immediately with true with the peeked entry copied into the location specified by the data parameter, otherwise the function will return false. </p>
622
623 </div>
624 </div>
625 <a id="ga31806423ac9c0b39ee7bb6473aa8d253" name="ga31806423ac9c0b39ee7bb6473aa8d253"></a>
626 <h2 class="memtitle"><span class="permalink"><a href="#ga31806423ac9c0b39ee7bb6473aa8d253">&#9670;&nbsp;</a></span>queue_try_remove()</h2>
627
628 <div class="memitem">
629 <div class="memproto">
630       <table class="memname">
631         <tr>
632           <td class="memname">bool queue_try_remove </td>
633           <td>(</td>
634           <td class="paramtype"><a class="el" href="structqueue__t.html">queue_t</a> *&#160;</td>
635           <td class="paramname"><em>q</em>, </td>
636         </tr>
637         <tr>
638           <td class="paramkey"></td>
639           <td></td>
640           <td class="paramtype">void *&#160;</td>
641           <td class="paramname"><em>data</em>&#160;</td>
642         </tr>
643         <tr>
644           <td></td>
645           <td>)</td>
646           <td></td><td></td>
647         </tr>
648       </table>
649 </div><div class="memdoc">
650
651 <p>Non-blocking removal of entry from the queue if non empty. </p>
652 <dl class="params"><dt>Parameters</dt><dd>
653   <table class="params">
654     <tr><td class="paramname">q</td><td>Pointer to a <a class="el" href="structqueue__t.html">queue_t</a> structure, used as a handle </td></tr>
655     <tr><td class="paramname">data</td><td>Pointer to the location to receive the removed value, or NULL if the data isn't required </td></tr>
656   </table>
657   </dd>
658 </dl>
659 <dl class="section return"><dt>Returns</dt><dd>true if a value was removed</dd></dl>
660 <p>If the queue is not empty function will copy the removed value into the location provided and return immediately with true, otherwise the function will return immediately with false. </p>
661
662 </div>
663 </div>
664 </div><!-- contents -->
665 </div><!-- doc-content -->
666
667         <script src="main.js"></script>
668 </body>
669 </html>
This page took 0.066432 seconds and 4 git commands to generate.