<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.16"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>UbixOS V2: Mailboxes</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(initResizable); /* @license-end */</script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">UbixOS V2  <span id="projectnumber">2.0</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.16 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ var searchBox = new SearchBox("searchBox", "search",false,'Search'); /* @license-end */ </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); /* @license-end */</script> <div id="main-nav"></div> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> <div id="nav-sync" class="sync"></div> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(function(){initNavTree('group__sys__mbox.html','');}); /* @license-end */ </script> <div id="doc-content"> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div class="header"> <div class="summary"> <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">Mailboxes<div class="ingroups"><a class="el" href="group__sys__layer.html">Porting (system abstraction layer)</a> » <a class="el" href="group__sys__os.html">OS abstraction layer</a></div></div> </div> </div><!--header--> <div class="contents"> <div class="dynheader"> Collaboration diagram for Mailboxes:</div> <div class="dyncontent"> <div class="center"><img src="group__sys__mbox.png" border="0" usemap="#group____sys____mbox" alt=""/></div> </div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:gacc53b5c30f131abc40f0885d39d32f87"><td class="memItemLeft" align="right" valign="top"><a class="el" href="include_2sys_2types_8h.html#a0238af00180b6d9278fa1c6aa790fdf4">uint32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__mbox.html#gacc53b5c30f131abc40f0885d39d32f87">sys_arch_mbox_fetch</a> (struct <a class="el" href="structsys__mbox.html">sys_mbox</a> **mb, void **msg, <a class="el" href="include_2sys_2types_8h.html#a0238af00180b6d9278fa1c6aa790fdf4">uint32_t</a> timeout)</td></tr> <tr class="separator:gacc53b5c30f131abc40f0885d39d32f87"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga3e0e0f02be2f670ebfb093a21f7dcdb8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="include_2sys_2types_8h.html#a0238af00180b6d9278fa1c6aa790fdf4">uint32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__mbox.html#ga3e0e0f02be2f670ebfb093a21f7dcdb8">sys_arch_mbox_tryfetch</a> (struct <a class="el" href="structsys__mbox.html">sys_mbox</a> **mb, void **msg)</td></tr> <tr class="separator:ga3e0e0f02be2f670ebfb093a21f7dcdb8"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gad4a51a28337f89d4b4806e6deb99798d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__mbox.html#gad4a51a28337f89d4b4806e6deb99798d">sys_mbox_free</a> (struct <a class="el" href="structsys__mbox.html">sys_mbox</a> **mb)</td></tr> <tr class="separator:gad4a51a28337f89d4b4806e6deb99798d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga26c015e64c859c9361a6f75c4e6fa829"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__mbox.html#ga26c015e64c859c9361a6f75c4e6fa829">sys_mbox_new</a> (struct <a class="el" href="structsys__mbox.html">sys_mbox</a> **mb, int size)</td></tr> <tr class="separator:ga26c015e64c859c9361a6f75c4e6fa829"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga8ff11ed9831af7ca486123f74d4064ac"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__mbox.html#ga8ff11ed9831af7ca486123f74d4064ac">sys_mbox_post</a> (struct <a class="el" href="structsys__mbox.html">sys_mbox</a> **mb, void *msg)</td></tr> <tr class="separator:ga8ff11ed9831af7ca486123f74d4064ac"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga64ca1b1ef4c810f4d67595eca4fdfef0"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__mbox.html#ga64ca1b1ef4c810f4d67595eca4fdfef0">sys_mbox_set_invalid</a> (struct <a class="el" href="structsys__mbox.html">sys_mbox</a> **mb)</td></tr> <tr class="separator:ga64ca1b1ef4c810f4d67595eca4fdfef0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gacc06f47f34de04084e1d49788ce871b6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__mbox.html#gacc06f47f34de04084e1d49788ce871b6">sys_mbox_trypost</a> (struct <a class="el" href="structsys__mbox.html">sys_mbox</a> **mb, void *msg)</td></tr> <tr class="separator:gacc06f47f34de04084e1d49788ce871b6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gadf4b8fccb41fe2d76e88bef546e8e8bb"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__mbox.html#gadf4b8fccb41fe2d76e88bef546e8e8bb">sys_mbox_valid</a> (struct <a class="el" href="structsys__mbox.html">sys_mbox</a> **mb)</td></tr> <tr class="separator:gadf4b8fccb41fe2d76e88bef546e8e8bb"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <h2 class="groupheader">Function Documentation</h2> <a id="gacc53b5c30f131abc40f0885d39d32f87"></a> <h2 class="memtitle"><span class="permalink"><a href="#gacc53b5c30f131abc40f0885d39d32f87">◆ </a></span>sys_arch_mbox_fetch()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="include_2sys_2types_8h.html#a0238af00180b6d9278fa1c6aa790fdf4">uint32_t</a> sys_arch_mbox_fetch </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structsys__mbox.html">sys_mbox</a> ** </td> <td class="paramname"><em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void ** </td> <td class="paramname"><em>msg</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="include_2sys_2types_8h.html#a0238af00180b6d9278fa1c6aa790fdf4">uint32_t</a> </td> <td class="paramname"><em>timeout</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Wait for a new message to arrive in the mbox </p><dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">mbox</td><td>mbox to get a message from </td></tr> <tr><td class="paramname">msg</td><td>pointer where the message is stored </td></tr> <tr><td class="paramname">timeout</td><td>maximum time (in milliseconds) to wait for a message (0 = wait forever) </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>time (in milliseconds) waited for a message, may be 0 if not waited or SYS_ARCH_TIMEOUT on timeout The returned time has to be accurate to prevent timer jitter! </dd></dl> <p class="definition">Definition at line <a class="el" href="sys__arch_8c_source.html#l00287">287</a> of file <a class="el" href="sys__arch_8c_source.html">sys_arch.c</a>.</p> </div> </div> <a id="ga3e0e0f02be2f670ebfb093a21f7dcdb8"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga3e0e0f02be2f670ebfb093a21f7dcdb8">◆ </a></span>sys_arch_mbox_tryfetch()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="include_2sys_2types_8h.html#a0238af00180b6d9278fa1c6aa790fdf4">uint32_t</a> sys_arch_mbox_tryfetch </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structsys__mbox.html">sys_mbox</a> ** </td> <td class="paramname"><em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void ** </td> <td class="paramname"><em>msg</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Wait for a new message to arrive in the mbox </p><dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">mbox</td><td>mbox to get a message from </td></tr> <tr><td class="paramname">msg</td><td>pointer where the message is stored </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 (milliseconds) if a message has been received or SYS_MBOX_EMPTY if the mailbox is empty </dd></dl> <p class="definition">Definition at line <a class="el" href="sys__arch_8c_source.html#l00336">336</a> of file <a class="el" href="sys__arch_8c_source.html">sys_arch.c</a>.</p> </div> </div> <a id="gad4a51a28337f89d4b4806e6deb99798d"></a> <h2 class="memtitle"><span class="permalink"><a href="#gad4a51a28337f89d4b4806e6deb99798d">◆ </a></span>sys_mbox_free()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void sys_mbox_free </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structsys__mbox.html">sys_mbox</a> ** </td> <td class="paramname"><em>mb</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Delete an mbox </p><dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">mbox</td><td>mbox to delete </td></tr> </table> </dd> </dl> <p class="definition">Definition at line <a class="el" href="sys__arch_8c_source.html#l00194">194</a> of file <a class="el" href="sys__arch_8c_source.html">sys_arch.c</a>.</p> <p class="reference">References <a class="el" href="fat__string_8h_source.html#l00017">NULL</a>, and <a class="el" href="sys__arch_8h_source.html#l00007">SYS_MBOX_NULL</a>.</p> </div> </div> <a id="ga26c015e64c859c9361a6f75c4e6fa829"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga26c015e64c859c9361a6f75c4e6fa829">◆ </a></span>sys_mbox_new()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> sys_mbox_new </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structsys__mbox.html">sys_mbox</a> ** </td> <td class="paramname"><em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>size</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Create a new mbox of specified size </p><dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">mbox</td><td>pointer to the mbox to create </td></tr> <tr><td class="paramname">size</td><td>(minimum) number of messages in this mbox </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>ERR_OK if successful, another err_t otherwise </dd></dl> <p class="definition">Definition at line <a class="el" href="sys__arch_8c_source.html#l00161">161</a> of file <a class="el" href="sys__arch_8c_source.html">sys_arch.c</a>.</p> </div> </div> <a id="ga8ff11ed9831af7ca486123f74d4064ac"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga8ff11ed9831af7ca486123f74d4064ac">◆ </a></span>sys_mbox_post()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void sys_mbox_post </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structsys__mbox.html">sys_mbox</a> ** </td> <td class="paramname"><em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>msg</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Post a message to an mbox - may not fail -> blocks if full, only used from tasks not from ISR </p><dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">mbox</td><td>mbox to posts the message </td></tr> <tr><td class="paramname">msg</td><td>message to post (ATTENTION: can be NULL) </td></tr> </table> </dd> </dl> <p class="definition">Definition at line <a class="el" href="sys__arch_8c_source.html#l00215">215</a> of file <a class="el" href="sys__arch_8c_source.html">sys_arch.c</a>.</p> <p class="reference">References <a class="el" href="sys__arch_8h_source.html#l00023">head</a>.</p> </div> </div> <a id="ga64ca1b1ef4c810f4d67595eca4fdfef0"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga64ca1b1ef4c810f4d67595eca4fdfef0">◆ </a></span>sys_mbox_set_invalid()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void sys_mbox_set_invalid </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structsys__mbox.html">sys_mbox</a> ** </td> <td class="paramname"><em>mb</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Set an mbox invalid so that sys_mbox_valid returns 0 </p> <p class="definition">Definition at line <a class="el" href="sys__arch_8c_source.html#l00375">375</a> of file <a class="el" href="sys__arch_8c_source.html">sys_arch.c</a>.</p> </div> </div> <a id="gacc06f47f34de04084e1d49788ce871b6"></a> <h2 class="memtitle"><span class="permalink"><a href="#gacc06f47f34de04084e1d49788ce871b6">◆ </a></span>sys_mbox_trypost()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> sys_mbox_trypost </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structsys__mbox.html">sys_mbox</a> ** </td> <td class="paramname"><em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>msg</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Try to post a message to an mbox - may fail if full or ISR </p><dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">mbox</td><td>mbox to posts the message </td></tr> <tr><td class="paramname">msg</td><td>message to post (ATTENTION: can be NULL) </td></tr> </table> </dd> </dl> <p class="definition">Definition at line <a class="el" href="sys__arch_8c_source.html#l00251">251</a> of file <a class="el" href="sys__arch_8c_source.html">sys_arch.c</a>.</p> <p class="reference">References <a class="el" href="sys__arch_8h_source.html#l00023">head</a>.</p> </div> </div> <a id="gadf4b8fccb41fe2d76e88bef546e8e8bb"></a> <h2 class="memtitle"><span class="permalink"><a href="#gadf4b8fccb41fe2d76e88bef546e8e8bb">◆ </a></span>sys_mbox_valid()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int sys_mbox_valid </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structsys__mbox.html">sys_mbox</a> ** </td> <td class="paramname"><em>mb</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Check if an mbox is valid/allocated: return 1 for valid, 0 for invalid </p> <p class="definition">Definition at line <a class="el" href="sys__arch_8c_source.html#l00367">367</a> of file <a class="el" href="sys__arch_8c_source.html">sys_arch.c</a>.</p> </div> </div> </div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.16 </li> </ul> </div> </body> </html>