Sync inav to Gitea
Make sure docs are updated / settings_md (push) Canceled after 0s
Build firmware / test (push) Canceled after 0s
Build firmware / build-SITL-Windows (push) Canceled after 0s
Build firmware / build-SITL-Mac (push) Canceled after 0s
Build firmware / build-SITL-Linux (push) Canceled after 0s
Build firmware / build-SITL-Linux-arm64 (push) Canceled after 0s
Build firmware / upload-artifacts (push) Canceled after 0s
Build firmware / build-single-target (push) Canceled after 0s
Build firmware / build (9) (push) Canceled after 0s
Build firmware / build (8) (push) Canceled after 0s
Build firmware / build (7) (push) Canceled after 0s
Build firmware / build (6) (push) Canceled after 0s
Build firmware / build (5) (push) Canceled after 0s
Build firmware / build (4) (push) Canceled after 0s
Build firmware / build (3) (push) Canceled after 0s
Build firmware / build (2) (push) Canceled after 0s
Build firmware / build (14) (push) Canceled after 0s
Build firmware / build (13) (push) Canceled after 0s
Build firmware / build (12) (push) Canceled after 0s
Build firmware / build (11) (push) Canceled after 0s
Build firmware / build (10) (push) Canceled after 0s
Build firmware / build (1) (push) Canceled after 0s
Build firmware / build (0) (push) Canceled after 0s
Build firmware / detect (push) Canceled after 0s
Build pre-release / build (push) Canceled after 0s
Build pre-release / Release (push) Canceled after 0s

This commit is contained in:
2026-08-03 16:37:40 +08:00
commit dac37fd077
14095 changed files with 5603119 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

@@ -0,0 +1,499 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>RTX_Conf_CM.c File Reference</title>
<title>CMSIS-RTOS: RTX_Conf_CM.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('RTX__Conf__CM_8c.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">RTX_Conf_CM.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a309353d912327b7f4a2300711ee1b349"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a309353d912327b7f4a2300711ee1b349">OS_TASKCNT</a>&#160;&#160;&#160;6</td></tr>
<tr class="separator:a309353d912327b7f4a2300711ee1b349"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16495c133349f3e7c27ac933857c1a8c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a16495c133349f3e7c27ac933857c1a8c">OS_STKSIZE</a>&#160;&#160;&#160;50</td></tr>
<tr class="separator:a16495c133349f3e7c27ac933857c1a8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95362a96f44d4314f148ae24edd52f7c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a95362a96f44d4314f148ae24edd52f7c">OS_MAINSTKSIZE</a>&#160;&#160;&#160;50</td></tr>
<tr class="separator:a95362a96f44d4314f148ae24edd52f7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cfcbf2c4f9d0a63424a2a48592955b1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a7cfcbf2c4f9d0a63424a2a48592955b1">OS_PRIVCNT</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a7cfcbf2c4f9d0a63424a2a48592955b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e0d30986e4ae0df44f449a4b3b0fbec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a6e0d30986e4ae0df44f449a4b3b0fbec">OS_PRIVSTKSIZE</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a6e0d30986e4ae0df44f449a4b3b0fbec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ef9e00396f881f0fa9ac877150e5962"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a6ef9e00396f881f0fa9ac877150e5962">OS_STKCHECK</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:a6ef9e00396f881f0fa9ac877150e5962"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac820623da739e4219ee86f15bdcd9752"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#ac820623da739e4219ee86f15bdcd9752">OS_STKINIT</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:ac820623da739e4219ee86f15bdcd9752"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a786924d58be54e943a7e73458cebc51b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a786924d58be54e943a7e73458cebc51b">OS_RUNPRIV</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:a786924d58be54e943a7e73458cebc51b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adff23afdf544a322a38314870f8848b9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#adff23afdf544a322a38314870f8848b9">OS_CLOCK</a>&#160;&#160;&#160;12000000</td></tr>
<tr class="separator:adff23afdf544a322a38314870f8848b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6b10bd6d60e95ab28c775757f6bfbcc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#ab6b10bd6d60e95ab28c775757f6bfbcc">OS_TICK</a>&#160;&#160;&#160;1000</td></tr>
<tr class="separator:ab6b10bd6d60e95ab28c775757f6bfbcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae34f3058383d9fa9280bbf595618ab0a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#ae34f3058383d9fa9280bbf595618ab0a">OS_ROBIN</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ae34f3058383d9fa9280bbf595618ab0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad89fdd7232cfba74d400080b6bcc0012"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#ad89fdd7232cfba74d400080b6bcc0012">OS_ROBINTOUT</a>&#160;&#160;&#160;5</td></tr>
<tr class="separator:ad89fdd7232cfba74d400080b6bcc0012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23b0f1095632e58b5ac0d8f7dcfdfded"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a23b0f1095632e58b5ac0d8f7dcfdfded">OS_TIMERS</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:a23b0f1095632e58b5ac0d8f7dcfdfded"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90af874f1df4dfb0f8821cc2d860dae6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a90af874f1df4dfb0f8821cc2d860dae6">OS_TIMERPRIO</a>&#160;&#160;&#160;5</td></tr>
<tr class="separator:a90af874f1df4dfb0f8821cc2d860dae6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76d1b01799981a753fc528e600015627"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a76d1b01799981a753fc528e600015627">OS_TIMERSTKSZ</a>&#160;&#160;&#160;50</td></tr>
<tr class="separator:a76d1b01799981a753fc528e600015627"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29701cff84a42494279367ad018f252d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a29701cff84a42494279367ad018f252d">OS_TIMERCBQS</a>&#160;&#160;&#160;4</td></tr>
<tr class="separator:a29701cff84a42494279367ad018f252d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93c8e36d441750016f9f72e102f68d66"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a93c8e36d441750016f9f72e102f68d66">OS_FIFOSZ</a>&#160;&#160;&#160;16</td></tr>
<tr class="separator:a93c8e36d441750016f9f72e102f68d66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad11cf133eea28b601f9a63cd9af9b786"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#ad11cf133eea28b601f9a63cd9af9b786">OS_MUTEXCNT</a>&#160;&#160;&#160;8</td></tr>
<tr class="separator:ad11cf133eea28b601f9a63cd9af9b786"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d55a070ddb219165bd4287f08318d51"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a9d55a070ddb219165bd4287f08318d51">OS_TRV</a>&#160;&#160;&#160;((uint32_t)(((double)<a class="el" href="RTX__Conf__CM_8c.html#adff23afdf544a322a38314870f8848b9">OS_CLOCK</a>*(double)<a class="el" href="RTX__Conf__CM_8c.html#ab6b10bd6d60e95ab28c775757f6bfbcc">OS_TICK</a>)/1E6)-1)</td></tr>
<tr class="separator:a9d55a070ddb219165bd4287f08318d51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf8311a7a239ec56c6d725f926ba766d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#abf8311a7a239ec56c6d725f926ba766d">OS_ERROR_STACK_OVF</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:abf8311a7a239ec56c6d725f926ba766d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a075d54df14c85a6afe32b7f5c99c9c29"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a075d54df14c85a6afe32b7f5c99c9c29">OS_ERROR_FIFO_OVF</a>&#160;&#160;&#160;2</td></tr>
<tr class="separator:a075d54df14c85a6afe32b7f5c99c9c29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab715d7d66c341c067ef0a97b55db8a10"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#ab715d7d66c341c067ef0a97b55db8a10">OS_ERROR_MBX_OVF</a>&#160;&#160;&#160;3</td></tr>
<tr class="separator:ab715d7d66c341c067ef0a97b55db8a10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79d7e388d951f11bd0dabd13f722cea8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a79d7e388d951f11bd0dabd13f722cea8">OS_ERROR_TIMER_OVF</a>&#160;&#160;&#160;4</td></tr>
<tr class="separator:a79d7e388d951f11bd0dabd13f722cea8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gafb4dc4d3dff8343a393726d2860282e4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__RTX__Global__Functions.html#gafb4dc4d3dff8343a393726d2860282e4">os_idle_demon</a> (void)</td></tr>
<tr class="memdesc:gafb4dc4d3dff8343a393726d2860282e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The idle demon is running when no other thread is ready to run. <a href="group__RTX__Global__Functions.html#gafb4dc4d3dff8343a393726d2860282e4">More...</a><br/></td></tr>
<tr class="separator:gafb4dc4d3dff8343a393726d2860282e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga145e7eafdd042bb522020cbb3b469d9c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__RTX__Global__Functions.html#ga145e7eafdd042bb522020cbb3b469d9c">os_tick_init</a> (void)</td></tr>
<tr class="memdesc:ga145e7eafdd042bb522020cbb3b469d9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes an alternative hardware timer as RTX kernel timer. <a href="group__RTX__Global__Functions.html#ga145e7eafdd042bb522020cbb3b469d9c">More...</a><br/></td></tr>
<tr class="separator:ga145e7eafdd042bb522020cbb3b469d9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga567543bf38239a91f09751686c23017b"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__RTX__Global__Functions.html#ga567543bf38239a91f09751686c23017b">os_tick_val</a> (void)</td></tr>
<tr class="memdesc:ga567543bf38239a91f09751686c23017b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get alternative hardware timer's current value (0 .. OS_TRV) <a href="group__RTX__Global__Functions.html#ga567543bf38239a91f09751686c23017b">More...</a><br/></td></tr>
<tr class="separator:ga567543bf38239a91f09751686c23017b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad5deddec3fea0fb31798f571afc3c692"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__RTX__Global__Functions.html#gad5deddec3fea0fb31798f571afc3c692">os_tick_ovf</a> (void)</td></tr>
<tr class="memdesc:gad5deddec3fea0fb31798f571afc3c692"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get alternative hardware timer's overflow flag. <a href="group__RTX__Global__Functions.html#gad5deddec3fea0fb31798f571afc3c692">More...</a><br/></td></tr>
<tr class="separator:gad5deddec3fea0fb31798f571afc3c692"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga85dab8408f27236c7341a69feb6258c7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__RTX__Global__Functions.html#ga85dab8408f27236c7341a69feb6258c7">os_tick_irqack</a> (void)</td></tr>
<tr class="memdesc:ga85dab8408f27236c7341a69feb6258c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Acknowledge alternative hardware timer interrupt. <a href="group__RTX__Global__Functions.html#ga85dab8408f27236c7341a69feb6258c7">More...</a><br/></td></tr>
<tr class="separator:ga85dab8408f27236c7341a69feb6258c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a395cca131b7746fc43c104a3485b77f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html#a395cca131b7746fc43c104a3485b77f7">svcThreadGetId</a> (void)</td></tr>
<tr class="separator:a395cca131b7746fc43c104a3485b77f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga651ae76b3acf45f80bf0e0487b51d6e6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__RTX__Global__Functions.html#ga651ae76b3acf45f80bf0e0487b51d6e6">os_error</a> (uint32_t error_code)</td></tr>
<tr class="memdesc:ga651ae76b3acf45f80bf0e0487b51d6e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called when a runtime error is detected. <a href="group__RTX__Global__Functions.html#ga651ae76b3acf45f80bf0e0487b51d6e6">More...</a><br/></td></tr>
<tr class="separator:ga651ae76b3acf45f80bf0e0487b51d6e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="adff23afdf544a322a38314870f8848b9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_CLOCK&#160;&#160;&#160;12000000</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a075d54df14c85a6afe32b7f5c99c9c29"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_ERROR_FIFO_OVF&#160;&#160;&#160;2</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ab715d7d66c341c067ef0a97b55db8a10"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_ERROR_MBX_OVF&#160;&#160;&#160;3</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="abf8311a7a239ec56c6d725f926ba766d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_ERROR_STACK_OVF&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a79d7e388d951f11bd0dabd13f722cea8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_ERROR_TIMER_OVF&#160;&#160;&#160;4</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a93c8e36d441750016f9f72e102f68d66"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_FIFOSZ&#160;&#160;&#160;16</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a95362a96f44d4314f148ae24edd52f7c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_MAINSTKSIZE&#160;&#160;&#160;50</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ad11cf133eea28b601f9a63cd9af9b786"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_MUTEXCNT&#160;&#160;&#160;8</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a7cfcbf2c4f9d0a63424a2a48592955b1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_PRIVCNT&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a6e0d30986e4ae0df44f449a4b3b0fbec"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_PRIVSTKSIZE&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ae34f3058383d9fa9280bbf595618ab0a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_ROBIN&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ad89fdd7232cfba74d400080b6bcc0012"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_ROBINTOUT&#160;&#160;&#160;5</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a786924d58be54e943a7e73458cebc51b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_RUNPRIV&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a6ef9e00396f881f0fa9ac877150e5962"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_STKCHECK&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ac820623da739e4219ee86f15bdcd9752"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_STKINIT&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a16495c133349f3e7c27ac933857c1a8c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_STKSIZE&#160;&#160;&#160;50</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a309353d912327b7f4a2300711ee1b349"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_TASKCNT&#160;&#160;&#160;6</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ab6b10bd6d60e95ab28c775757f6bfbcc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_TICK&#160;&#160;&#160;1000</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a29701cff84a42494279367ad018f252d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_TIMERCBQS&#160;&#160;&#160;4</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a90af874f1df4dfb0f8821cc2d860dae6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_TIMERPRIO&#160;&#160;&#160;5</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a23b0f1095632e58b5ac0d8f7dcfdfded"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_TIMERS&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a76d1b01799981a753fc528e600015627"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_TIMERSTKSZ&#160;&#160;&#160;50</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a9d55a070ddb219165bd4287f08318d51"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OS_TRV&#160;&#160;&#160;((uint32_t)(((double)<a class="el" href="RTX__Conf__CM_8c.html#adff23afdf544a322a38314870f8848b9">OS_CLOCK</a>*(double)<a class="el" href="RTX__Conf__CM_8c.html#ab6b10bd6d60e95ab28c775757f6bfbcc">OS_TICK</a>)/1E6)-1)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a395cca131b7746fc43c104a3485b77f7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> svcThreadGetId </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</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="navelem"><a class="el" href="dir_67baed4ff719a838d401a6dc7774cf41.html">RTOS</a></li><li class="navelem"><a class="el" href="dir_8ecbca576638d6cf096e42200a0f53dc.html">RTX</a></li><li class="navelem"><a class="el" href="dir_899ec648bfef5b77e4c17b1ad40af9f5.html">Templates</a></li><li class="navelem"><a class="el" href="RTX__Conf__CM_8c.html">RTX_Conf_CM.c</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:01 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

@@ -0,0 +1,150 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Data Structures</title>
<title>CMSIS-RTOS: Data Structures</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</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">
$(document).ready(function(){initNavTree('annotated.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Data Structures</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="group__CMSIS__RTOS__Definitions.html#structos__mailQ" target="_self">os_mailQ</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent" target="_self">osEvent</a></td><td class="desc">Event structure contains detailed information about an event </td></tr>
<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="group__CMSIS__RTOS__Definitions.html#unionosEvent_8def" target="_self">osEvent.def</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="group__CMSIS__RTOS__Definitions.html#unionosEvent_8value" target="_self">osEvent.value</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="cmsis__os_8h.html#structosMailQDef__t" target="_self">osMailQDef_t</a></td><td class="desc">Definition structure for mail queue </td></tr>
<tr id="row_5_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="cmsis__os_8h.html#structosMessageQDef__t" target="_self">osMessageQDef_t</a></td><td class="desc">Definition structure for message queue </td></tr>
<tr id="row_6_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="cmsis__os_8h.html#structosMutexDef__t" target="_self">osMutexDef_t</a></td><td class="desc">Mutex Definition structure contains setup information for a mutex </td></tr>
<tr id="row_7_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="cmsis__os_8h.html#structosPoolDef__t" target="_self">osPoolDef_t</a></td><td class="desc">Definition structure for memory block allocation </td></tr>
<tr id="row_8_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="cmsis__os_8h.html#structosSemaphoreDef__t" target="_self">osSemaphoreDef_t</a></td><td class="desc">Semaphore Definition structure contains setup information for a semaphore </td></tr>
<tr id="row_9_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="cmsis__os_8h.html#structosThreadDef__t" target="_self">osThreadDef_t</a></td><td class="desc">Thread Definition structure contains startup information of a thread </td></tr>
<tr id="row_10_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="cmsis__os_8h.html#structosTimerDef__t" target="_self">osTimerDef_t</a></td><td class="desc">Timer Definition structure contains timer parameters </td></tr>
</table>
</div><!-- directory -->
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,14 @@
var annotated =
[
[ "os_mailQ", "group__CMSIS__RTOS__Definitions.html#structos__mailQ", null ],
[ "osEvent", "group__CMSIS__RTOS__Definitions.html#structosEvent", "group__CMSIS__RTOS__Definitions_structosEvent" ],
[ "osEvent.def", "group__CMSIS__RTOS__Definitions.html#unionosEvent_8def", "group__CMSIS__RTOS__Definitions_unionosEvent_8def" ],
[ "osEvent.value", "group__CMSIS__RTOS__Definitions.html#unionosEvent_8value", "group__CMSIS__RTOS__Definitions_unionosEvent_8value" ],
[ "osMailQDef_t", "cmsis__os_8h.html#structosMailQDef__t", "cmsis__os_8h_structosMailQDef__t" ],
[ "osMessageQDef_t", "cmsis__os_8h.html#structosMessageQDef__t", "cmsis__os_8h_structosMessageQDef__t" ],
[ "osMutexDef_t", "cmsis__os_8h.html#structosMutexDef__t", "cmsis__os_8h_structosMutexDef__t" ],
[ "osPoolDef_t", "cmsis__os_8h.html#structosPoolDef__t", "cmsis__os_8h_structosPoolDef__t" ],
[ "osSemaphoreDef_t", "cmsis__os_8h.html#structosSemaphoreDef__t", "cmsis__os_8h_structosSemaphoreDef__t" ],
[ "osThreadDef_t", "cmsis__os_8h.html#structosThreadDef__t", "cmsis__os_8h_structosThreadDef__t" ],
[ "osTimerDef_t", "cmsis__os_8h.html#structosTimerDef__t", "cmsis__os_8h_structosTimerDef__t" ]
];
Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

@@ -0,0 +1,144 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Data Structure Index</title>
<title>CMSIS-RTOS: Data Structure Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</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">
$(document).ready(function(){initNavTree('classes.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Data Structure Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_O">O</a></div>
<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td rowspan="2" valign="bottom"><a name="letter_o"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;o&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="cmsis__os_8h.html#structosMailQDef__t">osMailQDef_t</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="cmsis__os_8h.html#structosPoolDef__t">osPoolDef_t</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="cmsis__os_8h.html#structosTimerDef__t">osTimerDef_t</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="group__CMSIS__RTOS__Definitions.html#unionosEvent_8def">osEvent.def</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="cmsis__os_8h.html#structosMessageQDef__t">osMessageQDef_t</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="cmsis__os_8h.html#structosSemaphoreDef__t">osSemaphoreDef_t</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td valign="top"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structos__mailQ">os_mailQ</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="group__CMSIS__RTOS__Definitions.html#unionosEvent_8value">osEvent.value</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="cmsis__os_8h.html#structosMutexDef__t">osMutexDef_t</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="cmsis__os_8h.html#structosThreadDef__t">osThreadDef_t</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_O">O</a></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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

File diff suppressed because it is too large Load Diff
@@ -0,0 +1,895 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>cmsis_os.h File Reference</title>
<title>CMSIS-RTOS: cmsis_os.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('cmsis__os_8h.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">cmsis_os.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:structosThreadDef__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#structosThreadDef__t">osThreadDef_t</a></td></tr>
<tr class="memdesc:structosThreadDef__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thread Definition structure contains startup information of a thread. <a href="cmsis__os_8h.html#structosThreadDef__t">More...</a><br/></td></tr>
<tr class="separator:structosThreadDef__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structosTimerDef__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#structosTimerDef__t">osTimerDef_t</a></td></tr>
<tr class="memdesc:structosTimerDef__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timer Definition structure contains timer parameters. <a href="cmsis__os_8h.html#structosTimerDef__t">More...</a><br/></td></tr>
<tr class="separator:structosTimerDef__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structosMutexDef__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#structosMutexDef__t">osMutexDef_t</a></td></tr>
<tr class="memdesc:structosMutexDef__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mutex Definition structure contains setup information for a mutex. <a href="cmsis__os_8h.html#structosMutexDef__t">More...</a><br/></td></tr>
<tr class="separator:structosMutexDef__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structosSemaphoreDef__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#structosSemaphoreDef__t">osSemaphoreDef_t</a></td></tr>
<tr class="memdesc:structosSemaphoreDef__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Semaphore Definition structure contains setup information for a semaphore. <a href="cmsis__os_8h.html#structosSemaphoreDef__t">More...</a><br/></td></tr>
<tr class="separator:structosSemaphoreDef__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structosPoolDef__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#structosPoolDef__t">osPoolDef_t</a></td></tr>
<tr class="memdesc:structosPoolDef__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition structure for memory block allocation. <a href="cmsis__os_8h.html#structosPoolDef__t">More...</a><br/></td></tr>
<tr class="separator:structosPoolDef__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structosMessageQDef__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#structosMessageQDef__t">osMessageQDef_t</a></td></tr>
<tr class="memdesc:structosMessageQDef__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition structure for message queue. <a href="cmsis__os_8h.html#structosMessageQDef__t">More...</a><br/></td></tr>
<tr class="separator:structosMessageQDef__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structosMailQDef__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#structosMailQDef__t">osMailQDef_t</a></td></tr>
<tr class="memdesc:structosMailQDef__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition structure for mail queue. <a href="cmsis__os_8h.html#structosMailQDef__t">More...</a><br/></td></tr>
<tr class="separator:structosMailQDef__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structosEvent"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a></td></tr>
<tr class="memdesc:structosEvent"><td class="mdescLeft">&#160;</td><td class="mdescRight">Event structure contains detailed information about an event. <a href="group__CMSIS__RTOS__Definitions.html#structosEvent">More...</a><br/></td></tr>
<tr class="separator:structosEvent"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:unionosEvent_8value"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Definitions.html#unionosEvent_8value">osEvent.value</a></td></tr>
<tr class="separator:unionosEvent_8value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:unionosEvent_8def"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Definitions.html#unionosEvent_8def">osEvent.def</a></td></tr>
<tr class="separator:unionosEvent_8def"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga702196bacccbb978620c736b209387f1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga702196bacccbb978620c736b209387f1">osCMSIS</a>&#160;&#160;&#160;0x10002</td></tr>
<tr class="memdesc:ga702196bacccbb978620c736b209387f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">API version (main [31:16] .sub [15:0]) <a href="group__CMSIS__RTOS__KernelCtrl.html#ga702196bacccbb978620c736b209387f1">More...</a><br/></td></tr>
<tr class="separator:ga702196bacccbb978620c736b209387f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab78dce646fabec479c5f34bc5175b7de"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gab78dce646fabec479c5f34bc5175b7de">osCMSIS_KERNEL</a>&#160;&#160;&#160;0x10000</td></tr>
<tr class="memdesc:gab78dce646fabec479c5f34bc5175b7de"><td class="mdescLeft">&#160;</td><td class="mdescRight">RTOS identification and version (main [31:16] .sub [15:0]) <a href="group__CMSIS__RTOS__KernelCtrl.html#gab78dce646fabec479c5f34bc5175b7de">More...</a><br/></td></tr>
<tr class="separator:gab78dce646fabec479c5f34bc5175b7de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga47cf03658f01cdffca688e9096b58289"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga47cf03658f01cdffca688e9096b58289">osKernelSystemId</a>&#160;&#160;&#160;&quot;KERNEL V1.00&quot;</td></tr>
<tr class="memdesc:ga47cf03658f01cdffca688e9096b58289"><td class="mdescLeft">&#160;</td><td class="mdescRight">RTOS identification string. <a href="group__CMSIS__RTOS__KernelCtrl.html#ga47cf03658f01cdffca688e9096b58289">More...</a><br/></td></tr>
<tr class="separator:ga47cf03658f01cdffca688e9096b58289"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga22f7d235bc9f783933bd5a981fd79696"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga22f7d235bc9f783933bd5a981fd79696">osFeature_MainThread</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:ga22f7d235bc9f783933bd5a981fd79696"><td class="mdescLeft">&#160;</td><td class="mdescRight">main thread 1=main can be thread, 0=not available <a href="group__CMSIS__RTOS__KernelCtrl.html#ga22f7d235bc9f783933bd5a981fd79696">More...</a><br/></td></tr>
<tr class="separator:ga22f7d235bc9f783933bd5a981fd79696"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadd84b683001de327894851b428587caa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#gadd84b683001de327894851b428587caa">osFeature_Pool</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gadd84b683001de327894851b428587caa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Memory Pools: 1=available, 0=not available. <a href="group__CMSIS__RTOS__PoolMgmt.html#gadd84b683001de327894851b428587caa">More...</a><br/></td></tr>
<tr class="separator:gadd84b683001de327894851b428587caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaceb2e0071ce160d153047f2eac1aca8e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#gaceb2e0071ce160d153047f2eac1aca8e">osFeature_MailQ</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gaceb2e0071ce160d153047f2eac1aca8e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mail Queues: 1=available, 0=not available. <a href="group__CMSIS__RTOS__Mail.html#gaceb2e0071ce160d153047f2eac1aca8e">More...</a><br/></td></tr>
<tr class="separator:gaceb2e0071ce160d153047f2eac1aca8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga479a6561f859e3d4818e25708593d203"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html#ga479a6561f859e3d4818e25708593d203">osFeature_MessageQ</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:ga479a6561f859e3d4818e25708593d203"><td class="mdescLeft">&#160;</td><td class="mdescRight">Message Queues: 1=available, 0=not available. <a href="group__CMSIS__RTOS__Message.html#ga479a6561f859e3d4818e25708593d203">More...</a><br/></td></tr>
<tr class="separator:ga479a6561f859e3d4818e25708593d203"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga01edde265710d883b6e237d34a6ef4a6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga01edde265710d883b6e237d34a6ef4a6">osFeature_Signals</a>&#160;&#160;&#160;8</td></tr>
<tr class="memdesc:ga01edde265710d883b6e237d34a6ef4a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">maximum number of Signal Flags available per thread <a href="group__CMSIS__RTOS__SignalMgmt.html#ga01edde265710d883b6e237d34a6ef4a6">More...</a><br/></td></tr>
<tr class="separator:ga01edde265710d883b6e237d34a6ef4a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7da4c7bfb340779c9fc7b321f5ab3e3a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a">osFeature_Semaphore</a>&#160;&#160;&#160;30</td></tr>
<tr class="memdesc:ga7da4c7bfb340779c9fc7b321f5ab3e3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">maximum count for <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> function <a href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a">More...</a><br/></td></tr>
<tr class="separator:ga7da4c7bfb340779c9fc7b321f5ab3e3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6c97d38879ae86491628f6e647639bad"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Wait.html#ga6c97d38879ae86491628f6e647639bad">osFeature_Wait</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:ga6c97d38879ae86491628f6e647639bad"><td class="mdescLeft">&#160;</td><td class="mdescRight">osWait function: 1=available, 0=not available <a href="group__CMSIS__RTOS__Wait.html#ga6c97d38879ae86491628f6e647639bad">More...</a><br/></td></tr>
<tr class="separator:ga6c97d38879ae86491628f6e647639bad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae554ec16c23c5b7d65affade2a351891"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae554ec16c23c5b7d65affade2a351891">osFeature_SysTick</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gae554ec16c23c5b7d65affade2a351891"><td class="mdescLeft">&#160;</td><td class="mdescRight">osKernelSysTick functions: 1=available, 0=not available <a href="group__CMSIS__RTOS__KernelCtrl.html#gae554ec16c23c5b7d65affade2a351891">More...</a><br/></td></tr>
<tr class="separator:gae554ec16c23c5b7d65affade2a351891"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9eb9a7a797a42e4b55eb171ecc609ddb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>&#160;&#160;&#160;0xFFFFFFFF</td></tr>
<tr class="memdesc:a9eb9a7a797a42e4b55eb171ecc609ddb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timeout value. <a href="#a9eb9a7a797a42e4b55eb171ecc609ddb">More...</a><br/></td></tr>
<tr class="separator:a9eb9a7a797a42e4b55eb171ecc609ddb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9e0954d52722673e2031233a2ab99960"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>&#160;&#160;&#160;100000000</td></tr>
<tr class="memdesc:ga9e0954d52722673e2031233a2ab99960"><td class="mdescLeft">&#160;</td><td class="mdescRight">The RTOS kernel system timer frequency in Hz. <a href="group__CMSIS__RTOS__KernelCtrl.html#ga9e0954d52722673e2031233a2ab99960">More...</a><br/></td></tr>
<tr class="separator:ga9e0954d52722673e2031233a2ab99960"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae12c190af42d7310d8006d64f4ed5a88"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae12c190af42d7310d8006d64f4ed5a88">osKernelSysTickMicroSec</a>(microsec)&#160;&#160;&#160;(((uint64_t)microsec * (<a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>)) / 1000000)</td></tr>
<tr class="memdesc:gae12c190af42d7310d8006d64f4ed5a88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a microseconds value to a RTOS kernel system timer value. <a href="group__CMSIS__RTOS__KernelCtrl.html#gae12c190af42d7310d8006d64f4ed5a88">More...</a><br/></td></tr>
<tr class="separator:gae12c190af42d7310d8006d64f4ed5a88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaee93d929beb350f16e5cc7fa602e229f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a>(name, priority, instances, stacksz)</td></tr>
<tr class="memdesc:gaee93d929beb350f16e5cc7fa602e229f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a Thread Definition with function, priority, and stack requirements. <a href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">More...</a><br/></td></tr>
<tr class="separator:gaee93d929beb350f16e5cc7fa602e229f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf0c7c6b5e09f8be198312144b5c9e453"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(name)&#160;&#160;&#160;&amp;os_thread_def_##name</td></tr>
<tr class="memdesc:gaf0c7c6b5e09f8be198312144b5c9e453"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Thread definition. <a href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">More...</a><br/></td></tr>
<tr class="separator:gaf0c7c6b5e09f8be198312144b5c9e453"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1c720627e08d1cc1afcad44e799ed492"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga1c720627e08d1cc1afcad44e799ed492">osTimerDef</a>(name, function)</td></tr>
<tr class="memdesc:ga1c720627e08d1cc1afcad44e799ed492"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define a Timer object. <a href="group__CMSIS__RTOS__TimerMgmt.html#ga1c720627e08d1cc1afcad44e799ed492">More...</a><br/></td></tr>
<tr class="separator:ga1c720627e08d1cc1afcad44e799ed492"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1b8d670eaf964b2910fa06885e650678"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga1b8d670eaf964b2910fa06885e650678">osTimer</a>(name)&#160;&#160;&#160;&amp;os_timer_def_##name</td></tr>
<tr class="memdesc:ga1b8d670eaf964b2910fa06885e650678"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Timer definition. <a href="group__CMSIS__RTOS__TimerMgmt.html#ga1b8d670eaf964b2910fa06885e650678">More...</a><br/></td></tr>
<tr class="separator:ga1b8d670eaf964b2910fa06885e650678"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9b522438489d7c402c95332b58bc94f3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga9b522438489d7c402c95332b58bc94f3">osMutexDef</a>(name)&#160;&#160;&#160;const <a class="el" href="cmsis__os_8h.html#structosMutexDef__t">osMutexDef_t</a> os_mutex_def_##name = { 0 }</td></tr>
<tr class="memdesc:ga9b522438489d7c402c95332b58bc94f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define a Mutex. <a href="group__CMSIS__RTOS__MutexMgmt.html#ga9b522438489d7c402c95332b58bc94f3">More...</a><br/></td></tr>
<tr class="separator:ga9b522438489d7c402c95332b58bc94f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1122a86faa64b4a0880c76cf68d0c934"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">osMutex</a>(name)&#160;&#160;&#160;&amp;os_mutex_def_##name</td></tr>
<tr class="memdesc:ga1122a86faa64b4a0880c76cf68d0c934"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Mutex definition. <a href="group__CMSIS__RTOS__MutexMgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">More...</a><br/></td></tr>
<tr class="separator:ga1122a86faa64b4a0880c76cf68d0c934"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9e66fe361749071e5ab87826c43c2f1b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga9e66fe361749071e5ab87826c43c2f1b">osSemaphoreDef</a>(name)&#160;&#160;&#160;const <a class="el" href="cmsis__os_8h.html#structosSemaphoreDef__t">osSemaphoreDef_t</a> os_semaphore_def_##name = { 0 }</td></tr>
<tr class="memdesc:ga9e66fe361749071e5ab87826c43c2f1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define a Semaphore object. <a href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga9e66fe361749071e5ab87826c43c2f1b">More...</a><br/></td></tr>
<tr class="separator:ga9e66fe361749071e5ab87826c43c2f1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga03761ee8d2c3cd4544e18364ab301dac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">osSemaphore</a>(name)&#160;&#160;&#160;&amp;os_semaphore_def_##name</td></tr>
<tr class="memdesc:ga03761ee8d2c3cd4544e18364ab301dac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Semaphore definition. <a href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">More...</a><br/></td></tr>
<tr class="separator:ga03761ee8d2c3cd4544e18364ab301dac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga87b471d4fe2d5dbd0040708edd52771b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">osPoolDef</a>(name, no, type)</td></tr>
<tr class="memdesc:ga87b471d4fe2d5dbd0040708edd52771b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define a Memory Pool. <a href="group__CMSIS__RTOS__PoolMgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">More...</a><br/></td></tr>
<tr class="separator:ga87b471d4fe2d5dbd0040708edd52771b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5f0b204a82327533d420210125c90697"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a>(name)&#160;&#160;&#160;&amp;os_pool_def_##name</td></tr>
<tr class="memdesc:ga5f0b204a82327533d420210125c90697"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Memory Pool definition. <a href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">More...</a><br/></td></tr>
<tr class="separator:ga5f0b204a82327533d420210125c90697"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac9a6a6276c12609793e7701afcc82326"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html#gac9a6a6276c12609793e7701afcc82326">osMessageQDef</a>(name, queue_sz, type)</td></tr>
<tr class="memdesc:gac9a6a6276c12609793e7701afcc82326"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a Message Queue Definition. <a href="group__CMSIS__RTOS__Message.html#gac9a6a6276c12609793e7701afcc82326">More...</a><br/></td></tr>
<tr class="separator:gac9a6a6276c12609793e7701afcc82326"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2d446a0b4bb90bf05d6f92eedeaabc97"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">osMessageQ</a>(name)&#160;&#160;&#160;&amp;os_messageQ_def_##name</td></tr>
<tr class="memdesc:ga2d446a0b4bb90bf05d6f92eedeaabc97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Message Queue Definition. <a href="group__CMSIS__RTOS__Message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">More...</a><br/></td></tr>
<tr class="separator:ga2d446a0b4bb90bf05d6f92eedeaabc97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga58d712b16c0c6668059f509386d1e55b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#ga58d712b16c0c6668059f509386d1e55b">osMailQDef</a>(name, queue_sz, type)</td></tr>
<tr class="memdesc:ga58d712b16c0c6668059f509386d1e55b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a Mail Queue Definition. <a href="group__CMSIS__RTOS__Mail.html#ga58d712b16c0c6668059f509386d1e55b">More...</a><br/></td></tr>
<tr class="separator:ga58d712b16c0c6668059f509386d1e55b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad2deeb66d51ade54e63d8f87ff2ec9d2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">osMailQ</a>(name)&#160;&#160;&#160;&amp;os_mailQ_def_##name</td></tr>
<tr class="memdesc:gad2deeb66d51ade54e63d8f87ff2ec9d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Mail Queue Definition. <a href="group__CMSIS__RTOS__Mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">More...</a><br/></td></tr>
<tr class="separator:gad2deeb66d51ade54e63d8f87ff2ec9d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:aee631e5ea1b700fc35695cc7bc574cf7"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#aee631e5ea1b700fc35695cc7bc574cf7">os_pthread</a> )(void const *argument)</td></tr>
<tr class="memdesc:aee631e5ea1b700fc35695cc7bc574cf7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Entry point of a thread. <a href="#aee631e5ea1b700fc35695cc7bc574cf7">More...</a><br/></td></tr>
<tr class="separator:aee631e5ea1b700fc35695cc7bc574cf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2d85e49bde9f6951ff3545cd323f065"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#aa2d85e49bde9f6951ff3545cd323f065">os_ptimer</a> )(void const *argument)</td></tr>
<tr class="memdesc:aa2d85e49bde9f6951ff3545cd323f065"><td class="mdescLeft">&#160;</td><td class="mdescRight">Entry point of a timer call back function. <a href="#aa2d85e49bde9f6951ff3545cd323f065">More...</a><br/></td></tr>
<tr class="separator:aa2d85e49bde9f6951ff3545cd323f065"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adfeb153a84a81309e2d958268197617f"><td class="memItemLeft" align="right" valign="top">typedef struct os_thread_cb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a></td></tr>
<tr class="memdesc:adfeb153a84a81309e2d958268197617f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thread ID identifies the thread (pointer to a thread control block). <a href="#adfeb153a84a81309e2d958268197617f">More...</a><br/></td></tr>
<tr class="separator:adfeb153a84a81309e2d958268197617f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8530dd4273f1f5382187732e14fcaa7"><td class="memItemLeft" align="right" valign="top">typedef struct os_timer_cb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a></td></tr>
<tr class="memdesc:ab8530dd4273f1f5382187732e14fcaa7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timer ID identifies the timer (pointer to a timer control block). <a href="#ab8530dd4273f1f5382187732e14fcaa7">More...</a><br/></td></tr>
<tr class="separator:ab8530dd4273f1f5382187732e14fcaa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3263c1ad9fd79b84f908d65e8da44ac2"><td class="memItemLeft" align="right" valign="top">typedef struct os_mutex_cb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a></td></tr>
<tr class="memdesc:a3263c1ad9fd79b84f908d65e8da44ac2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mutex ID identifies the mutex (pointer to a mutex control block). <a href="#a3263c1ad9fd79b84f908d65e8da44ac2">More...</a><br/></td></tr>
<tr class="separator:a3263c1ad9fd79b84f908d65e8da44ac2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8968896c84094aa973683c84fa06f84"><td class="memItemLeft" align="right" valign="top">typedef struct os_semaphore_cb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a></td></tr>
<tr class="memdesc:aa8968896c84094aa973683c84fa06f84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Semaphore ID identifies the semaphore (pointer to a semaphore control block). <a href="#aa8968896c84094aa973683c84fa06f84">More...</a><br/></td></tr>
<tr class="separator:aa8968896c84094aa973683c84fa06f84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08d2e20fd9bbd96220fe068d420f3686"><td class="memItemLeft" align="right" valign="top">typedef struct os_pool_cb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a></td></tr>
<tr class="memdesc:a08d2e20fd9bbd96220fe068d420f3686"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pool ID identifies the memory pool (pointer to a memory pool control block). <a href="#a08d2e20fd9bbd96220fe068d420f3686">More...</a><br/></td></tr>
<tr class="separator:a08d2e20fd9bbd96220fe068d420f3686"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9ec70c32c6c521970636b521e12d17f"><td class="memItemLeft" align="right" valign="top">typedef struct os_messageQ_cb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a></td></tr>
<tr class="memdesc:ad9ec70c32c6c521970636b521e12d17f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Message ID identifies the message queue (pointer to a message queue control block). <a href="#ad9ec70c32c6c521970636b521e12d17f">More...</a><br/></td></tr>
<tr class="separator:ad9ec70c32c6c521970636b521e12d17f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1dac049fb7725a8af8b26c71cbb373b5"><td class="memItemLeft" align="right" valign="top">typedef struct os_mailQ_cb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a></td></tr>
<tr class="memdesc:a1dac049fb7725a8af8b26c71cbb373b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mail ID identifies the mail queue (pointer to a mail queue control block). <a href="#a1dac049fb7725a8af8b26c71cbb373b5">More...</a><br/></td></tr>
<tr class="separator:a1dac049fb7725a8af8b26c71cbb373b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga7f2b42f1983b9107775ec2a1c69a849a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> { <br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81">osPriorityIdle</a> = -3,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4">osPriorityLow</a> = -2,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6">osPriorityBelowNormal</a> = -1,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a> = 0,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b">osPriorityAboveNormal</a> = +1,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">osPriorityHigh</a> = +2,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af">osPriorityRealtime</a> = +3,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4">osPriorityError</a> = 0x84
<br/>
}</td></tr>
<tr class="memdesc:ga7f2b42f1983b9107775ec2a1c69a849a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Priority used for thread control. <a href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">More...</a><br/></td></tr>
<tr class="separator:ga7f2b42f1983b9107775ec2a1c69a849a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2e091fefc4c767117727bd5aba4d99e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#ae2e091fefc4c767117727bd5aba4d99e">osStatus</a> { <br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a> = 0,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518">osEventSignal</a> = 0x08,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342">osEventMessage</a> = 0x10,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926">osEventMail</a> = 0x20,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177">osEventTimeout</a> = 0x40,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109">osErrorParameter</a> = 0x80,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d">osErrorResource</a> = 0x81,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467">osErrorTimeoutResource</a> = 0xC1,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f">osErrorISR</a> = 0x82,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65">osErrorISRRecursive</a> = 0x83,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f">osErrorPriority</a> = 0x84,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81">osErrorNoMemory</a> = 0x85,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee">osErrorValue</a> = 0x86,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc">osErrorOS</a> = 0xFF,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1">os_status_reserved</a> = 0x7FFFFFFF
<br/>
}</td></tr>
<tr class="memdesc:ae2e091fefc4c767117727bd5aba4d99e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Status code values returned by CMSIS-RTOS functions. <a href="cmsis__os_8h.html#ae2e091fefc4c767117727bd5aba4d99e">More...</a><br/></td></tr>
<tr class="separator:ae2e091fefc4c767117727bd5aba4d99e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adac860eb9e1b4b0619271e6595ed83d9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#adac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a> { <br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951">osTimerOnce</a> = 0,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788">osTimerPeriodic</a> = 1
<br/>
}</td></tr>
<tr class="memdesc:adac860eb9e1b4b0619271e6595ed83d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timer type value for the timer definition. <a href="cmsis__os_8h.html#adac860eb9e1b4b0619271e6595ed83d9">More...</a><br/></td></tr>
<tr class="separator:adac860eb9e1b4b0619271e6595ed83d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga53d078a801022e202e8115c083ece68e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga53d078a801022e202e8115c083ece68e">osKernelInitialize</a> (void)</td></tr>
<tr class="memdesc:ga53d078a801022e202e8115c083ece68e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the RTOS Kernel for creating objects. <a href="group__CMSIS__RTOS__KernelCtrl.html#ga53d078a801022e202e8115c083ece68e">More...</a><br/></td></tr>
<tr class="separator:ga53d078a801022e202e8115c083ece68e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaab668ffd2ea76bb0a77ab0ab385eaef2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a> (void)</td></tr>
<tr class="memdesc:gaab668ffd2ea76bb0a77ab0ab385eaef2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start the RTOS Kernel. <a href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">More...</a><br/></td></tr>
<tr class="separator:gaab668ffd2ea76bb0a77ab0ab385eaef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3b571de44cd3094c643247a7397f86b5"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga3b571de44cd3094c643247a7397f86b5">osKernelRunning</a> (void)</td></tr>
<tr class="memdesc:ga3b571de44cd3094c643247a7397f86b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the RTOS kernel is already started. <a href="group__CMSIS__RTOS__KernelCtrl.html#ga3b571de44cd3094c643247a7397f86b5">More...</a><br/></td></tr>
<tr class="separator:ga3b571de44cd3094c643247a7397f86b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad0262e4688e95d1e9038afd9bcc16001"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gad0262e4688e95d1e9038afd9bcc16001">osKernelSysTick</a> (void)</td></tr>
<tr class="memdesc:gad0262e4688e95d1e9038afd9bcc16001"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the RTOS kernel system timer counter. <a href="group__CMSIS__RTOS__KernelCtrl.html#gad0262e4688e95d1e9038afd9bcc16001">More...</a><br/></td></tr>
<tr class="separator:gad0262e4688e95d1e9038afd9bcc16001"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac59b5713cb083702dce759c73fd90dff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosThreadDef__t">osThreadDef_t</a> *thread_def, void *argument)</td></tr>
<tr class="memdesc:gac59b5713cb083702dce759c73fd90dff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a thread and add it to Active Threads and set it to state READY. <a href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">More...</a><br/></td></tr>
<tr class="separator:gac59b5713cb083702dce759c73fd90dff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab1df2a28925862ef8f9cf4e1c995c5a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a> (void)</td></tr>
<tr class="memdesc:gab1df2a28925862ef8f9cf4e1c995c5a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the thread ID of the current running thread. <a href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">More...</a><br/></td></tr>
<tr class="separator:gab1df2a28925862ef8f9cf4e1c995c5a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaea135bb90eb853eff39e0800b91bbeab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr>
<tr class="memdesc:gaea135bb90eb853eff39e0800b91bbeab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Terminate execution of a thread and remove it from Active Threads. <a href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">More...</a><br/></td></tr>
<tr class="separator:gaea135bb90eb853eff39e0800b91bbeab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf13a667493c5d629a90c13e113b99233"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a> (void)</td></tr>
<tr class="memdesc:gaf13a667493c5d629a90c13e113b99233"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pass control to next thread that is in state <b>READY</b>. <a href="group__CMSIS__RTOS__ThreadMgmt.html#gaf13a667493c5d629a90c13e113b99233">More...</a><br/></td></tr>
<tr class="separator:gaf13a667493c5d629a90c13e113b99233"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">osThreadSetPriority</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id, <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> priority)</td></tr>
<tr class="memdesc:ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change priority of an active thread. <a href="group__CMSIS__RTOS__ThreadMgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">More...</a><br/></td></tr>
<tr class="separator:ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4299d838978bc2aae5e4350754e6a4e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga4299d838978bc2aae5e4350754e6a4e9">osThreadGetPriority</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr>
<tr class="memdesc:ga4299d838978bc2aae5e4350754e6a4e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get current priority of an active thread. <a href="group__CMSIS__RTOS__ThreadMgmt.html#ga4299d838978bc2aae5e4350754e6a4e9">More...</a><br/></td></tr>
<tr class="separator:ga4299d838978bc2aae5e4350754e6a4e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga02e19d5e723bfb06ba9324d625162255"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a> (uint32_t millisec)</td></tr>
<tr class="memdesc:ga02e19d5e723bfb06ba9324d625162255"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for Timeout (Time Delay). <a href="group__CMSIS__RTOS__Wait.html#ga02e19d5e723bfb06ba9324d625162255">More...</a><br/></td></tr>
<tr class="separator:ga02e19d5e723bfb06ba9324d625162255"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8470c8aaedfde524a44e22e5b2328285"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Wait.html#ga8470c8aaedfde524a44e22e5b2328285">osWait</a> (uint32_t millisec)</td></tr>
<tr class="memdesc:ga8470c8aaedfde524a44e22e5b2328285"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for Signal, Message, Mail, or Timeout. <a href="group__CMSIS__RTOS__Wait.html#ga8470c8aaedfde524a44e22e5b2328285">More...</a><br/></td></tr>
<tr class="separator:ga8470c8aaedfde524a44e22e5b2328285"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaedd312bfdca04e0b8162b666e09a1ae6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosTimerDef__t">osTimerDef_t</a> *timer_def, <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a> type, void *argument)</td></tr>
<tr class="memdesc:gaedd312bfdca04e0b8162b666e09a1ae6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a timer. <a href="group__CMSIS__RTOS__TimerMgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">More...</a><br/></td></tr>
<tr class="separator:gaedd312bfdca04e0b8162b666e09a1ae6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga27a797a401b068e2644d1125f22a07ca"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga27a797a401b068e2644d1125f22a07ca">osTimerStart</a> (<a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> timer_id, uint32_t millisec)</td></tr>
<tr class="memdesc:ga27a797a401b068e2644d1125f22a07ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start or restart a timer. <a href="group__CMSIS__RTOS__TimerMgmt.html#ga27a797a401b068e2644d1125f22a07ca">More...</a><br/></td></tr>
<tr class="separator:ga27a797a401b068e2644d1125f22a07ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga58f36b121a812936435cacc6e1e0e091"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga58f36b121a812936435cacc6e1e0e091">osTimerStop</a> (<a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> timer_id)</td></tr>
<tr class="memdesc:ga58f36b121a812936435cacc6e1e0e091"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the timer. <a href="group__CMSIS__RTOS__TimerMgmt.html#ga58f36b121a812936435cacc6e1e0e091">More...</a><br/></td></tr>
<tr class="separator:ga58f36b121a812936435cacc6e1e0e091"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga746b8043d906849bd65e3900fcb483cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga746b8043d906849bd65e3900fcb483cf">osTimerDelete</a> (<a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> timer_id)</td></tr>
<tr class="memdesc:ga746b8043d906849bd65e3900fcb483cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a timer that was created by <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a>. <a href="group__CMSIS__RTOS__TimerMgmt.html#ga746b8043d906849bd65e3900fcb483cf">More...</a><br/></td></tr>
<tr class="separator:ga746b8043d906849bd65e3900fcb483cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3de2730654589d6c3559c4b9e2825553"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id, int32_t signals)</td></tr>
<tr class="memdesc:ga3de2730654589d6c3559c4b9e2825553"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the specified Signal Flags of an active thread. <a href="group__CMSIS__RTOS__SignalMgmt.html#ga3de2730654589d6c3559c4b9e2825553">More...</a><br/></td></tr>
<tr class="separator:ga3de2730654589d6c3559c4b9e2825553"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga87283a6ebc31ce9ed42baf3ea7e4eab6"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">osSignalClear</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id, int32_t signals)</td></tr>
<tr class="memdesc:ga87283a6ebc31ce9ed42baf3ea7e4eab6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the specified Signal Flags of an active thread. <a href="group__CMSIS__RTOS__SignalMgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">More...</a><br/></td></tr>
<tr class="separator:ga87283a6ebc31ce9ed42baf3ea7e4eab6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga38860acda96df47da6923348d96fc4c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a> (int32_t signals, uint32_t millisec)</td></tr>
<tr class="memdesc:ga38860acda96df47da6923348d96fc4c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for one or more Signal Flags to become signaled for the current <b>RUNNING</b> thread. <a href="group__CMSIS__RTOS__SignalMgmt.html#ga38860acda96df47da6923348d96fc4c9">More...</a><br/></td></tr>
<tr class="separator:ga38860acda96df47da6923348d96fc4c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5c9de56e717016e39e788064e9a291cc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosMutexDef__t">osMutexDef_t</a> *mutex_def)</td></tr>
<tr class="memdesc:ga5c9de56e717016e39e788064e9a291cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and Initialize a Mutex object. <a href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">More...</a><br/></td></tr>
<tr class="separator:ga5c9de56e717016e39e788064e9a291cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5e1752b73f573ee015dbd9ef1edaba13"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a> (<a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id, uint32_t millisec)</td></tr>
<tr class="memdesc:ga5e1752b73f573ee015dbd9ef1edaba13"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait until a Mutex becomes available. <a href="group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">More...</a><br/></td></tr>
<tr class="separator:ga5e1752b73f573ee015dbd9ef1edaba13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga006e4744d741e8e132c3d5bbc295afe1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">osMutexRelease</a> (<a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id)</td></tr>
<tr class="memdesc:ga006e4744d741e8e132c3d5bbc295afe1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Release a Mutex that was obtained by <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a>. <a href="group__CMSIS__RTOS__MutexMgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">More...</a><br/></td></tr>
<tr class="separator:ga006e4744d741e8e132c3d5bbc295afe1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac27e24135185d51d18f3dabc20910219"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#gac27e24135185d51d18f3dabc20910219">osMutexDelete</a> (<a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id)</td></tr>
<tr class="memdesc:gac27e24135185d51d18f3dabc20910219"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a Mutex that was created by <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>. <a href="group__CMSIS__RTOS__MutexMgmt.html#gac27e24135185d51d18f3dabc20910219">More...</a><br/></td></tr>
<tr class="separator:gac27e24135185d51d18f3dabc20910219"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga97381e8e55cd47cec390bf57c96d6edb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosSemaphoreDef__t">osSemaphoreDef_t</a> *semaphore_def, int32_t count)</td></tr>
<tr class="memdesc:ga97381e8e55cd47cec390bf57c96d6edb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and Initialize a Semaphore object used for managing resources. <a href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">More...</a><br/></td></tr>
<tr class="separator:ga97381e8e55cd47cec390bf57c96d6edb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacc15b0fc8ce1167fe43da33042e62098"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gacc15b0fc8ce1167fe43da33042e62098">osSemaphoreWait</a> (<a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore_id, uint32_t millisec)</td></tr>
<tr class="memdesc:gacc15b0fc8ce1167fe43da33042e62098"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait until a Semaphore token becomes available. <a href="group__CMSIS__RTOS__SemaphoreMgmt.html#gacc15b0fc8ce1167fe43da33042e62098">More...</a><br/></td></tr>
<tr class="separator:gacc15b0fc8ce1167fe43da33042e62098"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab108914997c49e14d8ff1ae0d1988ca0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a> (<a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore_id)</td></tr>
<tr class="memdesc:gab108914997c49e14d8ff1ae0d1988ca0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Release a Semaphore token. <a href="group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">More...</a><br/></td></tr>
<tr class="separator:gab108914997c49e14d8ff1ae0d1988ca0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabae2801ac2c096f6e8c69a264908f595"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gabae2801ac2c096f6e8c69a264908f595">osSemaphoreDelete</a> (<a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore_id)</td></tr>
<tr class="memdesc:gabae2801ac2c096f6e8c69a264908f595"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a Semaphore that was created by <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>. <a href="group__CMSIS__RTOS__SemaphoreMgmt.html#gabae2801ac2c096f6e8c69a264908f595">More...</a><br/></td></tr>
<tr class="separator:gabae2801ac2c096f6e8c69a264908f595"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga34af5c4f4ab38f4138ea7f1f9ece3a1a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosPoolDef__t">osPoolDef_t</a> *pool_def)</td></tr>
<tr class="memdesc:ga34af5c4f4ab38f4138ea7f1f9ece3a1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and Initialize a memory pool. <a href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">More...</a><br/></td></tr>
<tr class="separator:ga34af5c4f4ab38f4138ea7f1f9ece3a1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa0b2994f1a866c19e0d11e6e0d44f543"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a> (<a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> pool_id)</td></tr>
<tr class="memdesc:gaa0b2994f1a866c19e0d11e6e0d44f543"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a memory block from a memory pool. <a href="group__CMSIS__RTOS__PoolMgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">More...</a><br/></td></tr>
<tr class="separator:gaa0b2994f1a866c19e0d11e6e0d44f543"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9f129fcad4730fbd1048ad4fa262f36a"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">osPoolCAlloc</a> (<a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> pool_id)</td></tr>
<tr class="memdesc:ga9f129fcad4730fbd1048ad4fa262f36a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a memory block from a memory pool and set memory block to zero. <a href="group__CMSIS__RTOS__PoolMgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">More...</a><br/></td></tr>
<tr class="separator:ga9f129fcad4730fbd1048ad4fa262f36a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4a861e9c469c9d0daf5721bf174f8e54"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">osPoolFree</a> (<a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> pool_id, void *block)</td></tr>
<tr class="memdesc:ga4a861e9c469c9d0daf5721bf174f8e54"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return an allocated memory block back to a specific memory pool. <a href="group__CMSIS__RTOS__PoolMgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">More...</a><br/></td></tr>
<tr class="separator:ga4a861e9c469c9d0daf5721bf174f8e54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf3b9345cf426304d46565152bc26fb78"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosMessageQDef__t">osMessageQDef_t</a> *queue_def, <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr>
<tr class="memdesc:gaf3b9345cf426304d46565152bc26fb78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and Initialize a Message Queue. <a href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">More...</a><br/></td></tr>
<tr class="separator:gaf3b9345cf426304d46565152bc26fb78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac0dcf462fc92de8ffaba6cc004514a6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html#gac0dcf462fc92de8ffaba6cc004514a6d">osMessagePut</a> (<a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> queue_id, uint32_t info, uint32_t millisec)</td></tr>
<tr class="memdesc:gac0dcf462fc92de8ffaba6cc004514a6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Put a Message to a Queue. <a href="group__CMSIS__RTOS__Message.html#gac0dcf462fc92de8ffaba6cc004514a6d">More...</a><br/></td></tr>
<tr class="separator:gac0dcf462fc92de8ffaba6cc004514a6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6c6892b8f2296cca6becd57ca2d7e1ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">osMessageGet</a> (<a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> queue_id, uint32_t millisec)</td></tr>
<tr class="memdesc:ga6c6892b8f2296cca6becd57ca2d7e1ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a Message or Wait for a Message from a Queue. <a href="group__CMSIS__RTOS__Message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">More...</a><br/></td></tr>
<tr class="separator:ga6c6892b8f2296cca6becd57ca2d7e1ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa177e7fe5820dd70d8c9e46ded131174"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosMailQDef__t">osMailQDef_t</a> *queue_def, <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr>
<tr class="memdesc:gaa177e7fe5820dd70d8c9e46ded131174"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and Initialize mail queue. <a href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">More...</a><br/></td></tr>
<tr class="separator:gaa177e7fe5820dd70d8c9e46ded131174"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadf5ce811bd6a56e617e902a1db6c2194"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, uint32_t millisec)</td></tr>
<tr class="memdesc:gadf5ce811bd6a56e617e902a1db6c2194"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a memory block from a mail. <a href="group__CMSIS__RTOS__Mail.html#gadf5ce811bd6a56e617e902a1db6c2194">More...</a><br/></td></tr>
<tr class="separator:gadf5ce811bd6a56e617e902a1db6c2194"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8fde74f6fe5b9e88f75cc5eb8f2124fd"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">osMailCAlloc</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, uint32_t millisec)</td></tr>
<tr class="memdesc:ga8fde74f6fe5b9e88f75cc5eb8f2124fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a memory block from a mail and set memory block to zero. <a href="group__CMSIS__RTOS__Mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">More...</a><br/></td></tr>
<tr class="separator:ga8fde74f6fe5b9e88f75cc5eb8f2124fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga485ef6f81854ebda8ffbce4832181e02"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, void *mail)</td></tr>
<tr class="memdesc:ga485ef6f81854ebda8ffbce4832181e02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Put a mail to a queue. <a href="group__CMSIS__RTOS__Mail.html#ga485ef6f81854ebda8ffbce4832181e02">More...</a><br/></td></tr>
<tr class="separator:ga485ef6f81854ebda8ffbce4832181e02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac6ad7e6e7d6c4a80e60da22c57a42ccd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, uint32_t millisec)</td></tr>
<tr class="memdesc:gac6ad7e6e7d6c4a80e60da22c57a42ccd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a mail from a queue. <a href="group__CMSIS__RTOS__Mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">More...</a><br/></td></tr>
<tr class="separator:gac6ad7e6e7d6c4a80e60da22c57a42ccd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga27c1060cf21393f96b4fd1ed1c0167cc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">osMailFree</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, void *mail)</td></tr>
<tr class="memdesc:ga27c1060cf21393f96b4fd1ed1c0167cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free a memory block from a mail. <a href="group__CMSIS__RTOS__Mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">More...</a><br/></td></tr>
<tr class="separator:ga27c1060cf21393f96b4fd1ed1c0167cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="structosThreadDef__t" id="structosThreadDef__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct osThreadDef_t</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_thread_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="aa4c4115851a098c0b87358ab6c025603"></a>uint32_t</td>
<td class="fieldname">
instances</td>
<td class="fielddoc">
maximum number of instances of that thread function </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ad3c9624ee214329fb34e71f544a6933e"></a><a class="el" href="cmsis__os_8h.html#aee631e5ea1b700fc35695cc7bc574cf7">os_pthread</a></td>
<td class="fieldname">
pthread</td>
<td class="fielddoc">
start address of thread function </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a950b7f81ad4711959517296e63bc79d1"></a>uint32_t</td>
<td class="fieldname">
stacksize</td>
<td class="fielddoc">
stack size requirements in bytes; 0 is default stack size </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a15da8f23c6fe684b70a73646ada685e7"></a><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a></td>
<td class="fieldname">
tpriority</td>
<td class="fielddoc">
initial thread priority </td></tr>
</table>
</div>
</div>
<a name="structosTimerDef__t" id="structosTimerDef__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct osTimerDef_t</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_timer_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a15773df83aba93f8e61f3737af5fae47"></a><a class="el" href="cmsis__os_8h.html#aa2d85e49bde9f6951ff3545cd323f065">os_ptimer</a></td>
<td class="fieldname">
ptimer</td>
<td class="fielddoc">
start address of a timer function </td></tr>
</table>
</div>
</div>
<a name="structosMutexDef__t" id="structosMutexDef__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct osMutexDef_t</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_mutex_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a44b7a3baf02bac7ad707e8f2f5eca1ca"></a>uint32_t</td>
<td class="fieldname">
dummy</td>
<td class="fielddoc">
dummy value. </td></tr>
</table>
</div>
</div>
<a name="structosSemaphoreDef__t" id="structosSemaphoreDef__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct osSemaphoreDef_t</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_semaphore_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a44b7a3baf02bac7ad707e8f2f5eca1ca"></a>uint32_t</td>
<td class="fieldname">
dummy</td>
<td class="fielddoc">
dummy value. </td></tr>
</table>
</div>
</div>
<a name="structosPoolDef__t" id="structosPoolDef__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct osPoolDef_t</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_pool_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a4c2a0c691de3365c00ecd22d8102811f"></a>uint32_t</td>
<td class="fieldname">
item_sz</td>
<td class="fielddoc">
size of an item </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a269c3935f8bc66db70bccdd02cb05e3c"></a>void *</td>
<td class="fieldname">
pool</td>
<td class="fielddoc">
pointer to memory for pool </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ac112e786b2a234e0e45cb5bdbee53763"></a>uint32_t</td>
<td class="fieldname">
pool_sz</td>
<td class="fielddoc">
number of items (elements) in the pool </td></tr>
</table>
</div>
</div>
<a name="structosMessageQDef__t" id="structosMessageQDef__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct osMessageQDef_t</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_messageQ_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a4c2a0c691de3365c00ecd22d8102811f"></a>uint32_t</td>
<td class="fieldname">
item_sz</td>
<td class="fielddoc">
size of an item </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a269c3935f8bc66db70bccdd02cb05e3c"></a>void *</td>
<td class="fieldname">
pool</td>
<td class="fielddoc">
memory array for messages </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a8a83a3a8c0aa8057b13807d2a54077e0"></a>uint32_t</td>
<td class="fieldname">
queue_sz</td>
<td class="fielddoc">
number of elements in the queue </td></tr>
</table>
</div>
</div>
<a name="structosMailQDef__t" id="structosMailQDef__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct osMailQDef_t</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_mailQ_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a4c2a0c691de3365c00ecd22d8102811f"></a>uint32_t</td>
<td class="fieldname">
item_sz</td>
<td class="fielddoc">
size of an item </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a269c3935f8bc66db70bccdd02cb05e3c"></a>void *</td>
<td class="fieldname">
pool</td>
<td class="fielddoc">
memory array for mail </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a8a83a3a8c0aa8057b13807d2a54077e0"></a>uint32_t</td>
<td class="fieldname">
queue_sz</td>
<td class="fielddoc">
number of elements in the queue </td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a9eb9a7a797a42e4b55eb171ecc609ddb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osWaitForever&#160;&#160;&#160;0xFFFFFFFF</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osWaitForever</b> shall be consistent in every CMSIS-RTOS. wait forever timeout value </dd></dl>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="aee631e5ea1b700fc35695cc7bc574cf7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef void(* os_pthread)(void const *argument)</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>os_pthread</b> shall be consistent in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="aa2d85e49bde9f6951ff3545cd323f065"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef void(* os_ptimer)(void const *argument)</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>os_ptimer</b> shall be consistent in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="a1dac049fb7725a8af8b26c71cbb373b5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct os_mailQ_cb* <a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_mailQ_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="ad9ec70c32c6c521970636b521e12d17f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct os_messageQ_cb* <a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_messageQ_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="a3263c1ad9fd79b84f908d65e8da44ac2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct os_mutex_cb* <a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_mutex_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="a08d2e20fd9bbd96220fe068d420f3686"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct os_pool_cb* <a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_pool_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="aa8968896c84094aa973683c84fa06f84"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct os_semaphore_cb* <a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_semaphore_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="adfeb153a84a81309e2d958268197617f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct os_thread_cb* <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_thread_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="ab8530dd4273f1f5382187732e14fcaa7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct os_timer_cb* <a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_timer_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="adac860eb9e1b4b0619271e6595ed83d9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>os_timer_type</b> shall be consistent in every CMSIS-RTOS. </dd></dl>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951"></a>osTimerOnce</em>&#160;</td><td class="fielddoc">
<p>one-shot timer </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788"></a>osTimerPeriodic</em>&#160;</td><td class="fielddoc">
<p>repeating timer </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ae2e091fefc4c767117727bd5aba4d99e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osStatus</b> shall be consistent in every CMSIS-RTOS. </dd></dl>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f"></a>osOK</em>&#160;</td><td class="fielddoc">
<p>function completed; no error or event occurred. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518"></a>osEventSignal</em>&#160;</td><td class="fielddoc">
<p>function completed; signal event occurred. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342"></a>osEventMessage</em>&#160;</td><td class="fielddoc">
<p>function completed; message event occurred. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926"></a>osEventMail</em>&#160;</td><td class="fielddoc">
<p>function completed; mail event occurred. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177"></a>osEventTimeout</em>&#160;</td><td class="fielddoc">
<p>function completed; timeout occurred. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109"></a>osErrorParameter</em>&#160;</td><td class="fielddoc">
<p>parameter error: a mandatory parameter was missing or specified an incorrect object. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d"></a>osErrorResource</em>&#160;</td><td class="fielddoc">
<p>resource not available: a specified resource was not available. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467"></a>osErrorTimeoutResource</em>&#160;</td><td class="fielddoc">
<p>resource not available within given time: a specified resource was not available within the timeout period. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f"></a>osErrorISR</em>&#160;</td><td class="fielddoc">
<p>not allowed in ISR context: the function cannot be called from interrupt service routines. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65"></a>osErrorISRRecursive</em>&#160;</td><td class="fielddoc">
<p>function called multiple times from ISR with same object. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f"></a>osErrorPriority</em>&#160;</td><td class="fielddoc">
<p>system cannot determine priority or thread has illegal priority. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81"></a>osErrorNoMemory</em>&#160;</td><td class="fielddoc">
<p>system is out of memory: it was impossible to allocate or reserve memory for the operation. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee"></a>osErrorValue</em>&#160;</td><td class="fielddoc">
<p>value of a parameter is out of range. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc"></a>osErrorOS</em>&#160;</td><td class="fielddoc">
<p>unspecified RTOS error: run-time error but no other error message fits. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1"></a>os_status_reserved</em>&#160;</td><td class="fielddoc">
<p>prevent from enum down-size compiler optimization. </p>
</td></tr>
</table>
</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="navelem"><a class="el" href="dir_67baed4ff719a838d401a6dc7774cf41.html">RTOS</a></li><li class="navelem"><a class="el" href="dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2.html">Template</a></li><li class="navelem"><a class="el" href="cmsis__os_8h.html">cmsis_os.h</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:01 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,6 @@
var cmsis__os_8h_structosMailQDef__t =
[
[ "item_sz", "cmsis__os_8h.html#a4c2a0c691de3365c00ecd22d8102811f", null ],
[ "pool", "cmsis__os_8h.html#a269c3935f8bc66db70bccdd02cb05e3c", null ],
[ "queue_sz", "cmsis__os_8h.html#a8a83a3a8c0aa8057b13807d2a54077e0", null ]
];
@@ -0,0 +1,6 @@
var cmsis__os_8h_structosMessageQDef__t =
[
[ "item_sz", "cmsis__os_8h.html#a4c2a0c691de3365c00ecd22d8102811f", null ],
[ "pool", "cmsis__os_8h.html#a269c3935f8bc66db70bccdd02cb05e3c", null ],
[ "queue_sz", "cmsis__os_8h.html#a8a83a3a8c0aa8057b13807d2a54077e0", null ]
];
@@ -0,0 +1,4 @@
var cmsis__os_8h_structosMutexDef__t =
[
[ "dummy", "cmsis__os_8h.html#a44b7a3baf02bac7ad707e8f2f5eca1ca", null ]
];
@@ -0,0 +1,6 @@
var cmsis__os_8h_structosPoolDef__t =
[
[ "item_sz", "cmsis__os_8h.html#a4c2a0c691de3365c00ecd22d8102811f", null ],
[ "pool", "cmsis__os_8h.html#a269c3935f8bc66db70bccdd02cb05e3c", null ],
[ "pool_sz", "cmsis__os_8h.html#ac112e786b2a234e0e45cb5bdbee53763", null ]
];
@@ -0,0 +1,4 @@
var cmsis__os_8h_structosSemaphoreDef__t =
[
[ "dummy", "cmsis__os_8h.html#a44b7a3baf02bac7ad707e8f2f5eca1ca", null ]
];
@@ -0,0 +1,7 @@
var cmsis__os_8h_structosThreadDef__t =
[
[ "instances", "cmsis__os_8h.html#aa4c4115851a098c0b87358ab6c025603", null ],
[ "pthread", "cmsis__os_8h.html#ad3c9624ee214329fb34e71f544a6933e", null ],
[ "stacksize", "cmsis__os_8h.html#a950b7f81ad4711959517296e63bc79d1", null ],
[ "tpriority", "cmsis__os_8h.html#a15da8f23c6fe684b70a73646ada685e7", null ]
];
@@ -0,0 +1,4 @@
var cmsis__os_8h_structosTimerDef__t =
[
[ "ptimer", "cmsis__os_8h.html#a15773df83aba93f8e61f3737af5fae47", null ]
];
@@ -0,0 +1,175 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>cmsis_os.txt File Reference</title>
<title>CMSIS-RTOS: cmsis_os.txt File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('cmsis__os_8txt.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">cmsis_os.txt File Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gadac860eb9e1b4b0619271e6595ed83d9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a> { <br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951">osTimerOnce</a> = 0,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788">osTimerPeriodic</a> = 1
<br/>
}</td></tr>
<tr class="separator:gadac860eb9e1b4b0619271e6595ed83d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae2e091fefc4c767117727bd5aba4d99e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> { <br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a> = 0,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518">osEventSignal</a> = 0x08,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342">osEventMessage</a> = 0x10,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926">osEventMail</a> = 0x20,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177">osEventTimeout</a> = 0x40,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109">osErrorParameter</a> = 0x80,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d">osErrorResource</a> = 0x81,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467">osErrorTimeoutResource</a> = 0xC1,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f">osErrorISR</a> = 0x82,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65">osErrorISRRecursive</a> = 0x83,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f">osErrorPriority</a> = 0x84,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81">osErrorNoMemory</a> = 0x85,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee">osErrorValue</a> = 0x86,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc">osErrorOS</a> = 0xFF,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1">os_status_reserved</a> = 0x7FFFFFFF
<br/>
}</td></tr>
<tr class="separator:gae2e091fefc4c767117727bd5aba4d99e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="cmsis__os_8txt.html">cmsis_os.txt</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:01 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,147 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>cmsis_os_rtx_extensions.h File Reference</title>
<title>CMSIS-RTOS: cmsis_os_rtx_extensions.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('cmsis__os__rtx__extensions_8h.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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">cmsis_os_rtx_extensions.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga3e9c57746ccbdfe90464ad50513c569e"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__RTX__Global__Functions.html#ga3e9c57746ccbdfe90464ad50513c569e">os_suspend</a> (void)</td></tr>
<tr class="memdesc:ga3e9c57746ccbdfe90464ad50513c569e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Suspend the RTX task scheduler. <a href="group__RTX__Global__Functions.html#ga3e9c57746ccbdfe90464ad50513c569e">More...</a><br/></td></tr>
<tr class="separator:ga3e9c57746ccbdfe90464ad50513c569e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1b85a217d43e6b971ffcf24f8aae1c33"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__RTX__Global__Functions.html#ga1b85a217d43e6b971ffcf24f8aae1c33">os_resume</a> (uint32_t sleep_time)</td></tr>
<tr class="memdesc:ga1b85a217d43e6b971ffcf24f8aae1c33"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resume the RTX task scheduler. <a href="group__RTX__Global__Functions.html#ga1b85a217d43e6b971ffcf24f8aae1c33">More...</a><br/></td></tr>
<tr class="separator:ga1b85a217d43e6b971ffcf24f8aae1c33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafb4dc4d3dff8343a393726d2860282e4"><td class="memItemLeft" align="right" valign="top">__NO_RETURN void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__RTX__Global__Functions.html#gafb4dc4d3dff8343a393726d2860282e4">os_idle_demon</a> (void)</td></tr>
<tr class="memdesc:gafb4dc4d3dff8343a393726d2860282e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">OS idle demon (running when no other thread is ready to run). <a href="group__RTX__Global__Functions.html#gafb4dc4d3dff8343a393726d2860282e4">More...</a><br/></td></tr>
<tr class="separator:gafb4dc4d3dff8343a393726d2860282e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga651ae76b3acf45f80bf0e0487b51d6e6"><td class="memItemLeft" align="right" valign="top">__NO_RETURN void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__RTX__Global__Functions.html#ga651ae76b3acf45f80bf0e0487b51d6e6">os_error</a> (uint32_t error_code)</td></tr>
<tr class="memdesc:ga651ae76b3acf45f80bf0e0487b51d6e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">OS error callback (called when a runtime error is detected). <a href="group__RTX__Global__Functions.html#ga651ae76b3acf45f80bf0e0487b51d6e6">More...</a><br/></td></tr>
<tr class="separator:ga651ae76b3acf45f80bf0e0487b51d6e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_b0448b4e45a55bca3a46fdbabd848ed7.html">src</a></li><li class="navelem"><a class="el" href="dir_c0ad159d7acfc6a66622c7bec0ee8a21.html">RTX</a></li><li class="navelem"><a class="el" href="cmsis__os__rtx__extensions_8h.html">cmsis_os_rtx_extensions.h</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:01 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

@@ -0,0 +1,146 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Configure RTX</title>
<title>CMSIS-RTOS: Configure RTX</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('configure.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Configure RTX </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The file <a class="el" href="dirstructfiles.html#RTX_Conf_CM">RTX_Conf_CM.c</a> is used to define the configuration parameters of CMSIS-RTOS RTX. This file must be part of every project that is using the CMSIS-RTOS RTX kernel.</p>
<p>The configuration file uses <b>Configuration Wizard Annotations</b>. Refer to <b>Pack - Configuration Wizard Annotations</b> for details. Depending on the development tool that is used, this might lead to a more user friendly graphical representation of the settings. The following is a screenshot of the same configuration file using µVision's Configuration Wizard view:</p>
<div class="image">
<img src="config_wizard.png" alt="config_wizard.png"/>
<div class="caption">
RTX_Conf_CM.c in Configuration Wizard View</div></div>
<p> The configuration options are explained on these pages:</p>
<ul>
<li><a class="el" href="threadConfig.html">Thread Configuration</a></li>
<li><a class="el" href="timerTick.html">RTX Kernel Tick Timer Configuration</a></li>
<li><a class="el" href="systemConfig.html">System Configuration</a></li>
</ul>
<p>Other configuration options not covered by the Configuration Wizard are explained here:</p>
<ul>
<li><a class="el" href="lowPower.html">Configuration for Low-Power Modes</a></li>
<li><a class="el" href="svcFunctions.html">SVC Functions</a> </li>
</ul>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li><li class="navelem"><a class="el" href="rtxImplementation.html">RTX Implementation</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,21 @@
var configure =
[
[ "Thread Configuration", "threadConfig.html", [
[ "Configuration of Thread count and Stack Space", "threadConfig.html#stackConfig", null ],
[ "Stack Overflow Checking", "threadConfig.html#stackCheck", null ],
[ "Stack Usage Watermark", "threadConfig.html#stackUsage", null ],
[ "Processor Mode for Thread Execution", "threadConfig.html#processorMode", null ]
] ],
[ "RTX Kernel Tick Timer Configuration", "timerTick.html", [
[ "Usage of an Alternate Timer as RTX Kernel Timer", "timerTick.html#AltTimer", null ]
] ],
[ "System Configuration", "systemConfig.html", [
[ "Settings for Round-Robin Thread Switching", "systemConfig.html#RoundRobin", null ],
[ "User Timer Management", "systemConfig.html#UserTimer", null ],
[ "ISR FIFO Queue size", "systemConfig.html#ISRFIFO", null ]
] ],
[ "Configuration for Low-Power Modes", "lowPower.html", [
[ "Tick-less operation", "lowPower.html#TickLess", null ]
] ],
[ "SVC Functions", "svcFunctions.html", null ]
];
@@ -0,0 +1,142 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Building the RTX Library</title>
<title>CMSIS-RTOS: Building the RTX Library</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('creating_RTX_LIB.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Building the RTX Library </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The CMSIS Pack contains a µVision project for building the set of CMSIS-RTOS RTX libraries. This project can also be used as a reference for building the CMSIS-RTOS RTX libraries using a tool-chain of your choice.</p>
<ol type="1">
<li>Open the project <b>RTX_Lib_CM.uvproj</b> from the pack folder <b>CMSIS/RTOS/RTX/SRC/ARM/</b> in uVision.</li>
<li>Select the project target that matches your device's processor core. <br/>
The project provides target configuration for all supported Cortex-M targets supported by RTX. <br/>
Note: The targets <b>CMF4_LE</b> (Little Endian) and <b>CMF4_BE</b> (Big Endian) shall be used for Cortex-M4 as well as Cortex-M7 based devices with FPU.</li>
<li>You can find out about the required preprocessor defines in the dialogs <b>Options for Target - C/C++</b> and <b>Options for Target - Asm</b>.</li>
<li>From the <b>Project</b> window you find the list of source files required for a complete library build.</li>
</ol>
<div class="image">
<img src="own_lib_projwin.png" alt="own_lib_projwin.png"/>
<div class="caption">
Project with files for Cortex-M4 cores</div></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="navelem"><a class="el" href="index.html">index</a></li><li class="navelem"><a class="el" href="rtxImplementation.html">RTX Implementation</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,137 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>RTOS Directory Reference</title>
<title>CMSIS-RTOS: RTOS Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('dir_67baed4ff719a838d401a6dc7774cf41.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">RTOS Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:dir_8ecbca576638d6cf096e42200a0f53dc"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_8ecbca576638d6cf096e42200a0f53dc.html">RTX</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2.html">Template</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_67baed4ff719a838d401a6dc7774cf41.html">RTOS</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,135 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Templates Directory Reference</title>
<title>CMSIS-RTOS: Templates Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('dir_899ec648bfef5b77e4c17b1ad40af9f5.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Templates Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:RTX__Conf__CM_8c"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RTX__Conf__CM_8c.html">RTX_Conf_CM.c</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_67baed4ff719a838d401a6dc7774cf41.html">RTOS</a></li><li class="navelem"><a class="el" href="dir_8ecbca576638d6cf096e42200a0f53dc.html">RTX</a></li><li class="navelem"><a class="el" href="dir_899ec648bfef5b77e4c17b1ad40af9f5.html">Templates</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,135 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>RTX Directory Reference</title>
<title>CMSIS-RTOS: RTX Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('dir_8ecbca576638d6cf096e42200a0f53dc.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">RTX Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:dir_899ec648bfef5b77e4c17b1ad40af9f5"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_899ec648bfef5b77e4c17b1ad40af9f5.html">Templates</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_67baed4ff719a838d401a6dc7774cf41.html">RTOS</a></li><li class="navelem"><a class="el" href="dir_8ecbca576638d6cf096e42200a0f53dc.html">RTX</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,135 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Template Directory Reference</title>
<title>CMSIS-RTOS: Template Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Template Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:cmsis__os_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html">cmsis_os.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_67baed4ff719a838d401a6dc7774cf41.html">RTOS</a></li><li class="navelem"><a class="el" href="dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2.html">Template</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,135 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>src Directory Reference</title>
<title>CMSIS-RTOS: src Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('dir_b0448b4e45a55bca3a46fdbabd848ed7.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">src Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:dir_c0ad159d7acfc6a66622c7bec0ee8a21"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_c0ad159d7acfc6a66622c7bec0ee8a21.html">RTX</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_b0448b4e45a55bca3a46fdbabd848ed7.html">src</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,135 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>RTX Directory Reference</title>
<title>CMSIS-RTOS: RTX Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('dir_c0ad159d7acfc6a66622c7bec0ee8a21.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">RTX Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:cmsis__os__rtx__extensions_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os__rtx__extensions_8h.html">cmsis_os_rtx_extensions.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_b0448b4e45a55bca3a46fdbabd848ed7.html">src</a></li><li class="navelem"><a class="el" href="dir_c0ad159d7acfc6a66622c7bec0ee8a21.html">RTX</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,496 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Directory Structure and File Overview</title>
<title>CMSIS-RTOS: Directory Structure and File Overview</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('dirstructfiles.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Directory Structure and File Overview </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The following section provides an overview of the directory structure and the files that are relevant for the user's for CMSIS-RTOS RTX.</p>
<h1><a class="anchor" id="Folders"></a>
CMSIS-RTOS RTX Directory Structure</h1>
<p>The CMSIS-RTOS RTX is delivered in source code and several examples are provided.</p>
<table class="cmtable" summary="CMSIS-RTOS RTX Library Files">
<tr>
<th>Directory </th><th>Content </th></tr>
<tr>
<td>INC </td><td>The include files for CMSIS-RTOS RTX. <a class="el" href="cmsis__os_8h.html">cmsis_os.h</a> is the central include file for user applications. </td></tr>
<tr>
<td>LIB </td><td>CMSIS-RTOS RTX library files for ARMCC, GCC, and IAR Compiler. </td></tr>
<tr>
<td>SRC </td><td>Source code of CMSIS-RTOS RTX library along with project files for ARMCC, GCC, and IAR Compiler. </td></tr>
<tr>
<td>Templates </td><td>CMSIS-RTOS RTX configuration file (<a class="el" href="dirstructfiles.html#RTX_Conf_CM">RTX_Conf_CM.c</a>). </td></tr>
<tr>
<td>UserCode Templates </td><td>Template files for creating application projects with CMSIS-RTOS RTX. </td></tr>
</table>
<h1><a class="anchor" id="libFiles"></a>
CMSIS-RTOS RTX Library Files</h1>
<p>The CMSIS-RTOS RTX Library is available pre-compiled for ARMCC, GCC, and IAR C/C++ Compilers and supports all Cortex-M processor variants in every configuration.</p>
<table class="cmtable" summary="CMSIS-RTOS RTX Library Files">
<tr>
<th>Library File </th><th>Processor Configuration </th></tr>
<tr>
<td>LIB/ARM/RTX_CM0.lib </td><td>CMSIS-RTOS RTX Library for ARMCC Compiler, Cortex-M0 and M1, little-endian. </td></tr>
<tr>
<td>LIB/ARM/RTX_CM0_B.lib </td><td>CMSIS-RTOS RTX Library for ARMCC Compiler, Cortex-M0 and M1, big-endian. </td></tr>
<tr>
<td>LIB/ARM/RTX_CM3.lib </td><td>CMSIS-RTOS RTX Library for ARMCC Compiler, Cortex-M3, M4, and M7 without FPU, little-endian. </td></tr>
<tr>
<td>LIB/ARM/RTX_CM3_B.lib </td><td>CMSIS-RTOS RTX Library for ARMCC Compiler, Cortex-M3, M4, and M7 without FPU, big-endian. </td></tr>
<tr>
<td>LIB/ARM/RTX_CM4.lib </td><td>CMSIS-RTOS RTX Library for ARMCC Compiler, Cortex-M4 and M7 with FPU, little-endian. </td></tr>
<tr>
<td>LIB/ARM/RTX_CM4_B.lib </td><td>CMSIS-RTOS RTX Library for ARMCC Compiler, Cortex-M4 and M7 with FPU, big-endian. </td></tr>
<tr>
<td>LIB/GCC/libRTX_CM0.a </td><td>CMSIS-RTOS RTX Library for GCC Compiler, Cortex-M0 and M1, little-endian. </td></tr>
<tr>
<td>LIB/GCC/libRTX_CM0_B.a </td><td>CMSIS-RTOS RTX Library for GCC Compiler, Cortex-M0 and M1, big-endian. </td></tr>
<tr>
<td>LIB/GCC/libRTX_CM3.a </td><td>CMSIS-RTOS RTX Library for GCC Compiler, Cortex-M3, M4, and M7 without FPU, little-endian. </td></tr>
<tr>
<td>LIB/GCC/libRTX_CM3_B.a </td><td>CMSIS-RTOS RTX Library for GCC Compiler, Cortex-M3, M4, and M7 without FPU, big-endian. </td></tr>
<tr>
<td>LIB/GCC/libRTX_CM4.a </td><td>CMSIS-RTOS RTX Library for GCC Compiler, Cortex-M4 and M7 with FPU, little-endian. </td></tr>
<tr>
<td>LIB/GCC/libRTX_CM4_B.a </td><td>CMSIS-RTOS RTX Library for GCC Compiler, Cortex-M4 and M7 with FPU, big-endian. </td></tr>
<tr>
<td>LIB/IAR/RTX_CM0.lib </td><td>CMSIS-RTOS RTX Library for IAR Compiler, Cortex-M0 and M1, little-endian. </td></tr>
<tr>
<td>LIB/IAR/RTX_CM0_B.lib </td><td>CMSIS-RTOS RTX Library for IAR Compiler, Cortex-M0 and M1, big-endian. </td></tr>
<tr>
<td>LIB/IAR/RTX_CM3.lib </td><td>CMSIS-RTOS RTX Library for IAR Compiler, Cortex-M3, M4, and M7 without FPU, little-endian. </td></tr>
<tr>
<td>LIB/IAR/RTX_CM3_B.lib </td><td>CMSIS-RTOS RTX Library for IAR Compiler, Cortex-M3, M4, and M7 without FPU, big-endian. </td></tr>
<tr>
<td>LIB/IAR/RTX_CM4.lib </td><td>CMSIS-RTOS RTX Library for IAR Compiler, Cortex-M4 and M7 with FPU, little-endian. </td></tr>
<tr>
<td>LIB/IAR/RTX_CM4_B.lib </td><td>CMSIS-RTOS RTX Library for IAR Compiler, Cortex-M4 and M7 with FPU, big-endian. </td></tr>
</table>
<h1><a class="anchor" id="RTX_Conf_CM"></a>
Configuration File RTX_Conf_CM.c</h1>
<div class="fragment"><div class="line"><span class="comment">/*----------------------------------------------------------------------------</span></div>
<div class="line"><span class="comment"> * CMSIS-RTOS - RTX</span></div>
<div class="line"><span class="comment"> *----------------------------------------------------------------------------</span></div>
<div class="line"><span class="comment"> * Name: RTX_Conf_CM.C</span></div>
<div class="line"><span class="comment"> * Purpose: Configuration of CMSIS RTX Kernel for Cortex-M</span></div>
<div class="line"><span class="comment"> * Rev.: V4.70.1</span></div>
<div class="line"><span class="comment"> *----------------------------------------------------------------------------</span></div>
<div class="line"><span class="comment"> *</span></div>
<div class="line"><span class="comment"> * Copyright (c) 1999-2009 KEIL, 2009-2016 ARM Germany GmbH. All rights reserved.</span></div>
<div class="line"><span class="comment"> *</span></div>
<div class="line"><span class="comment"> * SPDX-License-Identifier: Apache-2.0</span></div>
<div class="line"><span class="comment"> *</span></div>
<div class="line"><span class="comment"> * Licensed under the Apache License, Version 2.0 (the License); you may</span></div>
<div class="line"><span class="comment"> * not use this file except in compliance with the License.</span></div>
<div class="line"><span class="comment"> * You may obtain a copy of the License at</span></div>
<div class="line"><span class="comment"> *</span></div>
<div class="line"><span class="comment"> * www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><span class="comment"> *</span></div>
<div class="line"><span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
<div class="line"><span class="comment"> * distributed under the License is distributed on an AS IS BASIS, WITHOUT</span></div>
<div class="line"><span class="comment"> * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<div class="line"><span class="comment"> * See the License for the specific language governing permissions and</span></div>
<div class="line"><span class="comment"> * limitations under the License.</span></div>
<div class="line"><span class="comment"> *---------------------------------------------------------------------------*/</span></div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"></div>
<div class="line"><span class="comment">/*----------------------------------------------------------------------------</span></div>
<div class="line"><span class="comment"> * RTX User configuration part BEGIN</span></div>
<div class="line"><span class="comment"> *---------------------------------------------------------------------------*/</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">//-------- &lt;&lt;&lt; Use Configuration Wizard in Context Menu &gt;&gt;&gt; -----------------</span></div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="comment">// &lt;h&gt;Thread Configuration</span></div>
<div class="line"><span class="comment">// =======================</span></div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="comment">// &lt;o&gt;Number of concurrent running user threads &lt;1-250&gt;</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Defines max. number of user threads that will run at the same time.</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Default: 6</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_TASKCNT</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_TASKCNT 6</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;o&gt;Default Thread stack size [bytes] &lt;64-4096:8&gt;&lt;#/4&gt;</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Defines default stack size for threads with osThreadDef stacksz = 0</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Default: 200</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_STKSIZE</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_STKSIZE 50 // this stack size value is in words</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;o&gt;Main Thread stack size [bytes] &lt;64-32768:8&gt;&lt;#/4&gt;</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Defines stack size for main thread.</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Default: 200</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_MAINSTKSIZE</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_MAINSTKSIZE 50 // this stack size value is in words</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;o&gt;Number of threads with user-provided stack size &lt;0-250&gt;</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Defines the number of threads with user-provided stack size.</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Default: 0</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_PRIVCNT</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_PRIVCNT 0</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;o&gt;Total stack size [bytes] for threads with user-provided stack size &lt;0-1048576:8&gt;&lt;#/4&gt;</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Defines the combined stack size for threads with user-provided stack size.</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Default: 0</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_PRIVSTKSIZE</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_PRIVSTKSIZE 0 // this stack size value is in words</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;q&gt;Stack overflow checking</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Enable stack overflow checks at thread switch.</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Enabling this option increases slightly the execution time of a thread switch.</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_STKCHECK</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_STKCHECK 1</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;q&gt;Stack usage watermark</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Initialize thread stack with watermark pattern for analyzing stack usage (current/maximum) in System and Thread Viewer.</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Enabling this option increases significantly the execution time of osThreadCreate.</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_STKINIT</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define OS_STKINIT 0</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;o&gt;Processor mode for thread execution </span></div>
<div class="line"><span class="comment">// &lt;0=&gt; Unprivileged mode </span></div>
<div class="line"><span class="comment">// &lt;1=&gt; Privileged mode</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Default: Privileged mode</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_RUNPRIV</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_RUNPRIV 1</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;/h&gt;</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// &lt;h&gt;RTX Kernel Timer Tick Configuration</span></div>
<div class="line"><span class="comment">// ======================================</span></div>
<div class="line"><span class="comment">// &lt;q&gt; Use Cortex-M SysTick timer as RTX Kernel Timer</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Cortex-M processors provide in most cases a SysTick timer that can be used as </span></div>
<div class="line"><span class="comment">// &lt;i&gt; as time-base for RTX.</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_SYSTICK</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_SYSTICK 1</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span><span class="comment">//</span></div>
<div class="line"><span class="comment">// &lt;o&gt;RTOS Kernel Timer input clock frequency [Hz] &lt;1-1000000000&gt;</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Defines the input frequency of the RTOS Kernel Timer. </span></div>
<div class="line"><span class="comment">// &lt;i&gt; When the Cortex-M SysTick timer is used, the input clock </span></div>
<div class="line"><span class="comment">// &lt;i&gt; is on most systems identical with the core clock.</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_CLOCK</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_CLOCK 12000000</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;o&gt;RTX Timer tick interval value [us] &lt;1-1000000&gt;</span></div>
<div class="line"><span class="comment">// &lt;i&gt; The RTX Timer tick interval value is used to calculate timeout values.</span></div>
<div class="line"><span class="comment">// &lt;i&gt; When the Cortex-M SysTick timer is enabled, the value also configures the SysTick timer.</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Default: 1000 (1ms)</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_TICK</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_TICK 1000</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;/h&gt;</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// &lt;h&gt;System Configuration</span></div>
<div class="line"><span class="comment">// =======================</span></div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="comment">// &lt;e&gt;Round-Robin Thread switching</span></div>
<div class="line"><span class="comment">// ===============================</span></div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Enables Round-Robin Thread switching.</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_ROBIN</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_ROBIN 1</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;o&gt;Round-Robin Timeout [ticks] &lt;1-1000&gt;</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Defines how long a thread will execute before a thread switch.</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Default: 5</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_ROBINTOUT</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_ROBINTOUT 5</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;/e&gt;</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// &lt;e&gt;User Timers</span></div>
<div class="line"><span class="comment">// ==============</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Enables user Timers</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_TIMERS</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_TIMERS 1</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;o&gt;Timer Thread Priority</span></div>
<div class="line"><span class="comment">// &lt;1=&gt; Low</span></div>
<div class="line"><span class="comment">// &lt;2=&gt; Below Normal &lt;3=&gt; Normal &lt;4=&gt; Above Normal</span></div>
<div class="line"><span class="comment">// &lt;5=&gt; High</span></div>
<div class="line"><span class="comment">// &lt;6=&gt; Realtime (highest)</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Defines priority for Timer Thread</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Default: High</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_TIMERPRIO</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_TIMERPRIO 5</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;o&gt;Timer Thread stack size [bytes] &lt;64-4096:8&gt;&lt;#/4&gt;</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Defines stack size for Timer thread.</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Default: 200</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_TIMERSTKSZ</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_TIMERSTKSZ 50 // this stack size value is in words</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;o&gt;Timer Callback Queue size &lt;1-32&gt;</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Number of concurrent active timer callback functions.</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Default: 4</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_TIMERCBQS</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_TIMERCBQS 4</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;/e&gt;</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// &lt;o&gt;ISR FIFO Queue size&lt;4=&gt; 4 entries &lt;8=&gt; 8 entries</span></div>
<div class="line"><span class="comment">// &lt;12=&gt; 12 entries &lt;16=&gt; 16 entries</span></div>
<div class="line"><span class="comment">// &lt;24=&gt; 24 entries &lt;32=&gt; 32 entries</span></div>
<div class="line"><span class="comment">// &lt;48=&gt; 48 entries &lt;64=&gt; 64 entries</span></div>
<div class="line"><span class="comment">// &lt;96=&gt; 96 entries</span></div>
<div class="line"><span class="comment">// &lt;i&gt; ISR functions store requests to this buffer,</span></div>
<div class="line"><span class="comment">// &lt;i&gt; when they are called from the interrupt handler.</span></div>
<div class="line"><span class="comment">// &lt;i&gt; Default: 16 entries</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_FIFOSZ</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_FIFOSZ 16</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">// &lt;/h&gt;</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">//------------- &lt;&lt;&lt; end of configuration section &gt;&gt;&gt; -----------------------</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// Standard library system mutexes</span></div>
<div class="line"><span class="comment">// ===============================</span></div>
<div class="line"><span class="comment">// Define max. number system mutexes that are used to protect </span></div>
<div class="line"><span class="comment">// the arm standard runtime library. For microlib they are not used.</span></div>
<div class="line"><span class="preprocessor">#ifndef OS_MUTEXCNT</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #define OS_MUTEXCNT 8</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">/*----------------------------------------------------------------------------</span></div>
<div class="line"><span class="comment"> * RTX User configuration part END</span></div>
<div class="line"><span class="comment"> *---------------------------------------------------------------------------*/</span></div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#define OS_TRV ((uint32_t)(((double)OS_CLOCK*(double)OS_TICK)/1E6)-1)</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"></div>
<div class="line"><span class="comment">/*----------------------------------------------------------------------------</span></div>
<div class="line"><span class="comment"> * Global Functions</span></div>
<div class="line"><span class="comment"> *---------------------------------------------------------------------------*/</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">/*--------------------------- os_idle_demon ---------------------------------*/</span></div>
<div class="line"><span class="comment"></span></div>
<div class="line"><span class="comment">/// \brief The idle demon is running when no other thread is ready to run</span></div>
<div class="line"><span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="group__RTX__Global__Functions.html#gafb4dc4d3dff8343a393726d2860282e4">os_idle_demon</a> (<span class="keywordtype">void</span>) {</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">for</span> (;;) {</div>
<div class="line"> <span class="comment">/* HERE: include optional user code to be executed when no thread runs.*/</span></div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#if (OS_SYSTICK == 0) // Functions for alternative timer as RTX kernel timer</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">/*--------------------------- os_tick_init ----------------------------------*/</span></div>
<div class="line"> <span class="comment"></span></div>
<div class="line"><span class="comment">/// \brief Initializes an alternative hardware timer as RTX kernel timer</span></div>
<div class="line"><span class="comment">/// \return IRQ number of the alternative hardware timer</span></div>
<div class="line"><span class="comment"></span><span class="keywordtype">int</span> <a class="code" href="group__RTX__Global__Functions.html#ga145e7eafdd042bb522020cbb3b469d9c">os_tick_init</a> (<span class="keywordtype">void</span>) {</div>
<div class="line"> <span class="keywordflow">return</span> (-1); <span class="comment">/* Return IRQ number of timer (0..239) */</span></div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="comment">/*--------------------------- os_tick_val -----------------------------------*/</span></div>
<div class="line"> <span class="comment"></span></div>
<div class="line"><span class="comment">/// \brief Get alternative hardware timer&#39;s current value (0 .. OS_TRV)</span></div>
<div class="line"><span class="comment">/// \return Current value of the alternative hardware timer</span></div>
<div class="line"><span class="comment"></span>uint32_t <a class="code" href="group__RTX__Global__Functions.html#ga567543bf38239a91f09751686c23017b">os_tick_val</a> (<span class="keywordtype">void</span>) {</div>
<div class="line"> <span class="keywordflow">return</span> (0);</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="comment">/*--------------------------- os_tick_ovf -----------------------------------*/</span></div>
<div class="line"> <span class="comment"></span></div>
<div class="line"><span class="comment">/// \brief Get alternative hardware timer&#39;s overflow flag</span></div>
<div class="line"><span class="comment">/// \return Overflow flag\n</span></div>
<div class="line"><span class="comment">/// - 1 : overflow</span></div>
<div class="line"><span class="comment">/// - 0 : no overflow</span></div>
<div class="line"><span class="comment"></span>uint32_t <a class="code" href="group__RTX__Global__Functions.html#gad5deddec3fea0fb31798f571afc3c692">os_tick_ovf</a> (<span class="keywordtype">void</span>) {</div>
<div class="line"> <span class="keywordflow">return</span> (0);</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="comment">/*--------------------------- os_tick_irqack --------------------------------*/</span></div>
<div class="line"> <span class="comment"></span></div>
<div class="line"><span class="comment">/// \brief Acknowledge alternative hardware timer interrupt</span></div>
<div class="line"><span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="group__RTX__Global__Functions.html#ga85dab8408f27236c7341a69feb6258c7">os_tick_irqack</a> (<span class="keywordtype">void</span>) {</div>
<div class="line"> <span class="comment">/* ... */</span></div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#endif // (OS_SYSTICK == 0)</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="comment">/*--------------------------- os_error --------------------------------------*/</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">/* OS Error Codes */</span></div>
<div class="line"><span class="preprocessor">#define OS_ERROR_STACK_OVF 1</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define OS_ERROR_FIFO_OVF 2</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define OS_ERROR_MBX_OVF 3</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define OS_ERROR_TIMER_OVF 4</span></div>
<div class="line"><span class="preprocessor"></span> </div>
<div class="line"><span class="keyword">extern</span> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> <a class="code" href="RTX__Conf__CM_8c.html#a395cca131b7746fc43c104a3485b77f7">svcThreadGetId</a> (<span class="keywordtype">void</span>);</div>
<div class="line"> <span class="comment"></span></div>
<div class="line"><span class="comment">/// \brief Called when a runtime error is detected</span></div>
<div class="line"><span class="comment">/// \param[in] error_code actual error code that has been detected</span></div>
<div class="line"><span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="group__RTX__Global__Functions.html#ga651ae76b3acf45f80bf0e0487b51d6e6">os_error</a> (uint32_t error_code) {</div>
<div class="line"> </div>
<div class="line"> <span class="comment">/* HERE: include optional code to be executed on runtime error. */</span></div>
<div class="line"> <span class="keywordflow">switch</span> (error_code) {</div>
<div class="line"> <span class="keywordflow">case</span> <a class="code" href="RTX__Conf__CM_8c.html#abf8311a7a239ec56c6d725f926ba766d">OS_ERROR_STACK_OVF</a>:</div>
<div class="line"> <span class="comment">/* Stack overflow detected for the currently running task. */</span></div>
<div class="line"> <span class="comment">/* Thread can be identified by calling svcThreadGetId(). */</span></div>
<div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line"> <span class="keywordflow">case</span> <a class="code" href="RTX__Conf__CM_8c.html#a075d54df14c85a6afe32b7f5c99c9c29">OS_ERROR_FIFO_OVF</a>:</div>
<div class="line"> <span class="comment">/* ISR FIFO Queue buffer overflow detected. */</span></div>
<div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line"> <span class="keywordflow">case</span> <a class="code" href="RTX__Conf__CM_8c.html#ab715d7d66c341c067ef0a97b55db8a10">OS_ERROR_MBX_OVF</a>:</div>
<div class="line"> <span class="comment">/* Mailbox overflow detected. */</span></div>
<div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line"> <span class="keywordflow">case</span> <a class="code" href="RTX__Conf__CM_8c.html#a79d7e388d951f11bd0dabd13f722cea8">OS_ERROR_TIMER_OVF</a>:</div>
<div class="line"> <span class="comment">/* User Timer Callback Queue overflow detected. */</span></div>
<div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line"> <span class="keywordflow">default</span>:</div>
<div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">for</span> (;;);</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"></div>
<div class="line"><span class="comment">/*----------------------------------------------------------------------------</span></div>
<div class="line"><span class="comment"> * RTX Configuration Functions</span></div>
<div class="line"><span class="comment"> *---------------------------------------------------------------------------*/</span></div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#include &quot;RTX_CM_lib.h&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">/*----------------------------------------------------------------------------</span></div>
<div class="line"><span class="comment"> * end of file</span></div>
<div class="line"><span class="comment"> *---------------------------------------------------------------------------*/</span></div>
</div><!-- fragment --> </div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li><li class="navelem"><a class="el" href="rtxImplementation.html">RTX Implementation</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

@@ -0,0 +1,97 @@
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function(){
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.attr('src','ftv2folderopen.png');
a.attr('src','ftv2mnode.png');
$(this).show();
} else if (l==level+1) {
i.attr('src','ftv2folderclosed.png');
a.attr('src','ftv2pnode.png');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
//The clicked row
var currentRow = $('#row_'+id);
var currentRowImages = currentRow.find("img");
//All rows after the clicked row
var rows = currentRow.nextAll("tr");
//Only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() {
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
return this.id.match(re);
});
//First row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
currentRowImages.filter("[id^=arr]").attr('src', 'ftv2pnode.png');
currentRowImages.filter("[id^=img]").attr('src', 'ftv2folderclosed.png');
rows.filter("[id^=row_"+id+"]").hide();
} else { //We are SHOWING
//All sub images
var childImages = childRows.find("img");
var childImg = childImages.filter("[id^=img]");
var childArr = childImages.filter("[id^=arr]");
currentRow.find("[id^=arr]").attr('src', 'ftv2mnode.png'); //open row
currentRow.find("[id^=img]").attr('src', 'ftv2folderopen.png'); //open row
childImg.attr('src','ftv2folderclosed.png'); //children closed
childArr.attr('src','ftv2pnode.png'); //children closed
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
@@ -0,0 +1,131 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>RTX Tutorial</title>
<title>CMSIS-RTOS: RTX Tutorial</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('exampleRTX_Tutorial.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">RTX Tutorial </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The tutorial is an excerpt of Trevor Martin's book <a href="http://store.elsevier.com/product.jsp?isbn=9780080982960&amp;pagename=search" target="_blank">The Designer's Guide to the Cortex-M Processor Family</a>. It is accompanied by a Pack file that contains the example projects that are discussed in the tutorial.</p>
<p>The tutorial is available as a Software Pack from <a href="http://www.keil.com/dd2/pack" target="_blank">http://www.keil.com/dd2/pack</a>. On the page, browse to <b>Hitex</b> and select the Pack described as "An Introduction to using CMSIS RTOS for Cortex-M Microcontrollers". Download and install the Pack which contains all example projects referenced in the <a href="CMSIS_RTOS_Tutorial.pdf" class="el">CMSIS_RTOS_Tutorial.pdf</a>. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li><li class="navelem"><a class="el" href="rtxImplementation.html">RTX Implementation</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,135 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>File List</title>
<title>CMSIS-RTOS: File List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('files.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">File List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cmsis__os_8h.html" target="_self">cmsis_os.h</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cmsis__os__rtx__extensions_8h.html" target="_self">cmsis_os_rtx_extensions.h</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="RTX__Conf__CM_8c.html" target="_self">RTX_Conf_CM.c</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

@@ -0,0 +1,237 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Function Overview</title>
<title>CMSIS-RTOS: Function Overview</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('functionOverview.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Function Overview </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The following list provides a brief overview of all CMSIS-RTOS functions. Functions marked with $ are optional. A specific CMSIS-RTOS implementation may not provide all functions, but this is clearly indicated with <b>osFeatureXXXX</b> defines.</p>
<dl class="section note"><dt>Note</dt><dd>Functions that are not supported by the <a class="el" href="rtxImplementation.html">RTX Implementation</a>, are marked with a (*).</dd></dl>
<ul>
<li><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html">Kernel Information and Control</a><ul>
<li><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga53d078a801022e202e8115c083ece68e">osKernelInitialize</a> : Initialize the RTOS kernel.</li>
<li><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a> : Start the RTOS kernel.</li>
<li><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga3b571de44cd3094c643247a7397f86b5">osKernelRunning</a> : Query if the RTOS kernel is running.</li>
<li><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gad0262e4688e95d1e9038afd9bcc16001">osKernelSysTick</a> : Get RTOS kernel system timer counter.</li>
<li><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a> : RTOS kernel system timer frequency in Hz.</li>
<li><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae12c190af42d7310d8006d64f4ed5a88">osKernelSysTickMicroSec</a> : Convert microseconds value to RTOS kernel system timer value.</li>
</ul>
</li>
<li><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html">Thread Management</a><ul>
<li><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> : Start execution of a thread function.</li>
<li><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> : Stop execution of a thread function.</li>
<li><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a> : Pass execution to next ready thread function.</li>
<li><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a> : Get the thread identifier to reference this thread.</li>
<li><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">osThreadSetPriority</a> : Change the execution priority of a thread function.</li>
<li><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga4299d838978bc2aae5e4350754e6a4e9">osThreadGetPriority</a> : Obtain the current execution priority of a thread function.</li>
</ul>
</li>
<li><a class="el" href="group__CMSIS__RTOS__Wait.html">Generic Wait Functions</a><ul>
<li><a class="el" href="group__CMSIS__RTOS__Wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a> : Wait for a specified time.</li>
<li><a class="el" href="technicalData.html#osWait">osWait</a> : Wait for any event of the type Signal, Message, or Mail.(*)</li>
</ul>
</li>
<li><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html">Timer Management</a><ul>
<li><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a> : Define attributes of the timer callback function.</li>
<li><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga27a797a401b068e2644d1125f22a07ca">osTimerStart</a> : Start or restart the timer with a time value.</li>
<li><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga58f36b121a812936435cacc6e1e0e091">osTimerStop</a> : Stop the timer.</li>
<li><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga746b8043d906849bd65e3900fcb483cf">osTimerDelete</a> : Delete a timer.</li>
</ul>
</li>
<li><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html">Signal Events</a><ul>
<li><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a> : Set signal flags of a thread.</li>
<li><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">osSignalClear</a> : Reset signal flags of a thread.</li>
<li><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a> : Suspend execution until specific signal flags are set.</li>
</ul>
</li>
<li><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html">Mutexes</a><ul>
<li><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a> : Define and initialize a mutex.</li>
<li><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a> : Obtain a mutex or Wait until it becomes available.</li>
<li><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">osMutexRelease</a> : Release a mutex.</li>
<li><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#gac27e24135185d51d18f3dabc20910219">osMutexDelete</a> : Delete a mutex.</li>
</ul>
</li>
<li><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html">Semaphores</a><ul>
<li><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> : Define and initialize a semaphore.</li>
<li><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gacc15b0fc8ce1167fe43da33042e62098">osSemaphoreWait</a> : Obtain a semaphore token or Wait until it becomes available.</li>
<li><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a> : Release a semaphore token.</li>
<li><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gabae2801ac2c096f6e8c69a264908f595">osSemaphoreDelete</a> : Delete a semaphore.</li>
</ul>
</li>
<li><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html">Memory Pool</a><ul>
<li><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a> : Define and initialize a fix-size memory pool.</li>
<li><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a> : Allocate a memory block.</li>
<li><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">osPoolCAlloc</a> : Allocate a memory block and zero-set this block.</li>
<li><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">osPoolFree</a> : Return a memory block to the memory pool.</li>
</ul>
</li>
<li><a class="el" href="group__CMSIS__RTOS__Message.html">Message Queue</a><ul>
<li><a class="el" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a> : Define and initialize a message queue.</li>
<li><a class="el" href="group__CMSIS__RTOS__Message.html#gac0dcf462fc92de8ffaba6cc004514a6d">osMessagePut</a> : Put a message into a message queue.</li>
<li><a class="el" href="group__CMSIS__RTOS__Message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">osMessageGet</a> : Get a message or suspend thread execution until message arrives.</li>
</ul>
</li>
<li><a class="el" href="group__CMSIS__RTOS__Mail.html">Mail Queue</a><ul>
<li><a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a> : Define and initialize a mail queue with fix-size memory blocks.</li>
<li><a class="el" href="group__CMSIS__RTOS__Mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a> : Allocate a memory block.</li>
<li><a class="el" href="group__CMSIS__RTOS__Mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">osMailCAlloc</a> : Allocate a memory block and zero-set this block.</li>
<li><a class="el" href="group__CMSIS__RTOS__Mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a> : Put a memory block into a mail queue.</li>
<li><a class="el" href="group__CMSIS__RTOS__Mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a> : Get a mail or suspend thread execution until mail arrives.</li>
<li><a class="el" href="group__CMSIS__RTOS__Mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">osMailFree</a> : Return a memory block to the mail queue.</li>
</ul>
</li>
<li><a class="el" href="group__RTX__Global__Functions.html">RTX Specific Functions</a><ul>
<li><a class="el" href="group__RTX__Global__Functions.html#gafb4dc4d3dff8343a393726d2860282e4">os_idle_demon</a> : System thread running when no other thread is ready to run.</li>
<li><a class="el" href="group__RTX__Global__Functions.html#ga3e9c57746ccbdfe90464ad50513c569e">os_suspend</a> : Suspend the RTX task scheduler.</li>
<li><a class="el" href="group__RTX__Global__Functions.html#ga1b85a217d43e6b971ffcf24f8aae1c33">os_resume</a> : Resume the RTX task scheduler.</li>
<li><a class="el" href="group__RTX__Global__Functions.html#ga145e7eafdd042bb522020cbb3b469d9c">os_tick_init</a> : Initialize an alternative hardware timer as RTX kernel timer.</li>
<li><a class="el" href="group__RTX__Global__Functions.html#ga567543bf38239a91f09751686c23017b">os_tick_val</a> : Get alternative hardware timer's current value.</li>
<li><a class="el" href="group__RTX__Global__Functions.html#gad5deddec3fea0fb31798f571afc3c692">os_tick_ovf</a> : Get alternative hardware timer's overflow flag.</li>
<li><a class="el" href="group__RTX__Global__Functions.html#ga85dab8408f27236c7341a69feb6258c7">os_tick_irqack</a> : Acknowledge alternative hardware timer interrupt.</li>
<li><a class="el" href="group__RTX__Global__Functions.html#ga651ae76b3acf45f80bf0e0487b51d6e6">os_error</a> : Called when a runtime error is detected.</li>
</ul>
</li>
</ul>
<h1><a class="anchor" id="CMSIS_RTOS_TimeOutValue"></a>
Timout Value</h1>
<p>The timeout value specifies the number of timer ticks until a timeout or time delay elapses. The value is an upper bound and depends on the actual time elapsed since the last timer tick.</p>
<p>For a value of <b>1</b> the system waits until the next timer tick occurs. That means that the actual timeout value can be one timer tick less than the specified timeout value.</p>
<div class="image">
<img src="TimerValues.png" alt="TimerValues.png"/>
<div class="caption">
Timer Values</div></div>
<h1><a class="anchor" id="CMSIS_RTOS_ISR_Calls"></a>
Calls from Interrupt Service Routines</h1>
<p>The following CMSIS-RTOS functions can be called from threads and Interrupt Service Routines (ISR):</p>
<ul>
<li><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga3b571de44cd3094c643247a7397f86b5">osKernelRunning</a></li>
<li><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a></li>
<li><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a></li>
<li><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a>, <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">osPoolCAlloc</a>, <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">osPoolFree</a></li>
<li><a class="el" href="group__CMSIS__RTOS__Message.html#gac0dcf462fc92de8ffaba6cc004514a6d">osMessagePut</a>, <a class="el" href="group__CMSIS__RTOS__Message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">osMessageGet</a></li>
<li><a class="el" href="group__CMSIS__RTOS__Mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a>, <a class="el" href="group__CMSIS__RTOS__Mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">osMailCAlloc</a>, <a class="el" href="group__CMSIS__RTOS__Mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a>, <a class="el" href="group__CMSIS__RTOS__Mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a>, <a class="el" href="group__CMSIS__RTOS__Mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">osMailFree</a></li>
</ul>
<p>Functions that cannot be called from an ISR are verifying the interrupt status and return, in case they are called from an ISR context, the status code <b>osErrorISR</b>. In some implementations, this condition might be caught using the HARD FAULT vector.</p>
<p>Some CMSIS-RTOS implementations support CMSIS-RTOS function calls from multiple ISRs at the same time. If this is impossible, the CMSIS-RTOS rejects calls by nested ISR functions with the status code <b>osErrorISRRecursive</b>. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,184 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Data Fields</title>
<title>CMSIS-RTOS: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a></li>
<li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</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">
$(document).ready(function(){initNavTree('functions.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="contents">
<div class="textblock">Here is a list of all struct and union fields with links to the structures/unions they belong to:</div><ul>
<li>def
: <a class="el" href="group__CMSIS__RTOS__Definitions.html#a596b6d55c3321db19239256bbe403df6">osEvent</a>
</li>
<li>dummy
: <a class="el" href="cmsis__os_8h.html#a44b7a3baf02bac7ad707e8f2f5eca1ca">osMutexDef_t</a>
, <a class="el" href="cmsis__os_8h.html#a44b7a3baf02bac7ad707e8f2f5eca1ca">osSemaphoreDef_t</a>
</li>
<li>instances
: <a class="el" href="cmsis__os_8h.html#aa4c4115851a098c0b87358ab6c025603">osThreadDef_t</a>
</li>
<li>item_sz
: <a class="el" href="cmsis__os_8h.html#a4c2a0c691de3365c00ecd22d8102811f">osMailQDef_t</a>
, <a class="el" href="cmsis__os_8h.html#a4c2a0c691de3365c00ecd22d8102811f">osMessageQDef_t</a>
, <a class="el" href="cmsis__os_8h.html#a4c2a0c691de3365c00ecd22d8102811f">osPoolDef_t</a>
</li>
<li>pool
: <a class="el" href="cmsis__os_8h.html#a269c3935f8bc66db70bccdd02cb05e3c">osMailQDef_t</a>
, <a class="el" href="cmsis__os_8h.html#a269c3935f8bc66db70bccdd02cb05e3c">osMessageQDef_t</a>
, <a class="el" href="cmsis__os_8h.html#a269c3935f8bc66db70bccdd02cb05e3c">osPoolDef_t</a>
</li>
<li>pool_sz
: <a class="el" href="cmsis__os_8h.html#ac112e786b2a234e0e45cb5bdbee53763">osPoolDef_t</a>
</li>
<li>pthread
: <a class="el" href="cmsis__os_8h.html#ad3c9624ee214329fb34e71f544a6933e">osThreadDef_t</a>
</li>
<li>ptimer
: <a class="el" href="cmsis__os_8h.html#a15773df83aba93f8e61f3737af5fae47">osTimerDef_t</a>
</li>
<li>queue_sz
: <a class="el" href="cmsis__os_8h.html#a8a83a3a8c0aa8057b13807d2a54077e0">osMailQDef_t</a>
, <a class="el" href="cmsis__os_8h.html#a8a83a3a8c0aa8057b13807d2a54077e0">osMessageQDef_t</a>
</li>
<li>stacksize
: <a class="el" href="cmsis__os_8h.html#a950b7f81ad4711959517296e63bc79d1">osThreadDef_t</a>
</li>
<li>status
: <a class="el" href="group__CMSIS__RTOS__Definitions.html#ad477a289f1f03ac45407b64268d707d3">osEvent</a>
</li>
<li>tpriority
: <a class="el" href="cmsis__os_8h.html#a15da8f23c6fe684b70a73646ada685e7">osThreadDef_t</a>
</li>
<li>value
: <a class="el" href="group__CMSIS__RTOS__Definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f">osEvent</a>
</li>
</ul>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,184 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Data Fields - Variables</title>
<title>CMSIS-RTOS: Data Fields - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a></li>
<li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="functions.html"><span>All</span></a></li>
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</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">
$(document).ready(function(){initNavTree('functions_vars.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="contents">
&#160;<ul>
<li>def
: <a class="el" href="group__CMSIS__RTOS__Definitions.html#a596b6d55c3321db19239256bbe403df6">osEvent</a>
</li>
<li>dummy
: <a class="el" href="cmsis__os_8h.html#a44b7a3baf02bac7ad707e8f2f5eca1ca">osMutexDef_t</a>
, <a class="el" href="cmsis__os_8h.html#a44b7a3baf02bac7ad707e8f2f5eca1ca">osSemaphoreDef_t</a>
</li>
<li>instances
: <a class="el" href="cmsis__os_8h.html#aa4c4115851a098c0b87358ab6c025603">osThreadDef_t</a>
</li>
<li>item_sz
: <a class="el" href="cmsis__os_8h.html#a4c2a0c691de3365c00ecd22d8102811f">osMailQDef_t</a>
, <a class="el" href="cmsis__os_8h.html#a4c2a0c691de3365c00ecd22d8102811f">osMessageQDef_t</a>
, <a class="el" href="cmsis__os_8h.html#a4c2a0c691de3365c00ecd22d8102811f">osPoolDef_t</a>
</li>
<li>pool
: <a class="el" href="cmsis__os_8h.html#a269c3935f8bc66db70bccdd02cb05e3c">osMailQDef_t</a>
, <a class="el" href="cmsis__os_8h.html#a269c3935f8bc66db70bccdd02cb05e3c">osMessageQDef_t</a>
, <a class="el" href="cmsis__os_8h.html#a269c3935f8bc66db70bccdd02cb05e3c">osPoolDef_t</a>
</li>
<li>pool_sz
: <a class="el" href="cmsis__os_8h.html#ac112e786b2a234e0e45cb5bdbee53763">osPoolDef_t</a>
</li>
<li>pthread
: <a class="el" href="cmsis__os_8h.html#ad3c9624ee214329fb34e71f544a6933e">osThreadDef_t</a>
</li>
<li>ptimer
: <a class="el" href="cmsis__os_8h.html#a15773df83aba93f8e61f3737af5fae47">osTimerDef_t</a>
</li>
<li>queue_sz
: <a class="el" href="cmsis__os_8h.html#a8a83a3a8c0aa8057b13807d2a54077e0">osMailQDef_t</a>
, <a class="el" href="cmsis__os_8h.html#a8a83a3a8c0aa8057b13807d2a54077e0">osMessageQDef_t</a>
</li>
<li>stacksize
: <a class="el" href="cmsis__os_8h.html#a950b7f81ad4711959517296e63bc79d1">osThreadDef_t</a>
</li>
<li>status
: <a class="el" href="group__CMSIS__RTOS__Definitions.html#ad477a289f1f03ac45407b64268d707d3">osEvent</a>
</li>
<li>tpriority
: <a class="el" href="cmsis__os_8h.html#a15da8f23c6fe684b70a73646ada685e7">osThreadDef_t</a>
</li>
<li>value
: <a class="el" href="group__CMSIS__RTOS__Definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f">osEvent</a>
</li>
</ul>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,175 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Generic RTOS Interface</title>
<title>CMSIS-RTOS: Generic RTOS Interface</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('genRTOSIF.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Generic RTOS Interface </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The CMSIS-RTOS API is a generic RTOS interface for Arm&reg; Cortex&reg;-M processor-based devices. CMSIS-RTOS provides a standardized API for software components that require RTOS functionality and gives therefore serious benefits to the users and the software industry.</p>
<ul>
<li>CMSIS-RTOS provides basic features that are required in many applications or technologies such as UML or Java (JVM).</li>
<li>The unified feature set of the CMSIS-RTOS API simplifies sharing of software components and reduces learning efforts.</li>
<li>Middleware components that use the CMSIS-RTOS API are RTOS agnostic. CMSIS-RTOS compliant middleware is easier to adapt.</li>
<li>Standard project templates (such as motor control) of the CMSIS-RTOS API may be shipped with freely available CMSIS-RTOS implementations.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>The CMSIS-RTOS API defines a minimum feature set. Implementations with extended features may be provided by RTOS vendors.</dd></dl>
<div class="image">
<img src="API_Structure.png" alt="API_Structure.png"/>
<div class="caption">
CMSIS-RTOS API Structure</div></div>
<p> A typical CMSIS-RTOS API implementation interfaces to an existing real-time Kernel. The CMSIS-RTOS API provides the following attributes and functionalities:</p>
<ul>
<li>Function names, identifiers, and parameters are descriptive and easy to understand. The functions are powerful and flexible which reduces the number of functions exposed to the user.</li>
<li><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html">Thread Management</a> allows you to define, create, and control threads.</li>
<li>Interrupt Service Routines (ISR) can <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">call some CMSIS-RTOS functions</a>. When a CMSIS-RTOS function cannot be called from ISR context, it rejects the invocation.</li>
<li>Three different thread event types support communication between multiple threads and/or ISR:<ul>
<li><b>Signal:</b> is a flag that may be used to indicate specific conditions to a thread. Signals can be modified in an ISR or set from other threads.</li>
<li><b>Message:</b> is a 32-bit value that can be sent to a thread or an ISR. Messages are buffered in a queue. The message type and queue size is defined in a descriptor.</li>
<li><b>Mail:</b> is a fixed-size memory block that can be sent to a thread or an ISR. Mails are buffered in a queue and memory allocation is provided. The mail type and queue size is defined in a descriptor.</li>
</ul>
</li>
<li><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html">Mutexes</a> and <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html">Semaphores</a> are incorporated.</li>
<li>CPU time can be schedule with the following functionalities:<ul>
<li>A <em>timeout</em> parameter is incorporated in many CMSIS-RTOS functions to avoid system lockup. When a timeout is specified, the system waits until a resource is available or an event occurs. While waiting, other threads are scheduled.</li>
<li>The <a class="el" href="group__CMSIS__RTOS__Wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a> function puts a thread into the state <b>WAITING</b> for a specified period of time.</li>
<li>The generic <a class="el" href="technicalData.html#osWait">osWait</a> function waits for events that are assigned to a thread.</li>
<li>The <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a> provides co-operative thread switching and passes execution to another thread of the same priority.</li>
</ul>
</li>
</ul>
<p>The CMSIS-RTOS API is designed to optionally incorporate multi-processor systems and/or access protection via the Cortex-M Memory Protection Unit (MPU).</p>
<p>In some RTOS implementations threads may execute on different processors and <b>Mail</b> and <b>Message</b> queues can therefore reside in shared memory resources.</p>
<p>The CMSIS-RTOS API encourages the software industry to evolve existing RTOS implementations. Kernel objects are defined and accessed using macros. This allows differentiation. RTOS implementations can be different and optimized in various aspects towards the Cortex-M processors. Optional features may be for example</p>
<ul>
<li>Generic <b>wait</b> function; i.e. with support of time intervals.</li>
<li>Support of the Cortex-M Memory Protection Unit (MPU).</li>
<li>Zero-copy mail queue.</li>
<li>Support of multi-processor systems.</li>
<li>Support of a DMA controller.</li>
<li>Deterministic context switching.</li>
<li>Round-robin context switching.</li>
<li>Deadlock avoidance, for example with priority inversion.</li>
<li>Zero interrupt latency by using the Cortex-M3/M4 instructions LDREX and STREX. </li>
</ul>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="index.html">index</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,563 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Globals</title>
<title>CMSIS-RTOS: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index_o"><span>o</span></a></li>
<li class="current"><a href="#index_s"><span>s</span></a></li>
</ul>
</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">
$(document).ready(function(){initNavTree('globals.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
<li>OS_CLOCK
: <a class="el" href="RTX__Conf__CM_8c.html#adff23afdf544a322a38314870f8848b9">RTX_Conf_CM.c</a>
</li>
<li>os_error()
: <a class="el" href="group__RTX__Global__Functions.html#ga651ae76b3acf45f80bf0e0487b51d6e6">cmsis_os_rtx_extensions.h</a>
, <a class="el" href="group__RTX__Global__Functions.html#ga651ae76b3acf45f80bf0e0487b51d6e6">RTX_Conf_CM.c</a>
</li>
<li>OS_ERROR_FIFO_OVF
: <a class="el" href="RTX__Conf__CM_8c.html#a075d54df14c85a6afe32b7f5c99c9c29">RTX_Conf_CM.c</a>
</li>
<li>OS_ERROR_MBX_OVF
: <a class="el" href="RTX__Conf__CM_8c.html#ab715d7d66c341c067ef0a97b55db8a10">RTX_Conf_CM.c</a>
</li>
<li>OS_ERROR_STACK_OVF
: <a class="el" href="RTX__Conf__CM_8c.html#abf8311a7a239ec56c6d725f926ba766d">RTX_Conf_CM.c</a>
</li>
<li>OS_ERROR_TIMER_OVF
: <a class="el" href="RTX__Conf__CM_8c.html#a79d7e388d951f11bd0dabd13f722cea8">RTX_Conf_CM.c</a>
</li>
<li>OS_FIFOSZ
: <a class="el" href="RTX__Conf__CM_8c.html#a93c8e36d441750016f9f72e102f68d66">RTX_Conf_CM.c</a>
</li>
<li>os_idle_demon()
: <a class="el" href="group__RTX__Global__Functions.html#gafb4dc4d3dff8343a393726d2860282e4">cmsis_os_rtx_extensions.h</a>
, <a class="el" href="group__RTX__Global__Functions.html#gafb4dc4d3dff8343a393726d2860282e4">RTX_Conf_CM.c</a>
</li>
<li>OS_MAINSTKSIZE
: <a class="el" href="RTX__Conf__CM_8c.html#a95362a96f44d4314f148ae24edd52f7c">RTX_Conf_CM.c</a>
</li>
<li>OS_MUTEXCNT
: <a class="el" href="RTX__Conf__CM_8c.html#ad11cf133eea28b601f9a63cd9af9b786">RTX_Conf_CM.c</a>
</li>
<li>OS_PRIVCNT
: <a class="el" href="RTX__Conf__CM_8c.html#a7cfcbf2c4f9d0a63424a2a48592955b1">RTX_Conf_CM.c</a>
</li>
<li>OS_PRIVSTKSIZE
: <a class="el" href="RTX__Conf__CM_8c.html#a6e0d30986e4ae0df44f449a4b3b0fbec">RTX_Conf_CM.c</a>
</li>
<li>os_pthread
: <a class="el" href="cmsis__os_8h.html#aee631e5ea1b700fc35695cc7bc574cf7">cmsis_os.h</a>
</li>
<li>os_ptimer
: <a class="el" href="cmsis__os_8h.html#aa2d85e49bde9f6951ff3545cd323f065">cmsis_os.h</a>
</li>
<li>os_resume()
: <a class="el" href="group__RTX__Global__Functions.html#ga1b85a217d43e6b971ffcf24f8aae1c33">cmsis_os_rtx_extensions.h</a>
</li>
<li>OS_ROBIN
: <a class="el" href="RTX__Conf__CM_8c.html#ae34f3058383d9fa9280bbf595618ab0a">RTX_Conf_CM.c</a>
</li>
<li>OS_ROBINTOUT
: <a class="el" href="RTX__Conf__CM_8c.html#ad89fdd7232cfba74d400080b6bcc0012">RTX_Conf_CM.c</a>
</li>
<li>OS_RUNPRIV
: <a class="el" href="RTX__Conf__CM_8c.html#a786924d58be54e943a7e73458cebc51b">RTX_Conf_CM.c</a>
</li>
<li>os_status_reserved
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1">cmsis_os.h</a>
</li>
<li>OS_STKCHECK
: <a class="el" href="RTX__Conf__CM_8c.html#a6ef9e00396f881f0fa9ac877150e5962">RTX_Conf_CM.c</a>
</li>
<li>OS_STKINIT
: <a class="el" href="RTX__Conf__CM_8c.html#ac820623da739e4219ee86f15bdcd9752">RTX_Conf_CM.c</a>
</li>
<li>OS_STKSIZE
: <a class="el" href="RTX__Conf__CM_8c.html#a16495c133349f3e7c27ac933857c1a8c">RTX_Conf_CM.c</a>
</li>
<li>os_suspend()
: <a class="el" href="group__RTX__Global__Functions.html#ga3e9c57746ccbdfe90464ad50513c569e">cmsis_os_rtx_extensions.h</a>
</li>
<li>OS_TASKCNT
: <a class="el" href="RTX__Conf__CM_8c.html#a309353d912327b7f4a2300711ee1b349">RTX_Conf_CM.c</a>
</li>
<li>OS_TICK
: <a class="el" href="RTX__Conf__CM_8c.html#ab6b10bd6d60e95ab28c775757f6bfbcc">RTX_Conf_CM.c</a>
</li>
<li>os_tick_init()
: <a class="el" href="group__RTX__Global__Functions.html#ga145e7eafdd042bb522020cbb3b469d9c">RTX_Conf_CM.c</a>
</li>
<li>os_tick_irqack()
: <a class="el" href="group__RTX__Global__Functions.html#ga85dab8408f27236c7341a69feb6258c7">RTX_Conf_CM.c</a>
</li>
<li>os_tick_ovf()
: <a class="el" href="group__RTX__Global__Functions.html#gad5deddec3fea0fb31798f571afc3c692">RTX_Conf_CM.c</a>
</li>
<li>os_tick_val()
: <a class="el" href="group__RTX__Global__Functions.html#ga567543bf38239a91f09751686c23017b">RTX_Conf_CM.c</a>
</li>
<li>os_timer_type
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">cmsis_os.txt</a>
, <a class="el" href="cmsis__os_8h.html#adac860eb9e1b4b0619271e6595ed83d9">cmsis_os.h</a>
</li>
<li>OS_TIMERCBQS
: <a class="el" href="RTX__Conf__CM_8c.html#a29701cff84a42494279367ad018f252d">RTX_Conf_CM.c</a>
</li>
<li>OS_TIMERPRIO
: <a class="el" href="RTX__Conf__CM_8c.html#a90af874f1df4dfb0f8821cc2d860dae6">RTX_Conf_CM.c</a>
</li>
<li>OS_TIMERS
: <a class="el" href="RTX__Conf__CM_8c.html#a23b0f1095632e58b5ac0d8f7dcfdfded">RTX_Conf_CM.c</a>
</li>
<li>OS_TIMERSTKSZ
: <a class="el" href="RTX__Conf__CM_8c.html#a76d1b01799981a753fc528e600015627">RTX_Conf_CM.c</a>
</li>
<li>OS_TRV
: <a class="el" href="RTX__Conf__CM_8c.html#a9d55a070ddb219165bd4287f08318d51">RTX_Conf_CM.c</a>
</li>
<li>osCMSIS
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga702196bacccbb978620c736b209387f1">cmsis_os.h</a>
</li>
<li>osCMSIS_KERNEL
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gab78dce646fabec479c5f34bc5175b7de">cmsis_os.h</a>
</li>
<li>osDelay()
: <a class="el" href="group__CMSIS__RTOS__Wait.html#ga02e19d5e723bfb06ba9324d625162255">cmsis_os.h</a>
</li>
<li>osErrorISR
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f">cmsis_os.h</a>
</li>
<li>osErrorISRRecursive
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65">cmsis_os.h</a>
</li>
<li>osErrorNoMemory
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81">cmsis_os.h</a>
</li>
<li>osErrorOS
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc">cmsis_os.h</a>
</li>
<li>osErrorParameter
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109">cmsis_os.h</a>
</li>
<li>osErrorPriority
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f">cmsis_os.h</a>
</li>
<li>osErrorResource
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d">cmsis_os.h</a>
</li>
<li>osErrorTimeoutResource
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467">cmsis_os.h</a>
</li>
<li>osErrorValue
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee">cmsis_os.h</a>
</li>
<li>osEventMail
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926">cmsis_os.h</a>
</li>
<li>osEventMessage
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342">cmsis_os.h</a>
</li>
<li>osEventSignal
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518">cmsis_os.h</a>
</li>
<li>osEventTimeout
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177">cmsis_os.h</a>
</li>
<li>osFeature_MailQ
: <a class="el" href="group__CMSIS__RTOS__Mail.html#gaceb2e0071ce160d153047f2eac1aca8e">cmsis_os.h</a>
</li>
<li>osFeature_MainThread
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga22f7d235bc9f783933bd5a981fd79696">cmsis_os.h</a>
</li>
<li>osFeature_MessageQ
: <a class="el" href="group__CMSIS__RTOS__Message.html#ga479a6561f859e3d4818e25708593d203">cmsis_os.h</a>
</li>
<li>osFeature_Pool
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#gadd84b683001de327894851b428587caa">cmsis_os.h</a>
</li>
<li>osFeature_Semaphore
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a">cmsis_os.h</a>
</li>
<li>osFeature_Signals
: <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga01edde265710d883b6e237d34a6ef4a6">cmsis_os.h</a>
</li>
<li>osFeature_SysTick
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae554ec16c23c5b7d65affade2a351891">cmsis_os.h</a>
</li>
<li>osFeature_Wait
: <a class="el" href="group__CMSIS__RTOS__Wait.html#ga6c97d38879ae86491628f6e647639bad">cmsis_os.h</a>
</li>
<li>osKernelInitialize()
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga53d078a801022e202e8115c083ece68e">cmsis_os.h</a>
</li>
<li>osKernelRunning()
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga3b571de44cd3094c643247a7397f86b5">cmsis_os.h</a>
</li>
<li>osKernelStart()
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">cmsis_os.h</a>
</li>
<li>osKernelSystemId
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga47cf03658f01cdffca688e9096b58289">cmsis_os.h</a>
</li>
<li>osKernelSysTick()
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gad0262e4688e95d1e9038afd9bcc16001">cmsis_os.h</a>
</li>
<li>osKernelSysTickFrequency
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga9e0954d52722673e2031233a2ab99960">cmsis_os.h</a>
</li>
<li>osKernelSysTickMicroSec
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae12c190af42d7310d8006d64f4ed5a88">cmsis_os.h</a>
</li>
<li>osMailAlloc()
: <a class="el" href="group__CMSIS__RTOS__Mail.html#gadf5ce811bd6a56e617e902a1db6c2194">cmsis_os.h</a>
</li>
<li>osMailCAlloc()
: <a class="el" href="group__CMSIS__RTOS__Mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">cmsis_os.h</a>
</li>
<li>osMailCreate()
: <a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">cmsis_os.h</a>
</li>
<li>osMailFree()
: <a class="el" href="group__CMSIS__RTOS__Mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">cmsis_os.h</a>
</li>
<li>osMailGet()
: <a class="el" href="group__CMSIS__RTOS__Mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">cmsis_os.h</a>
</li>
<li>osMailPut()
: <a class="el" href="group__CMSIS__RTOS__Mail.html#ga485ef6f81854ebda8ffbce4832181e02">cmsis_os.h</a>
</li>
<li>osMailQ
: <a class="el" href="group__CMSIS__RTOS__Mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">cmsis_os.h</a>
</li>
<li>osMailQDef
: <a class="el" href="group__CMSIS__RTOS__Mail.html#ga58d712b16c0c6668059f509386d1e55b">cmsis_os.h</a>
</li>
<li>osMailQId
: <a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">cmsis_os.h</a>
</li>
<li>osMessageCreate()
: <a class="el" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">cmsis_os.h</a>
</li>
<li>osMessageGet()
: <a class="el" href="group__CMSIS__RTOS__Message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">cmsis_os.h</a>
</li>
<li>osMessagePut()
: <a class="el" href="group__CMSIS__RTOS__Message.html#gac0dcf462fc92de8ffaba6cc004514a6d">cmsis_os.h</a>
</li>
<li>osMessageQ
: <a class="el" href="group__CMSIS__RTOS__Message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">cmsis_os.h</a>
</li>
<li>osMessageQDef
: <a class="el" href="group__CMSIS__RTOS__Message.html#gac9a6a6276c12609793e7701afcc82326">cmsis_os.h</a>
</li>
<li>osMessageQId
: <a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">cmsis_os.h</a>
</li>
<li>osMutex
: <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">cmsis_os.h</a>
</li>
<li>osMutexCreate()
: <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">cmsis_os.h</a>
</li>
<li>osMutexDef
: <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga9b522438489d7c402c95332b58bc94f3">cmsis_os.h</a>
</li>
<li>osMutexDelete()
: <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#gac27e24135185d51d18f3dabc20910219">cmsis_os.h</a>
</li>
<li>osMutexId
: <a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">cmsis_os.h</a>
</li>
<li>osMutexRelease()
: <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">cmsis_os.h</a>
</li>
<li>osMutexWait()
: <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">cmsis_os.h</a>
</li>
<li>osOK
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">cmsis_os.h</a>
</li>
<li>osPool
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">cmsis_os.h</a>
</li>
<li>osPoolAlloc()
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">cmsis_os.h</a>
</li>
<li>osPoolCAlloc()
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">cmsis_os.h</a>
</li>
<li>osPoolCreate()
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">cmsis_os.h</a>
</li>
<li>osPoolDef
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">cmsis_os.h</a>
</li>
<li>osPoolFree()
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">cmsis_os.h</a>
</li>
<li>osPoolId
: <a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">cmsis_os.h</a>
</li>
<li>osPriority
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">cmsis_os.h</a>
</li>
<li>osPriorityAboveNormal
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b">cmsis_os.h</a>
</li>
<li>osPriorityBelowNormal
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6">cmsis_os.h</a>
</li>
<li>osPriorityError
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4">cmsis_os.h</a>
</li>
<li>osPriorityHigh
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">cmsis_os.h</a>
</li>
<li>osPriorityIdle
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81">cmsis_os.h</a>
</li>
<li>osPriorityLow
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4">cmsis_os.h</a>
</li>
<li>osPriorityNormal
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">cmsis_os.h</a>
</li>
<li>osPriorityRealtime
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af">cmsis_os.h</a>
</li>
<li>osSemaphore
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">cmsis_os.h</a>
</li>
<li>osSemaphoreCreate()
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">cmsis_os.h</a>
</li>
<li>osSemaphoreDef
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga9e66fe361749071e5ab87826c43c2f1b">cmsis_os.h</a>
</li>
<li>osSemaphoreDelete()
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gabae2801ac2c096f6e8c69a264908f595">cmsis_os.h</a>
</li>
<li>osSemaphoreId
: <a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">cmsis_os.h</a>
</li>
<li>osSemaphoreRelease()
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">cmsis_os.h</a>
</li>
<li>osSemaphoreWait()
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gacc15b0fc8ce1167fe43da33042e62098">cmsis_os.h</a>
</li>
<li>osSignalClear()
: <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">cmsis_os.h</a>
</li>
<li>osSignalSet()
: <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga3de2730654589d6c3559c4b9e2825553">cmsis_os.h</a>
</li>
<li>osSignalWait()
: <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga38860acda96df47da6923348d96fc4c9">cmsis_os.h</a>
</li>
<li>osStatus
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">cmsis_os.txt</a>
, <a class="el" href="cmsis__os_8h.html#ae2e091fefc4c767117727bd5aba4d99e">cmsis_os.h</a>
</li>
<li>osThread
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">cmsis_os.h</a>
</li>
<li>osThreadCreate()
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">cmsis_os.h</a>
</li>
<li>osThreadDef
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">cmsis_os.h</a>
</li>
<li>osThreadGetId()
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">cmsis_os.h</a>
</li>
<li>osThreadGetPriority()
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga4299d838978bc2aae5e4350754e6a4e9">cmsis_os.h</a>
</li>
<li>osThreadId
: <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">cmsis_os.h</a>
</li>
<li>osThreadSetPriority()
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">cmsis_os.h</a>
</li>
<li>osThreadTerminate()
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">cmsis_os.h</a>
</li>
<li>osThreadYield()
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf13a667493c5d629a90c13e113b99233">cmsis_os.h</a>
</li>
<li>osTimer
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga1b8d670eaf964b2910fa06885e650678">cmsis_os.h</a>
</li>
<li>osTimerCreate()
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">cmsis_os.h</a>
</li>
<li>osTimerDef
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga1c720627e08d1cc1afcad44e799ed492">cmsis_os.h</a>
</li>
<li>osTimerDelete()
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga746b8043d906849bd65e3900fcb483cf">cmsis_os.h</a>
</li>
<li>osTimerId
: <a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">cmsis_os.h</a>
</li>
<li>osTimerOnce
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951">cmsis_os.h</a>
</li>
<li>osTimerPeriodic
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788">cmsis_os.h</a>
</li>
<li>osTimerStart()
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga27a797a401b068e2644d1125f22a07ca">cmsis_os.h</a>
</li>
<li>osTimerStop()
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga58f36b121a812936435cacc6e1e0e091">cmsis_os.h</a>
</li>
<li>osWait()
: <a class="el" href="group__CMSIS__RTOS__Wait.html#ga8470c8aaedfde524a44e22e5b2328285">cmsis_os.h</a>
</li>
<li>osWaitForever
: <a class="el" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">cmsis_os.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
<li>svcThreadGetId()
: <a class="el" href="RTX__Conf__CM_8c.html#a395cca131b7746fc43c104a3485b77f7">RTX_Conf_CM.c</a>
</li>
</ul>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,296 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Globals</title>
<title>CMSIS-RTOS: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li class="current"><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li class="current"><a href="#index_o"><span>o</span></a></li>
</ul>
</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">
$(document).ready(function(){initNavTree('globals_defs.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="contents">
&#160;
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
<li>OS_CLOCK
: <a class="el" href="RTX__Conf__CM_8c.html#adff23afdf544a322a38314870f8848b9">RTX_Conf_CM.c</a>
</li>
<li>OS_ERROR_FIFO_OVF
: <a class="el" href="RTX__Conf__CM_8c.html#a075d54df14c85a6afe32b7f5c99c9c29">RTX_Conf_CM.c</a>
</li>
<li>OS_ERROR_MBX_OVF
: <a class="el" href="RTX__Conf__CM_8c.html#ab715d7d66c341c067ef0a97b55db8a10">RTX_Conf_CM.c</a>
</li>
<li>OS_ERROR_STACK_OVF
: <a class="el" href="RTX__Conf__CM_8c.html#abf8311a7a239ec56c6d725f926ba766d">RTX_Conf_CM.c</a>
</li>
<li>OS_ERROR_TIMER_OVF
: <a class="el" href="RTX__Conf__CM_8c.html#a79d7e388d951f11bd0dabd13f722cea8">RTX_Conf_CM.c</a>
</li>
<li>OS_FIFOSZ
: <a class="el" href="RTX__Conf__CM_8c.html#a93c8e36d441750016f9f72e102f68d66">RTX_Conf_CM.c</a>
</li>
<li>OS_MAINSTKSIZE
: <a class="el" href="RTX__Conf__CM_8c.html#a95362a96f44d4314f148ae24edd52f7c">RTX_Conf_CM.c</a>
</li>
<li>OS_MUTEXCNT
: <a class="el" href="RTX__Conf__CM_8c.html#ad11cf133eea28b601f9a63cd9af9b786">RTX_Conf_CM.c</a>
</li>
<li>OS_PRIVCNT
: <a class="el" href="RTX__Conf__CM_8c.html#a7cfcbf2c4f9d0a63424a2a48592955b1">RTX_Conf_CM.c</a>
</li>
<li>OS_PRIVSTKSIZE
: <a class="el" href="RTX__Conf__CM_8c.html#a6e0d30986e4ae0df44f449a4b3b0fbec">RTX_Conf_CM.c</a>
</li>
<li>OS_ROBIN
: <a class="el" href="RTX__Conf__CM_8c.html#ae34f3058383d9fa9280bbf595618ab0a">RTX_Conf_CM.c</a>
</li>
<li>OS_ROBINTOUT
: <a class="el" href="RTX__Conf__CM_8c.html#ad89fdd7232cfba74d400080b6bcc0012">RTX_Conf_CM.c</a>
</li>
<li>OS_RUNPRIV
: <a class="el" href="RTX__Conf__CM_8c.html#a786924d58be54e943a7e73458cebc51b">RTX_Conf_CM.c</a>
</li>
<li>OS_STKCHECK
: <a class="el" href="RTX__Conf__CM_8c.html#a6ef9e00396f881f0fa9ac877150e5962">RTX_Conf_CM.c</a>
</li>
<li>OS_STKINIT
: <a class="el" href="RTX__Conf__CM_8c.html#ac820623da739e4219ee86f15bdcd9752">RTX_Conf_CM.c</a>
</li>
<li>OS_STKSIZE
: <a class="el" href="RTX__Conf__CM_8c.html#a16495c133349f3e7c27ac933857c1a8c">RTX_Conf_CM.c</a>
</li>
<li>OS_TASKCNT
: <a class="el" href="RTX__Conf__CM_8c.html#a309353d912327b7f4a2300711ee1b349">RTX_Conf_CM.c</a>
</li>
<li>OS_TICK
: <a class="el" href="RTX__Conf__CM_8c.html#ab6b10bd6d60e95ab28c775757f6bfbcc">RTX_Conf_CM.c</a>
</li>
<li>OS_TIMERCBQS
: <a class="el" href="RTX__Conf__CM_8c.html#a29701cff84a42494279367ad018f252d">RTX_Conf_CM.c</a>
</li>
<li>OS_TIMERPRIO
: <a class="el" href="RTX__Conf__CM_8c.html#a90af874f1df4dfb0f8821cc2d860dae6">RTX_Conf_CM.c</a>
</li>
<li>OS_TIMERS
: <a class="el" href="RTX__Conf__CM_8c.html#a23b0f1095632e58b5ac0d8f7dcfdfded">RTX_Conf_CM.c</a>
</li>
<li>OS_TIMERSTKSZ
: <a class="el" href="RTX__Conf__CM_8c.html#a76d1b01799981a753fc528e600015627">RTX_Conf_CM.c</a>
</li>
<li>OS_TRV
: <a class="el" href="RTX__Conf__CM_8c.html#a9d55a070ddb219165bd4287f08318d51">RTX_Conf_CM.c</a>
</li>
<li>osCMSIS
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga702196bacccbb978620c736b209387f1">cmsis_os.h</a>
</li>
<li>osCMSIS_KERNEL
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gab78dce646fabec479c5f34bc5175b7de">cmsis_os.h</a>
</li>
<li>osFeature_MailQ
: <a class="el" href="group__CMSIS__RTOS__Mail.html#gaceb2e0071ce160d153047f2eac1aca8e">cmsis_os.h</a>
</li>
<li>osFeature_MainThread
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga22f7d235bc9f783933bd5a981fd79696">cmsis_os.h</a>
</li>
<li>osFeature_MessageQ
: <a class="el" href="group__CMSIS__RTOS__Message.html#ga479a6561f859e3d4818e25708593d203">cmsis_os.h</a>
</li>
<li>osFeature_Pool
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#gadd84b683001de327894851b428587caa">cmsis_os.h</a>
</li>
<li>osFeature_Semaphore
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a">cmsis_os.h</a>
</li>
<li>osFeature_Signals
: <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga01edde265710d883b6e237d34a6ef4a6">cmsis_os.h</a>
</li>
<li>osFeature_SysTick
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae554ec16c23c5b7d65affade2a351891">cmsis_os.h</a>
</li>
<li>osFeature_Wait
: <a class="el" href="group__CMSIS__RTOS__Wait.html#ga6c97d38879ae86491628f6e647639bad">cmsis_os.h</a>
</li>
<li>osKernelSystemId
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga47cf03658f01cdffca688e9096b58289">cmsis_os.h</a>
</li>
<li>osKernelSysTickFrequency
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga9e0954d52722673e2031233a2ab99960">cmsis_os.h</a>
</li>
<li>osKernelSysTickMicroSec
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae12c190af42d7310d8006d64f4ed5a88">cmsis_os.h</a>
</li>
<li>osMailQ
: <a class="el" href="group__CMSIS__RTOS__Mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">cmsis_os.h</a>
</li>
<li>osMailQDef
: <a class="el" href="group__CMSIS__RTOS__Mail.html#ga58d712b16c0c6668059f509386d1e55b">cmsis_os.h</a>
</li>
<li>osMessageQ
: <a class="el" href="group__CMSIS__RTOS__Message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">cmsis_os.h</a>
</li>
<li>osMessageQDef
: <a class="el" href="group__CMSIS__RTOS__Message.html#gac9a6a6276c12609793e7701afcc82326">cmsis_os.h</a>
</li>
<li>osMutex
: <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">cmsis_os.h</a>
</li>
<li>osMutexDef
: <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga9b522438489d7c402c95332b58bc94f3">cmsis_os.h</a>
</li>
<li>osPool
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">cmsis_os.h</a>
</li>
<li>osPoolDef
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">cmsis_os.h</a>
</li>
<li>osSemaphore
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">cmsis_os.h</a>
</li>
<li>osSemaphoreDef
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga9e66fe361749071e5ab87826c43c2f1b">cmsis_os.h</a>
</li>
<li>osThread
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">cmsis_os.h</a>
</li>
<li>osThreadDef
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">cmsis_os.h</a>
</li>
<li>osTimer
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga1b8d670eaf964b2910fa06885e650678">cmsis_os.h</a>
</li>
<li>osTimerDef
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga1c720627e08d1cc1afcad44e799ed492">cmsis_os.h</a>
</li>
<li>osWaitForever
: <a class="el" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">cmsis_os.h</a>
</li>
</ul>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,147 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Globals</title>
<title>CMSIS-RTOS: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</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">
$(document).ready(function(){initNavTree('globals_enum.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="contents">
&#160;<ul>
<li>os_timer_type
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">cmsis_os.txt</a>
, <a class="el" href="cmsis__os_8h.html#adac860eb9e1b4b0619271e6595ed83d9">cmsis_os.h</a>
</li>
<li>osPriority
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">cmsis_os.h</a>
</li>
<li>osStatus
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">cmsis_os.txt</a>
, <a class="el" href="cmsis__os_8h.html#ae2e091fefc4c767117727bd5aba4d99e">cmsis_os.h</a>
</li>
</ul>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,211 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Globals</title>
<title>CMSIS-RTOS: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</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">
$(document).ready(function(){initNavTree('globals_eval.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="contents">
&#160;<ul>
<li>os_status_reserved
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1">cmsis_os.h</a>
</li>
<li>osErrorISR
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f">cmsis_os.h</a>
</li>
<li>osErrorISRRecursive
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65">cmsis_os.h</a>
</li>
<li>osErrorNoMemory
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81">cmsis_os.h</a>
</li>
<li>osErrorOS
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc">cmsis_os.h</a>
</li>
<li>osErrorParameter
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109">cmsis_os.h</a>
</li>
<li>osErrorPriority
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f">cmsis_os.h</a>
</li>
<li>osErrorResource
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d">cmsis_os.h</a>
</li>
<li>osErrorTimeoutResource
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467">cmsis_os.h</a>
</li>
<li>osErrorValue
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee">cmsis_os.h</a>
</li>
<li>osEventMail
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926">cmsis_os.h</a>
</li>
<li>osEventMessage
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342">cmsis_os.h</a>
</li>
<li>osEventSignal
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518">cmsis_os.h</a>
</li>
<li>osEventTimeout
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177">cmsis_os.h</a>
</li>
<li>osOK
: <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">cmsis_os.h</a>
</li>
<li>osPriorityAboveNormal
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b">cmsis_os.h</a>
</li>
<li>osPriorityBelowNormal
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6">cmsis_os.h</a>
</li>
<li>osPriorityError
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4">cmsis_os.h</a>
</li>
<li>osPriorityHigh
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">cmsis_os.h</a>
</li>
<li>osPriorityIdle
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81">cmsis_os.h</a>
</li>
<li>osPriorityLow
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4">cmsis_os.h</a>
</li>
<li>osPriorityNormal
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">cmsis_os.h</a>
</li>
<li>osPriorityRealtime
: <a class="el" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af">cmsis_os.h</a>
</li>
<li>osTimerOnce
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951">cmsis_os.h</a>
</li>
<li>osTimerPeriodic
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788">cmsis_os.h</a>
</li>
</ul>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,297 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Globals</title>
<title>CMSIS-RTOS: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index_o"><span>o</span></a></li>
<li class="current"><a href="#index_s"><span>s</span></a></li>
</ul>
</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">
$(document).ready(function(){initNavTree('globals_func.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="contents">
&#160;
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
<li>os_error()
: <a class="el" href="group__RTX__Global__Functions.html#ga651ae76b3acf45f80bf0e0487b51d6e6">cmsis_os_rtx_extensions.h</a>
, <a class="el" href="group__RTX__Global__Functions.html#ga651ae76b3acf45f80bf0e0487b51d6e6">RTX_Conf_CM.c</a>
</li>
<li>os_idle_demon()
: <a class="el" href="group__RTX__Global__Functions.html#gafb4dc4d3dff8343a393726d2860282e4">cmsis_os_rtx_extensions.h</a>
, <a class="el" href="group__RTX__Global__Functions.html#gafb4dc4d3dff8343a393726d2860282e4">RTX_Conf_CM.c</a>
</li>
<li>os_resume()
: <a class="el" href="group__RTX__Global__Functions.html#ga1b85a217d43e6b971ffcf24f8aae1c33">cmsis_os_rtx_extensions.h</a>
</li>
<li>os_suspend()
: <a class="el" href="group__RTX__Global__Functions.html#ga3e9c57746ccbdfe90464ad50513c569e">cmsis_os_rtx_extensions.h</a>
</li>
<li>os_tick_init()
: <a class="el" href="group__RTX__Global__Functions.html#ga145e7eafdd042bb522020cbb3b469d9c">RTX_Conf_CM.c</a>
</li>
<li>os_tick_irqack()
: <a class="el" href="group__RTX__Global__Functions.html#ga85dab8408f27236c7341a69feb6258c7">RTX_Conf_CM.c</a>
</li>
<li>os_tick_ovf()
: <a class="el" href="group__RTX__Global__Functions.html#gad5deddec3fea0fb31798f571afc3c692">RTX_Conf_CM.c</a>
</li>
<li>os_tick_val()
: <a class="el" href="group__RTX__Global__Functions.html#ga567543bf38239a91f09751686c23017b">RTX_Conf_CM.c</a>
</li>
<li>osDelay()
: <a class="el" href="group__CMSIS__RTOS__Wait.html#ga02e19d5e723bfb06ba9324d625162255">cmsis_os.h</a>
</li>
<li>osKernelInitialize()
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga53d078a801022e202e8115c083ece68e">cmsis_os.h</a>
</li>
<li>osKernelRunning()
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga3b571de44cd3094c643247a7397f86b5">cmsis_os.h</a>
</li>
<li>osKernelStart()
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">cmsis_os.h</a>
</li>
<li>osKernelSysTick()
: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gad0262e4688e95d1e9038afd9bcc16001">cmsis_os.h</a>
</li>
<li>osMailAlloc()
: <a class="el" href="group__CMSIS__RTOS__Mail.html#gadf5ce811bd6a56e617e902a1db6c2194">cmsis_os.h</a>
</li>
<li>osMailCAlloc()
: <a class="el" href="group__CMSIS__RTOS__Mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">cmsis_os.h</a>
</li>
<li>osMailCreate()
: <a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">cmsis_os.h</a>
</li>
<li>osMailFree()
: <a class="el" href="group__CMSIS__RTOS__Mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">cmsis_os.h</a>
</li>
<li>osMailGet()
: <a class="el" href="group__CMSIS__RTOS__Mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">cmsis_os.h</a>
</li>
<li>osMailPut()
: <a class="el" href="group__CMSIS__RTOS__Mail.html#ga485ef6f81854ebda8ffbce4832181e02">cmsis_os.h</a>
</li>
<li>osMessageCreate()
: <a class="el" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">cmsis_os.h</a>
</li>
<li>osMessageGet()
: <a class="el" href="group__CMSIS__RTOS__Message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">cmsis_os.h</a>
</li>
<li>osMessagePut()
: <a class="el" href="group__CMSIS__RTOS__Message.html#gac0dcf462fc92de8ffaba6cc004514a6d">cmsis_os.h</a>
</li>
<li>osMutexCreate()
: <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">cmsis_os.h</a>
</li>
<li>osMutexDelete()
: <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#gac27e24135185d51d18f3dabc20910219">cmsis_os.h</a>
</li>
<li>osMutexRelease()
: <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">cmsis_os.h</a>
</li>
<li>osMutexWait()
: <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">cmsis_os.h</a>
</li>
<li>osPoolAlloc()
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">cmsis_os.h</a>
</li>
<li>osPoolCAlloc()
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">cmsis_os.h</a>
</li>
<li>osPoolCreate()
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">cmsis_os.h</a>
</li>
<li>osPoolFree()
: <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">cmsis_os.h</a>
</li>
<li>osSemaphoreCreate()
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">cmsis_os.h</a>
</li>
<li>osSemaphoreDelete()
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gabae2801ac2c096f6e8c69a264908f595">cmsis_os.h</a>
</li>
<li>osSemaphoreRelease()
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">cmsis_os.h</a>
</li>
<li>osSemaphoreWait()
: <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gacc15b0fc8ce1167fe43da33042e62098">cmsis_os.h</a>
</li>
<li>osSignalClear()
: <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">cmsis_os.h</a>
</li>
<li>osSignalSet()
: <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga3de2730654589d6c3559c4b9e2825553">cmsis_os.h</a>
</li>
<li>osSignalWait()
: <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga38860acda96df47da6923348d96fc4c9">cmsis_os.h</a>
</li>
<li>osThreadCreate()
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">cmsis_os.h</a>
</li>
<li>osThreadGetId()
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">cmsis_os.h</a>
</li>
<li>osThreadGetPriority()
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga4299d838978bc2aae5e4350754e6a4e9">cmsis_os.h</a>
</li>
<li>osThreadSetPriority()
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">cmsis_os.h</a>
</li>
<li>osThreadTerminate()
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">cmsis_os.h</a>
</li>
<li>osThreadYield()
: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf13a667493c5d629a90c13e113b99233">cmsis_os.h</a>
</li>
<li>osTimerCreate()
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">cmsis_os.h</a>
</li>
<li>osTimerDelete()
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga746b8043d906849bd65e3900fcb483cf">cmsis_os.h</a>
</li>
<li>osTimerStart()
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga27a797a401b068e2644d1125f22a07ca">cmsis_os.h</a>
</li>
<li>osTimerStop()
: <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#ga58f36b121a812936435cacc6e1e0e091">cmsis_os.h</a>
</li>
<li>osWait()
: <a class="el" href="group__CMSIS__RTOS__Wait.html#ga8470c8aaedfde524a44e22e5b2328285">cmsis_os.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
<li>svcThreadGetId()
: <a class="el" href="RTX__Conf__CM_8c.html#a395cca131b7746fc43c104a3485b77f7">RTX_Conf_CM.c</a>
</li>
</ul>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,163 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Globals</title>
<title>CMSIS-RTOS: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</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">
$(document).ready(function(){initNavTree('globals_type.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="contents">
&#160;<ul>
<li>os_pthread
: <a class="el" href="cmsis__os_8h.html#aee631e5ea1b700fc35695cc7bc574cf7">cmsis_os.h</a>
</li>
<li>os_ptimer
: <a class="el" href="cmsis__os_8h.html#aa2d85e49bde9f6951ff3545cd323f065">cmsis_os.h</a>
</li>
<li>osMailQId
: <a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">cmsis_os.h</a>
</li>
<li>osMessageQId
: <a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">cmsis_os.h</a>
</li>
<li>osMutexId
: <a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">cmsis_os.h</a>
</li>
<li>osPoolId
: <a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">cmsis_os.h</a>
</li>
<li>osSemaphoreId
: <a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">cmsis_os.h</a>
</li>
<li>osThreadId
: <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">cmsis_os.h</a>
</li>
<li>osTimerId
: <a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">cmsis_os.h</a>
</li>
</ul>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,160 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>CMSIS-RTOS API</title>
<title>CMSIS-RTOS: CMSIS-RTOS API</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('group__CMSIS__RTOS.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#groups">Content</a> </div>
<div class="headertitle">
<div class="title">CMSIS-RTOS API</div> </div>
</div><!--header-->
<div class="contents">
<p>This section describes the CMSIS-RTOS API.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Content</h2></td></tr>
<tr class="memitem:group__CMSIS__RTOS__KernelCtrl"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html">Kernel Information and Control</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__KernelCtrl"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide version/system information and start the RTOS Kernel. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__CMSIS__RTOS__ThreadMgmt"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html">Thread Management</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__ThreadMgmt"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define, create, and control thread functions. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__CMSIS__RTOS__Wait"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Wait.html">Generic Wait Functions</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__Wait"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for a time period or unspecified events. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__CMSIS__RTOS__TimerMgmt"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html">Timer Management</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__TimerMgmt"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and control timer and timer callback functions. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__CMSIS__RTOS__InterThread"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__InterThread.html">Inter-Thread Communication and Resource Sharing</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__InterThread"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for inter-thread communication. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__CMSIS__RTOS__Definitions"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Definitions.html">Generic Data Types and Definitions</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__Definitions"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data Type Definitions used by the CMSIS-RTOS API functions. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__CMSIS__RTOS__Status"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__Status"><td class="mdescLeft">&#160;</td><td class="mdescRight">Status and Error Codes returned by CMSIS-RTOS API functions. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>The CMSIS-RTOS is a generic API layer that interfaces to an existing RTOS kernel. </p>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,10 @@
var group__CMSIS__RTOS =
[
[ "Kernel Information and Control", "group__CMSIS__RTOS__KernelCtrl.html", "group__CMSIS__RTOS__KernelCtrl" ],
[ "Thread Management", "group__CMSIS__RTOS__ThreadMgmt.html", "group__CMSIS__RTOS__ThreadMgmt" ],
[ "Generic Wait Functions", "group__CMSIS__RTOS__Wait.html", "group__CMSIS__RTOS__Wait" ],
[ "Timer Management", "group__CMSIS__RTOS__TimerMgmt.html", "group__CMSIS__RTOS__TimerMgmt" ],
[ "Inter-Thread Communication and Resource Sharing", "group__CMSIS__RTOS__InterThread.html", "group__CMSIS__RTOS__InterThread" ],
[ "Generic Data Types and Definitions", "group__CMSIS__RTOS__Definitions.html", "group__CMSIS__RTOS__Definitions" ],
[ "Status and Error Codes", "group__CMSIS__RTOS__Status.html", "group__CMSIS__RTOS__Status" ]
];
@@ -0,0 +1,257 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Generic Data Types and Definitions</title>
<title>CMSIS-RTOS: Generic Data Types and Definitions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('group__CMSIS__RTOS__Definitions.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#nested-classes">Data Structures</a> </div>
<div class="headertitle">
<div class="title">Generic Data Types and Definitions<div class="ingroups"><a class="el" href="group__CMSIS__RTOS.html">CMSIS-RTOS API</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Data Type Definitions used by the CMSIS-RTOS API functions.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:structosEvent"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a></td></tr>
<tr class="memdesc:structosEvent"><td class="mdescLeft">&#160;</td><td class="mdescRight">Event structure contains detailed information about an event. <a href="group__CMSIS__RTOS__Definitions.html#structosEvent">More...</a><br/></td></tr>
<tr class="separator:structosEvent"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:unionosEvent_8value"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Definitions.html#unionosEvent_8value">osEvent.value</a></td></tr>
<tr class="separator:unionosEvent_8value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:unionosEvent_8def"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Definitions.html#unionosEvent_8def">osEvent.def</a></td></tr>
<tr class="separator:unionosEvent_8def"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structos__mailQ"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structos__mailQ">os_mailQ</a></td></tr>
<tr class="separator:structos__mailQ"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>The Data Type section lists all data types that are used to exchange information with CMSIS-RTOS functions. </p>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="structosEvent" id="structosEvent"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct osEvent</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>os_event</b> shall be consistent in every CMSIS-RTOS. However the struct may be extended at the end.</dd></dl>
<p>The <b><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent" title="Event structure contains detailed information about an event. ">osEvent</a></b> structure describes the events returned by CMSIS-RTOS functions. </p>
</div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a596b6d55c3321db19239256bbe403df6"></a>union <a class="el" href="group__CMSIS__RTOS__Definitions.html#unionosEvent_8def">osEvent</a></td>
<td class="fieldname">
def</td>
<td class="fielddoc">
event definition </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ad477a289f1f03ac45407b64268d707d3"></a><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a></td>
<td class="fieldname">
status</td>
<td class="fielddoc">
status code: event or error information </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a0b9f8fd3645f01d8cb09cae82add2d7f"></a>union <a class="el" href="group__CMSIS__RTOS__Definitions.html#unionosEvent_8value">osEvent</a></td>
<td class="fieldname">
value</td>
<td class="fielddoc">
event value </td></tr>
</table>
</div>
</div>
<a name="unionosEvent_8value" id="unionosEvent_8value"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">union osEvent.value</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a83878c91171338902e0fe0fb97a8c47a"></a>void *</td>
<td class="fieldname">
p</td>
<td class="fielddoc">
message or mail as void pointer </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="aa8420f8bebd6d9578b405b6bbaa813d9"></a>int32_t</td>
<td class="fieldname">
signals</td>
<td class="fielddoc">
signal flags </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a9e3669d19b675bd57058fd4664205d2a"></a>uint32_t</td>
<td class="fieldname">
v</td>
<td class="fielddoc">
message as 32-bit value </td></tr>
</table>
</div>
</div>
<a name="unionosEvent_8def" id="unionosEvent_8def"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">union osEvent.def</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a57aa2b69577037fb2428bc48a9fb1038"></a><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a></td>
<td class="fieldname">
mail_id</td>
<td class="fielddoc">
mail id obtained by <a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a> </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a4ccaa172acbdcbf38fa0ea0ef0229c49"></a><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a></td>
<td class="fieldname">
message_id</td>
<td class="fielddoc">
message id obtained by <a class="el" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a> </td></tr>
</table>
</div>
</div>
<a name="structos__mailQ" id="structos__mailQ"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct os_mailQ</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><p>The <b><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent" title="Event structure contains detailed information about an event. ">osEvent</a></b> structure describes the events returned by CMSIS-RTOS functions. </p>
</div>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,18 @@
var group__CMSIS__RTOS__Definitions =
[
[ "osEvent", "group__CMSIS__RTOS__Definitions.html#structosEvent", [
[ "def", "group__CMSIS__RTOS__Definitions.html#a596b6d55c3321db19239256bbe403df6", null ],
[ "status", "group__CMSIS__RTOS__Definitions.html#ad477a289f1f03ac45407b64268d707d3", null ],
[ "value", "group__CMSIS__RTOS__Definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f", null ]
] ],
[ "osEvent.value", "group__CMSIS__RTOS__Definitions.html#unionosEvent_8value", [
[ "p", "group__CMSIS__RTOS__Definitions.html#a83878c91171338902e0fe0fb97a8c47a", null ],
[ "signals", "group__CMSIS__RTOS__Definitions.html#aa8420f8bebd6d9578b405b6bbaa813d9", null ],
[ "v", "group__CMSIS__RTOS__Definitions.html#a9e3669d19b675bd57058fd4664205d2a", null ]
] ],
[ "osEvent.def", "group__CMSIS__RTOS__Definitions.html#unionosEvent_8def", [
[ "mail_id", "group__CMSIS__RTOS__Definitions.html#a57aa2b69577037fb2428bc48a9fb1038", null ],
[ "message_id", "group__CMSIS__RTOS__Definitions.html#a4ccaa172acbdcbf38fa0ea0ef0229c49", null ]
] ],
[ "os_mailQ", "group__CMSIS__RTOS__Definitions.html#structos__mailQ", null ]
];
@@ -0,0 +1,6 @@
var group__CMSIS__RTOS__Definitions_structosEvent =
[
[ "def", "group__CMSIS__RTOS__Definitions.html#a596b6d55c3321db19239256bbe403df6", null ],
[ "status", "group__CMSIS__RTOS__Definitions.html#ad477a289f1f03ac45407b64268d707d3", null ],
[ "value", "group__CMSIS__RTOS__Definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f", null ]
];
@@ -0,0 +1,5 @@
var group__CMSIS__RTOS__Definitions_unionosEvent_8def =
[
[ "mail_id", "group__CMSIS__RTOS__Definitions.html#a57aa2b69577037fb2428bc48a9fb1038", null ],
[ "message_id", "group__CMSIS__RTOS__Definitions.html#a4ccaa172acbdcbf38fa0ea0ef0229c49", null ]
];
@@ -0,0 +1,6 @@
var group__CMSIS__RTOS__Definitions_unionosEvent_8value =
[
[ "p", "group__CMSIS__RTOS__Definitions.html#a83878c91171338902e0fe0fb97a8c47a", null ],
[ "signals", "group__CMSIS__RTOS__Definitions.html#aa8420f8bebd6d9578b405b6bbaa813d9", null ],
[ "v", "group__CMSIS__RTOS__Definitions.html#a9e3669d19b675bd57058fd4664205d2a", null ]
];
@@ -0,0 +1,171 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Inter-Thread Communication and Resource Sharing</title>
<title>CMSIS-RTOS: Inter-Thread Communication and Resource Sharing</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('group__CMSIS__RTOS__InterThread.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#groups">Content</a> </div>
<div class="headertitle">
<div class="title">Inter-Thread Communication and Resource Sharing<div class="ingroups"><a class="el" href="group__CMSIS__RTOS.html">CMSIS-RTOS API</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Functions for inter-thread communication.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Content</h2></td></tr>
<tr class="memitem:group__CMSIS__RTOS__SignalMgmt"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html">Signal Events</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__SignalMgmt"><td class="mdescLeft">&#160;</td><td class="mdescRight">Synchronize threads using signals. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__CMSIS__RTOS__Message"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html">Message Queue</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__Message"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exchange messages between threads in a FIFO-like operation. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__CMSIS__RTOS__PoolMgmt"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html">Memory Pool</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__PoolMgmt"><td class="mdescLeft">&#160;</td><td class="mdescRight">Manage thread-safe fixed-size blocks of dynamic memory. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__CMSIS__RTOS__Mail"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html">Mail Queue</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__Mail"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exchange data between threads using a queue of memory blocks. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__CMSIS__RTOS__MutexMgmt"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html">Mutexes</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__MutexMgmt"><td class="mdescLeft">&#160;</td><td class="mdescRight">Synchronize resource access using Mutual Exclusion (Mutex). <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__CMSIS__RTOS__SemaphoreMgmt"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html">Semaphores</a></td></tr>
<tr class="memdesc:group__CMSIS__RTOS__SemaphoreMgmt"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access shared resources simultaneously from different threads. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>In most applications, threads need to <b>communicate</b> <b>with</b> <b>each</b> <b>other</b> or <b>access</b> <b>shared</b> <b>resources</b> together. There are many ways to exchange data between threads, for example using shared data, polling loops and message passing.</p>
<p>Many resources in a microcontroller can be considered as <b>serially-reusable</b>. This means that they can be used repeatedly by different threads, but only by <b>one</b> <b>thread</b> <b>at</b> <b>a</b> <b>time</b> (for example communication peripherals such as <b>UARTs</b>, <b>memory</b>, and <b>files</b> that need to be modified).</p>
<p>The CMSIS-RTOS API provides different means to pass messages between threads to make inter-thread communication more efficient. Also, resource sharing is inherently supported. The following methods are available to the user: </p>
<h2>Inter-Thread Communication </h2>
<ul>
<li><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html">Signal Events</a></li>
<li><a class="el" href="group__CMSIS__RTOS__Message.html">Message Queue</a></li>
<li><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html">Memory Pool</a></li>
<li><a class="el" href="group__CMSIS__RTOS__Mail.html">Mail Queue</a></li>
</ul>
<h2>Resource Sharing </h2>
<ul>
<li><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html">Mutexes</a></li>
<li><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html">Semaphores</a> </li>
</ul>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,9 @@
var group__CMSIS__RTOS__InterThread =
[
[ "Signal Events", "group__CMSIS__RTOS__SignalMgmt.html", "group__CMSIS__RTOS__SignalMgmt" ],
[ "Message Queue", "group__CMSIS__RTOS__Message.html", "group__CMSIS__RTOS__Message" ],
[ "Memory Pool", "group__CMSIS__RTOS__PoolMgmt.html", "group__CMSIS__RTOS__PoolMgmt" ],
[ "Mail Queue", "group__CMSIS__RTOS__Mail.html", "group__CMSIS__RTOS__Mail" ],
[ "Mutexes", "group__CMSIS__RTOS__MutexMgmt.html", "group__CMSIS__RTOS__MutexMgmt" ],
[ "Semaphores", "group__CMSIS__RTOS__SemaphoreMgmt.html", "group__CMSIS__RTOS__SemaphoreMgmt" ]
];
@@ -0,0 +1,469 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Kernel Information and Control</title>
<title>CMSIS-RTOS: Kernel Information and Control</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('group__CMSIS__RTOS__KernelCtrl.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Kernel Information and Control<div class="ingroups"><a class="el" href="group__CMSIS__RTOS.html">CMSIS-RTOS API</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Provide version/system information and start the RTOS Kernel.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga22f7d235bc9f783933bd5a981fd79696"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga22f7d235bc9f783933bd5a981fd79696">osFeature_MainThread</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:ga22f7d235bc9f783933bd5a981fd79696"><td class="mdescLeft">&#160;</td><td class="mdescRight">main thread 1=main can be thread, 0=not available <a href="#ga22f7d235bc9f783933bd5a981fd79696">More...</a><br/></td></tr>
<tr class="separator:ga22f7d235bc9f783933bd5a981fd79696"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae554ec16c23c5b7d65affade2a351891"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae554ec16c23c5b7d65affade2a351891">osFeature_SysTick</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gae554ec16c23c5b7d65affade2a351891"><td class="mdescLeft">&#160;</td><td class="mdescRight">osKernelSysTick functions: 1=available, 0=not available <a href="#gae554ec16c23c5b7d65affade2a351891">More...</a><br/></td></tr>
<tr class="separator:gae554ec16c23c5b7d65affade2a351891"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga702196bacccbb978620c736b209387f1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga702196bacccbb978620c736b209387f1">osCMSIS</a>&#160;&#160;&#160;0x10002</td></tr>
<tr class="memdesc:ga702196bacccbb978620c736b209387f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">API version (main [31:16] .sub [15:0]) <a href="#ga702196bacccbb978620c736b209387f1">More...</a><br/></td></tr>
<tr class="separator:ga702196bacccbb978620c736b209387f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab78dce646fabec479c5f34bc5175b7de"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gab78dce646fabec479c5f34bc5175b7de">osCMSIS_KERNEL</a>&#160;&#160;&#160;0x10000</td></tr>
<tr class="memdesc:gab78dce646fabec479c5f34bc5175b7de"><td class="mdescLeft">&#160;</td><td class="mdescRight">RTOS identification and version (main [31:16] .sub [15:0]) <a href="#gab78dce646fabec479c5f34bc5175b7de">More...</a><br/></td></tr>
<tr class="separator:gab78dce646fabec479c5f34bc5175b7de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga47cf03658f01cdffca688e9096b58289"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga47cf03658f01cdffca688e9096b58289">osKernelSystemId</a>&#160;&#160;&#160;&quot;KERNEL V1.00&quot;</td></tr>
<tr class="memdesc:ga47cf03658f01cdffca688e9096b58289"><td class="mdescLeft">&#160;</td><td class="mdescRight">RTOS identification string. <a href="#ga47cf03658f01cdffca688e9096b58289">More...</a><br/></td></tr>
<tr class="separator:ga47cf03658f01cdffca688e9096b58289"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9e0954d52722673e2031233a2ab99960"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>&#160;&#160;&#160;100000000</td></tr>
<tr class="memdesc:ga9e0954d52722673e2031233a2ab99960"><td class="mdescLeft">&#160;</td><td class="mdescRight">The RTOS kernel system timer frequency in Hz. <a href="#ga9e0954d52722673e2031233a2ab99960">More...</a><br/></td></tr>
<tr class="separator:ga9e0954d52722673e2031233a2ab99960"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae12c190af42d7310d8006d64f4ed5a88"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae12c190af42d7310d8006d64f4ed5a88">osKernelSysTickMicroSec</a>(microsec)&#160;&#160;&#160;(((uint64_t)microsec * (<a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>)) / 1000000)</td></tr>
<tr class="memdesc:gae12c190af42d7310d8006d64f4ed5a88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a microseconds value to a RTOS kernel system timer value. <a href="#gae12c190af42d7310d8006d64f4ed5a88">More...</a><br/></td></tr>
<tr class="separator:gae12c190af42d7310d8006d64f4ed5a88"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga53d078a801022e202e8115c083ece68e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga53d078a801022e202e8115c083ece68e">osKernelInitialize</a> (void)</td></tr>
<tr class="memdesc:ga53d078a801022e202e8115c083ece68e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the RTOS Kernel for creating objects. <a href="#ga53d078a801022e202e8115c083ece68e">More...</a><br/></td></tr>
<tr class="separator:ga53d078a801022e202e8115c083ece68e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaab668ffd2ea76bb0a77ab0ab385eaef2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a> (void)</td></tr>
<tr class="memdesc:gaab668ffd2ea76bb0a77ab0ab385eaef2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start the RTOS Kernel. <a href="#gaab668ffd2ea76bb0a77ab0ab385eaef2">More...</a><br/></td></tr>
<tr class="separator:gaab668ffd2ea76bb0a77ab0ab385eaef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3b571de44cd3094c643247a7397f86b5"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga3b571de44cd3094c643247a7397f86b5">osKernelRunning</a> (void)</td></tr>
<tr class="memdesc:ga3b571de44cd3094c643247a7397f86b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the RTOS kernel is already started. <a href="#ga3b571de44cd3094c643247a7397f86b5">More...</a><br/></td></tr>
<tr class="separator:ga3b571de44cd3094c643247a7397f86b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad0262e4688e95d1e9038afd9bcc16001"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gad0262e4688e95d1e9038afd9bcc16001">osKernelSysTick</a> (void)</td></tr>
<tr class="memdesc:gad0262e4688e95d1e9038afd9bcc16001"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the RTOS kernel system timer counter. <a href="#gad0262e4688e95d1e9038afd9bcc16001">More...</a><br/></td></tr>
<tr class="separator:gad0262e4688e95d1e9038afd9bcc16001"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>The Kernel Information and Control function group allows to:</p>
<ul>
<li>obtain information about the system and the underlying kernel.</li>
<li>obtain version information about the CMSIS-RTOS API.</li>
<li>initialize of the RTOS kernel for creating objects.</li>
<li>start the RTOS kernel and thread switching.</li>
<li>check the execution status of the RTOS kernel.</li>
</ul>
<p>The function <b>main</b> is a special thread function that may be started at system initialization. In this case it has the initial priority <em>osPriorityNormal</em>.</p>
<p>When reaching <b>main</b>, it is necessary to:</p>
<ol type="1">
<li>Call <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga53d078a801022e202e8115c083ece68e" title="Initialize the RTOS Kernel for creating objects. ">osKernelInitialize()</a> to initialize the CMSIS-RTOS Kernel</li>
<li>Setup device peripherals and create other RTOS objects using the <b>os*Create</b> functions.</li>
<li>Start the Kernel and begin thread switching by calling <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2" title="Start the RTOS Kernel. ">osKernelStart()</a>.</li>
</ol>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) {</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__KernelCtrl.html#ga53d078a801022e202e8115c083ece68e">osKernelInitialize</a> (); <span class="comment">// initialize CMSIS-RTOS</span></div>
<div class="line"> </div>
<div class="line"> <span class="comment">// initialize peripherals here</span></div>
<div class="line"> </div>
<div class="line"> <span class="comment">// create &#39;thread&#39; functions that start executing,</span></div>
<div class="line"> <span class="comment">// example: tid_name = osThreadCreate (osThread(name), NULL);</span></div>
<div class="line"> </div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a> (); <span class="comment">// start thread execution </span></div>
<div class="line">}</div>
</div><!-- fragment --> <h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga702196bacccbb978620c736b209387f1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osCMSIS&#160;&#160;&#160;0x10002</td>
</tr>
</table>
</div><div class="memdoc">
<p>Version information of the CMSIS-RTOS API whereby major version is in bits [31:16] and sub version in bits [15:0]. The value 0x10000 represents version 1.00.</p>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osCMSIS</b> identifies the CMSIS-RTOS API version. </dd></dl>
</div>
</div>
<a class="anchor" id="gab78dce646fabec479c5f34bc5175b7de"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osCMSIS_KERNEL&#160;&#160;&#160;0x10000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Identifies the underlying RTOS kernel and version number. The actual name of that define depends on the RTOS Kernel used in the implementation. For example, <b>osCMSIS_FreeRTOS</b> identifies the FreeRTOS kernel and the value indicates the version number of that kernel whereby the major version is in bits [31:16] and sub version in bits [15:0]. The value 0x10000 represents version 1.00.</p>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>osCMSIS_KERNEL</b> identifies the underlying RTOS kernel and version number. </dd></dl>
</div>
</div>
<a class="anchor" id="ga22f7d235bc9f783933bd5a981fd79696"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osFeature_MainThread&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>A CMSIS-RTOS implementation may support to start thread execution with the function 'main'.</p>
<ul>
<li>When <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga22f7d235bc9f783933bd5a981fd79696">osFeature_MainThread</a> is 1 the RTOS offers to start with 'main'. The RTOS kernel is in this case already started.</li>
<li>When <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga22f7d235bc9f783933bd5a981fd79696">osFeature_MainThread</a> is 0 the RTOS requires explicit start with <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a>.</li>
</ul>
<p><a class="el" href="rtxImplementation.html">CMSIS-RTOS RTX</a> Setting: <b>osFeature_MainThread</b> is 1</p>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osFeature_xxx</b> shall be consistent in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="gae554ec16c23c5b7d65affade2a351891"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osFeature_SysTick&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>A CMSIS-RTOS implementation may provide access to the RTOS kernel system timer.</p>
<ul>
<li>When <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae554ec16c23c5b7d65affade2a351891">osFeature_SysTick</a> is 1 access to the RTOS kernel system timer is provided with <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gad0262e4688e95d1e9038afd9bcc16001">osKernelSysTick</a>, <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>, and <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae12c190af42d7310d8006d64f4ed5a88">osKernelSysTickMicroSec</a>.</li>
<li>When <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae554ec16c23c5b7d65affade2a351891">osFeature_SysTick</a> is 0 access to the RTOS kernel system timer is not implemented.</li>
</ul>
<p><a class="el" href="rtxImplementation.html">CMSIS-RTOS RTX</a> Setting: <b>osFeature_SysTick</b> is 1 </p>
</div>
</div>
<a class="anchor" id="ga47cf03658f01cdffca688e9096b58289"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osKernelSystemId&#160;&#160;&#160;&quot;KERNEL V1.00&quot;</td>
</tr>
</table>
</div><div class="memdoc">
<p>Defines a string that identifies the underlying RTOS Kernel and provides version information. The length of that string is limited to 21 bytes. A valid identification string is for example, <b>"FreeRTOS V1.00"</b>.</p>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osKernelSystemId</b> shall be consistent in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="ga9e0954d52722673e2031233a2ab99960"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osKernelSysTickFrequency&#160;&#160;&#160;100000000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Specifies the frequency of the Kernel SysTick timer in Hz. The value is typically use to scale a time value and is for example used in <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae12c190af42d7310d8006d64f4ed5a88">osKernelSysTickMicroSec</a>.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gad0262e4688e95d1e9038afd9bcc16001" title="Get the RTOS kernel system timer counter. ">osKernelSysTick</a></dd></dl>
<dl class="section note"><dt>Note</dt><dd>Reflects the system timer setting and is typically defined in a configuration file. </dd></dl>
</div>
</div>
<a class="anchor" id="gae12c190af42d7310d8006d64f4ed5a88"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osKernelSysTickMicroSec</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">microsec</td><td>)</td>
<td>&#160;&#160;&#160;(((uint64_t)microsec * (<a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>)) / 1000000)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Allows you to scale a microsecond value to the frequency of the Kernel SysTick timer. This macro is typically used to check for short timeouts in polling loops.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gad0262e4688e95d1e9038afd9bcc16001" title="Get the RTOS kernel system timer counter. ">osKernelSysTick</a></dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">microsec</td><td>time value in microseconds. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>time value normalized to the <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a> </dd></dl>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga53d078a801022e202e8115c083ece68e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osKernelInitialize </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osKernelInitialize</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Initialize of the RTOS Kernel to allow peripheral setup and creation of other RTOS objects with the functions:</p>
<ul>
<li><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> : Create a thread function.</li>
<li><a class="el" href="group__CMSIS__RTOS__TimerMgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a> : Define attributes of the timer callback function.</li>
<li><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a> : Define and initialize a mutex.</li>
<li><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> : Define and initialize a semaphore.</li>
<li><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a> : Define and initialize a fix-size memory pool.</li>
<li><a class="el" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a> : Define and initialize a message queue.</li>
<li><a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a> : Define and initialize a mail queue with fix-size memory blocks.</li>
</ul>
<p>The RTOS kernel does not start thread switching until the function <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a> is called.</p>
<dl class="section note"><dt>Note</dt><dd>In case that the RTOS Kernel starts thread execution with the function <em>main</em> the function osKernelInitialize stops thread switching. This allows you to setup the system to a defined state before thread switching is resumed with <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) {</div>
<div class="line"> <span class="keywordflow">if</span> (!<a class="code" href="group__CMSIS__RTOS__KernelCtrl.html#ga3b571de44cd3094c643247a7397f86b5">osKernelRunning</a> ()) { <span class="comment">// if kernel is not running, initialize the kernel</span></div>
<div class="line"> <span class="keywordflow">if</span> (<a class="code" href="group__CMSIS__RTOS__KernelCtrl.html#ga53d078a801022e202e8115c083ece68e">osKernelInitialize</a> () != <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a>) { <span class="comment">// check osStatus for other possible valid values</span></div>
<div class="line"> <span class="comment">// exit with an error message</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line"> :</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga3b571de44cd3094c643247a7397f86b5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t osKernelRunning </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osKernelRunning</b> shall be consistent in every CMSIS-RTOS. </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>0 RTOS is not started, 1 RTOS is started.</dd></dl>
<p>Identifies if the RTOS kernel is started. For systems with the option to start the <em>main</em> function as a thread this allows you to identify that the RTOS kernel is already running.</p>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) { <span class="comment">// program execution starts here</span></div>
<div class="line"> <span class="keywordflow">if</span> (<a class="code" href="group__CMSIS__RTOS__KernelCtrl.html#ga3b571de44cd3094c643247a7397f86b5">osKernelRunning</a> ()) { </div>
<div class="line"> : <span class="comment">// main is already a thread function</span></div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="gaab668ffd2ea76bb0a77ab0ab385eaef2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osKernelStart </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osKernelStart</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Start the RTOS Kernel and begin thread switching.</p>
<dl class="section note"><dt>Note</dt><dd>When the CMSIS-RTOS starts thread execution with the function <em>main</em> this function resumes thread switching. The <em>main</em> thread will continue executing after <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a>.</dd></dl>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the RTOS kernel has been successfully started.</li>
<li><em>osErrorISR:</em> <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a> cannot be called from interrupt service routines.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) {</div>
<div class="line"> <span class="keywordflow">if</span> (<a class="code" href="group__CMSIS__RTOS__KernelCtrl.html#ga53d078a801022e202e8115c083ece68e">osKernelInitialize</a> () != <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a>) { <span class="comment">// check osStatus for other possible valid values</span></div>
<div class="line"> <span class="comment">// exit with an error message</span></div>
<div class="line"> }</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> (!<a class="code" href="group__CMSIS__RTOS__KernelCtrl.html#ga3b571de44cd3094c643247a7397f86b5">osKernelRunning</a> ()) { <span class="comment">// is the kernel running ?</span></div>
<div class="line"> <span class="keywordflow">if</span> (<a class="code" href="group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a> () != <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a>) { <span class="comment">// start the kernel</span></div>
<div class="line"> <span class="comment">// kernel could not be started</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="gad0262e4688e95d1e9038afd9bcc16001"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t osKernelSysTick </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osKernelSysTick</b> shall be consistent in every CMSIS-RTOS. </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>RTOS kernel system timer as 32-bit value</dd></dl>
<p>Get the value of the Kernel SysTick timer for time comparison. The value is a rolling 32-bit counter that is typically composed of the kernel system interrupt timer value and an counter that counts these interrupts.</p>
<p>This function allows the implementation of timeout checks. These are for example required when checking for a busy status in a device or peripheral initialization routine.</p>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> SetupDevice (<span class="keywordtype">void</span>) {</div>
<div class="line"> uint32_t tick;</div>
<div class="line"> </div>
<div class="line"> tick = <a class="code" href="group__CMSIS__RTOS__KernelCtrl.html#gad0262e4688e95d1e9038afd9bcc16001">osKernelSysTick</a>(); <span class="comment">// get start value of the Kernel system tick</span></div>
<div class="line"> Device.Setup (); <span class="comment">// initialize a device or peripheral</span></div>
<div class="line"> <span class="keywordflow">do</span> { <span class="comment">// poll device busy status for 100 microseconds</span></div>
<div class="line"> <span class="keywordflow">if</span> (!Device.Busy) <span class="keywordflow">break</span>; <span class="comment">// check if device is correctly initialized</span></div>
<div class="line"> } <span class="keywordflow">while</span> ((<a class="code" href="group__CMSIS__RTOS__KernelCtrl.html#gad0262e4688e95d1e9038afd9bcc16001">osKernelSysTick</a>() - tick) &lt; <a class="code" href="group__CMSIS__RTOS__KernelCtrl.html#gae12c190af42d7310d8006d64f4ed5a88">osKernelSysTickMicroSec</a>(100)); </div>
<div class="line"> <span class="keywordflow">if</span> (Device.Busy) { </div>
<div class="line"> ; <span class="comment">// in case device still busy, signal error</span></div>
<div class="line"> }</div>
<div class="line"> <span class="comment">// start interacting with device</span></div>
<div class="line">}</div>
</div><!-- fragment -->
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,14 @@
var group__CMSIS__RTOS__KernelCtrl =
[
[ "osCMSIS", "group__CMSIS__RTOS__KernelCtrl.html#ga702196bacccbb978620c736b209387f1", null ],
[ "osCMSIS_KERNEL", "group__CMSIS__RTOS__KernelCtrl.html#gab78dce646fabec479c5f34bc5175b7de", null ],
[ "osFeature_MainThread", "group__CMSIS__RTOS__KernelCtrl.html#ga22f7d235bc9f783933bd5a981fd79696", null ],
[ "osFeature_SysTick", "group__CMSIS__RTOS__KernelCtrl.html#gae554ec16c23c5b7d65affade2a351891", null ],
[ "osKernelSystemId", "group__CMSIS__RTOS__KernelCtrl.html#ga47cf03658f01cdffca688e9096b58289", null ],
[ "osKernelSysTickFrequency", "group__CMSIS__RTOS__KernelCtrl.html#ga9e0954d52722673e2031233a2ab99960", null ],
[ "osKernelSysTickMicroSec", "group__CMSIS__RTOS__KernelCtrl.html#gae12c190af42d7310d8006d64f4ed5a88", null ],
[ "osKernelInitialize", "group__CMSIS__RTOS__KernelCtrl.html#ga53d078a801022e202e8115c083ece68e", null ],
[ "osKernelRunning", "group__CMSIS__RTOS__KernelCtrl.html#ga3b571de44cd3094c643247a7397f86b5", null ],
[ "osKernelStart", "group__CMSIS__RTOS__KernelCtrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2", null ],
[ "osKernelSysTick", "group__CMSIS__RTOS__KernelCtrl.html#gad0262e4688e95d1e9038afd9bcc16001", null ]
];
@@ -0,0 +1,634 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Mail Queue</title>
<title>CMSIS-RTOS: Mail Queue</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('group__CMSIS__RTOS__Mail.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Mail Queue<div class="ingroups"><a class="el" href="group__CMSIS__RTOS__InterThread.html">Inter-Thread Communication and Resource Sharing</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Exchange data between threads using a queue of memory blocks.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gaceb2e0071ce160d153047f2eac1aca8e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#gaceb2e0071ce160d153047f2eac1aca8e">osFeature_MailQ</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gaceb2e0071ce160d153047f2eac1aca8e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mail Queues: 1=available, 0=not available. <a href="#gaceb2e0071ce160d153047f2eac1aca8e">More...</a><br/></td></tr>
<tr class="separator:gaceb2e0071ce160d153047f2eac1aca8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga58d712b16c0c6668059f509386d1e55b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#ga58d712b16c0c6668059f509386d1e55b">osMailQDef</a>(name, queue_sz, type)</td></tr>
<tr class="memdesc:ga58d712b16c0c6668059f509386d1e55b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a Mail Queue Definition. <a href="#ga58d712b16c0c6668059f509386d1e55b">More...</a><br/></td></tr>
<tr class="separator:ga58d712b16c0c6668059f509386d1e55b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad2deeb66d51ade54e63d8f87ff2ec9d2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">osMailQ</a>(name)&#160;&#160;&#160;&amp;os_mailQ_def_##name</td></tr>
<tr class="memdesc:gad2deeb66d51ade54e63d8f87ff2ec9d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Mail Queue Definition. <a href="#gad2deeb66d51ade54e63d8f87ff2ec9d2">More...</a><br/></td></tr>
<tr class="separator:gad2deeb66d51ade54e63d8f87ff2ec9d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaa177e7fe5820dd70d8c9e46ded131174"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosMailQDef__t">osMailQDef_t</a> *queue_def, <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr>
<tr class="memdesc:gaa177e7fe5820dd70d8c9e46ded131174"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and Initialize mail queue. <a href="#gaa177e7fe5820dd70d8c9e46ded131174">More...</a><br/></td></tr>
<tr class="separator:gaa177e7fe5820dd70d8c9e46ded131174"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadf5ce811bd6a56e617e902a1db6c2194"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, uint32_t millisec)</td></tr>
<tr class="memdesc:gadf5ce811bd6a56e617e902a1db6c2194"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a memory block from a mail. <a href="#gadf5ce811bd6a56e617e902a1db6c2194">More...</a><br/></td></tr>
<tr class="separator:gadf5ce811bd6a56e617e902a1db6c2194"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8fde74f6fe5b9e88f75cc5eb8f2124fd"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">osMailCAlloc</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, uint32_t millisec)</td></tr>
<tr class="memdesc:ga8fde74f6fe5b9e88f75cc5eb8f2124fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a memory block from a mail and set memory block to zero. <a href="#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">More...</a><br/></td></tr>
<tr class="separator:ga8fde74f6fe5b9e88f75cc5eb8f2124fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga485ef6f81854ebda8ffbce4832181e02"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, void *mail)</td></tr>
<tr class="memdesc:ga485ef6f81854ebda8ffbce4832181e02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Put a mail to a queue. <a href="#ga485ef6f81854ebda8ffbce4832181e02">More...</a><br/></td></tr>
<tr class="separator:ga485ef6f81854ebda8ffbce4832181e02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac6ad7e6e7d6c4a80e60da22c57a42ccd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, uint32_t millisec)</td></tr>
<tr class="memdesc:gac6ad7e6e7d6c4a80e60da22c57a42ccd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a mail from a queue. <a href="#gac6ad7e6e7d6c4a80e60da22c57a42ccd">More...</a><br/></td></tr>
<tr class="separator:gac6ad7e6e7d6c4a80e60da22c57a42ccd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga27c1060cf21393f96b4fd1ed1c0167cc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">osMailFree</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, void *mail)</td></tr>
<tr class="memdesc:ga27c1060cf21393f96b4fd1ed1c0167cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free a memory block from a mail. <a href="#ga27c1060cf21393f96b4fd1ed1c0167cc">More...</a><br/></td></tr>
<tr class="separator:ga27c1060cf21393f96b4fd1ed1c0167cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>A <b>mail</b> <b>queue</b> resembles a <a class="el" href="group__CMSIS__RTOS__Message.html">Message Queue</a>, but the data that is being transferred consists of memory blocks that need to be allocated (before putting data in) and freed (after taking data out). The mail queue uses a <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html">Memory Pool</a> to create formatted memory blocks and passes pointers to these blocks in a message queue. This allows the data to stay in an allocated memory block while only a pointer is moved between the separate threads. This is an advantage over <a class="el" href="group__CMSIS__RTOS__Message.html">messages</a> that can transfer only a 32-bit value or a pointer. Using the mail queue functions, you can control, send, receive, or wait for mail.</p>
<div class="image">
<img src="MailQueue.png" alt="MailQueue.png"/>
<div class="caption">
CMSIS-RTOS Mail Queue</div></div>
<h2>Working with Mail Queues </h2>
<p>Follow these steps to create and use a mail queue:</p>
<ol type="1">
<li>Declare a data structure that combines a number of elements: <div class="fragment"><div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"> uint32_t length;</div>
<div class="line"> uint32_t width;</div>
<div class="line"> uint32_t height;</div>
<div class="line"> uint32_t weight;</div>
<div class="line">} properties_t;</div>
</div><!-- fragment --></li>
<li>Declare a mail queue made up of these objects: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__Mail.html#ga58d712b16c0c6668059f509386d1e55b">osMailQDef</a> (object_pool_q, 10, properties_t); <span class="comment">// Declare mail queue</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> (object_pool_q_id); <span class="comment">// Mail queue ID</span></div>
</div><!-- fragment --></li>
<li>Then, create the mail pool in a thread: <div class="fragment"><div class="line">object_pool_q_id = <a class="code" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>(<a class="code" href="group__CMSIS__RTOS__Mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">osMailQ</a>(object_pool_q), NULL);</div>
</div><!-- fragment --></li>
<li>Allocate the mail queue within a thread and fill it with data: <div class="fragment"><div class="line">properties_t *object_data;</div>
<div class="line"> object_data = (properties_t *) <a class="code" href="group__CMSIS__RTOS__Mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a>(object_pool_q_id, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>);</div>
<div class="line"> </div>
<div class="line">object_data-&gt;length = 100;</div>
<div class="line">object_data-&gt;width = 10;</div>
<div class="line">object_data-&gt;height = 23;</div>
<div class="line">object_data-&gt;weight = 1000;</div>
</div><!-- fragment --></li>
<li>Pass the pointer to the mail queue to another thread: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__Mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a>(object_pool_q_id, object_data);</div>
</div><!-- fragment --></li>
<li>Access the data in another thread: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a> <span class="keyword">event</span> = <a class="code" href="group__CMSIS__RTOS__Mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a>(properties_q_id, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>);</div>
<div class="line">properties_t *received = (properties_t *)event.value.p; <span class="comment">// &quot;.p&quot; indicates that the message is a pointer</span></div>
<div class="line">my_length(received-&gt;length);</div>
</div><!-- fragment --></li>
<li>Once the data has been used, the memory block must be freed so that the memory pool can be reused <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__Mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">osMailFree</a>(object_pool_q_id, received);</div>
</div><!-- fragment --> </li>
</ol>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gaceb2e0071ce160d153047f2eac1aca8e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osFeature_MailQ&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>A CMSIS-RTOS implementation may support mail queues.</p>
<ul>
<li>When <a class="el" href="group__CMSIS__RTOS__Mail.html#gaceb2e0071ce160d153047f2eac1aca8e">osFeature_MailQ</a> is 1 mail queues are supported.</li>
<li>When <a class="el" href="group__CMSIS__RTOS__Mail.html#gaceb2e0071ce160d153047f2eac1aca8e">osFeature_MailQ</a> is 0 no mail queues are supported.</li>
</ul>
<p><a class="el" href="rtxImplementation.html">CMSIS-RTOS RTX</a> Setting: <b>osFeature_MailQ</b> is 1 </p>
</div>
</div>
<a class="anchor" id="gad2deeb66d51ade54e63d8f87ff2ec9d2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osMailQ</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;&amp;os_mailQ_def_##name</td>
</tr>
</table>
</div><div class="memdoc">
<p>Access to the mail queue definition for the function <a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the queue </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osMailQ</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="ga58d712b16c0c6668059f509386d1e55b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osMailQDef</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">queue_sz, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">type&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Define the attributes of a mail queue that can by the function <a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a> using <a class="el" href="group__CMSIS__RTOS__Mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">osMailQ</a>.</p>
<dl class="section note"><dt>Note</dt><dd>The parameter <em>thread</em> registers the receiving thread for a mail and is needed for the general <a class="el" href="technicalData.html#osWait">osWait</a> function to deliver the mail.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the queue </td></tr>
<tr><td class="paramname">queue_sz</td><td>maximum number of messages in queue </td></tr>
<tr><td class="paramname">type</td><td>data type of a single message element </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osMailQDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gadf5ce811bd6a56e617e902a1db6c2194"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * osMailAlloc </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a>&#160;</td>
<td class="paramname"><em>queue_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>mail queue ID obtained with <a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="functionOverview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to memory block that can be filled with mail or NULL in case of error. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMailAlloc</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Allocate a memory block from the mail queue that is filled with the mail information.</p>
<p>The argument <em>queue_id</em> specifies a mail queue identifier that is obtain with <a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>.</p>
<p>The argument <em>millisec</em> specifies how long the system waits for a mail slot to become available. While the system waits the thread calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout can have the following values:</p>
<ul>
<li>when <em>millisec</em> is 0, the function returns instantly.</li>
<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until a mail slot can be allocated.</li>
<li>all other values specify a time in millisecond for a timeout.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>The parameter <em>millisec</em> must be 0 for using this function in an ISR. </dd>
<dd>
<a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl>
<p>A NULL pointer is returned when no memory slot can be obtained or <em>queue</em> specifies an illegal parameter. </p>
</div>
</div>
<a class="anchor" id="ga8fde74f6fe5b9e88f75cc5eb8f2124fd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * osMailCAlloc </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a>&#160;</td>
<td class="paramname"><em>queue_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>mail queue ID obtained with <a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="functionOverview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to memory block that can be filled with mail or NULL in case of error. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMailCAlloc</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Allocate a memory block from the mail queue that is filled with the mail information. The memory block returned is cleared.</p>
<p>The argument <em>queue_id</em> specifies a mail queue identifier that is obtain with <a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>.</p>
<p>The argument <em>millisec</em> specifies how long the system waits for a mail slot to become available. While the system waits the thread that is calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout can have the following values:</p>
<ul>
<li>when <em>millisec</em> is 0, the function returns instantly.</li>
<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until a mail slot can be allocated.</li>
<li>all other values specify a time in millisecond for a timeout.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>The parameter <em>millisec</em> must be 0 for using this function in an ISR. </dd>
<dd>
<a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl>
<p>A NULL pointer is returned when no memory block can be obtained or <em>queue</em> specifies an illegal parameter. </p>
</div>
</div>
<a class="anchor" id="gaa177e7fe5820dd70d8c9e46ded131174"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> osMailCreate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="cmsis__os_8h.html#structosMailQDef__t">osMailQDef_t</a> *&#160;</td>
<td class="paramname"><em>queue_def</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a>&#160;</td>
<td class="paramname"><em>thread_id</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">queue_def</td><td>reference to the mail queue definition obtain with <a class="el" href="group__CMSIS__RTOS__Mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">osMailQ</a> </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID (obtained by <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>) or NULL. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>mail queue ID for reference by other functions or NULL in case of error. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMailCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Initialize and create a mail queue.</p>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> tid_thread1; <span class="comment">// ID for thread 1</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> tid_thread2; <span class="comment">// ID for thread 2</span></div>
<div class="line"> </div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{ <span class="comment">// Mail object structure</span></div>
<div class="line"> <span class="keywordtype">float</span> voltage; <span class="comment">// AD result of measured voltage</span></div>
<div class="line"> <span class="keywordtype">float</span> current; <span class="comment">// AD result of measured current</span></div>
<div class="line"> <span class="keywordtype">int</span> counter; <span class="comment">// A counter value</span></div>
<div class="line">} T_MEAS;</div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__Mail.html#ga58d712b16c0c6668059f509386d1e55b">osMailQDef</a>(mail, 16, T_MEAS); <span class="comment">// Define mail queue</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> mail;</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> send_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument); <span class="comment">// forward reference</span></div>
<div class="line"><span class="keywordtype">void</span> recv_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument);</div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a>(send_thread, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a>, 1, 0); <span class="comment">// thread definitions</span></div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a>(recv_thread, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a>, 1, 2000);</div>
<div class="line"> </div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="comment">// Thread 1: Send thread</span></div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="keywordtype">void</span> send_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) {</div>
<div class="line"> T_MEAS *mptr;</div>
<div class="line"> </div>
<div class="line"> mptr = <a class="code" href="group__CMSIS__RTOS__Mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a>(mail, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>); <span class="comment">// Allocate memory</span></div>
<div class="line"> mptr-&gt;voltage = 223.72; <span class="comment">// Set the mail content</span></div>
<div class="line"> mptr-&gt;current = 17.54;</div>
<div class="line"> mptr-&gt;counter = 120786;</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a>(mail, mptr); <span class="comment">// Send Mail</span></div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a>(100);</div>
<div class="line"> </div>
<div class="line"> mptr = <a class="code" href="group__CMSIS__RTOS__Mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a>(mail, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>); <span class="comment">// Allocate memory</span></div>
<div class="line"> mptr-&gt;voltage = 227.23; <span class="comment">// Prepare 2nd mail</span></div>
<div class="line"> mptr-&gt;current = 12.41;</div>
<div class="line"> mptr-&gt;counter = 170823;</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a>(mail, mptr); <span class="comment">// Send Mail</span></div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a>(); <span class="comment">// Cooperative multitasking</span></div>
<div class="line"> <span class="comment">// We are done here, exit this thread</span></div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="comment">// Thread 2: Receive thread</span></div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="keywordtype">void</span> recv_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) {</div>
<div class="line"> T_MEAS *rptr;</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a> evt;</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">for</span> (;;) {</div>
<div class="line"> evt = <a class="code" href="group__CMSIS__RTOS__Mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a>(mail, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>); <span class="comment">// wait for mail</span></div>
<div class="line"> <span class="keywordflow">if</span> (evt.<a class="code" href="group__CMSIS__RTOS__Definitions.html#ad477a289f1f03ac45407b64268d707d3">status</a> == <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926">osEventMail</a>) {</div>
<div class="line"> rptr = evt.<a class="code" href="group__CMSIS__RTOS__Definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f">value</a>.p;</div>
<div class="line"> printf (<span class="stringliteral">&quot;\nVoltage: %.2f V\n&quot;</span>, rptr-&gt;voltage);</div>
<div class="line"> printf (<span class="stringliteral">&quot;Current: %.2f A\n&quot;</span>, rptr-&gt;current);</div>
<div class="line"> printf (<span class="stringliteral">&quot;Number of cycles: %d\n&quot;</span>, rptr-&gt;counter);</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">osMailFree</a>(mail, rptr); <span class="comment">// free memory allocated for mail</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> StartApplication (<span class="keywordtype">void</span>) {</div>
<div class="line"> mail = <a class="code" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>(<a class="code" href="group__CMSIS__RTOS__Mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">osMailQ</a>(mail), NULL); <span class="comment">// create mail queue</span></div>
<div class="line"> </div>
<div class="line"> tid_thread1 = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a>(<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(send_thread), NULL);</div>
<div class="line"> tid_thread2 = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a>(<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(recv_thread), NULL);</div>
<div class="line"> :</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga27c1060cf21393f96b4fd1ed1c0167cc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osMailFree </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a>&#160;</td>
<td class="paramname"><em>queue_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>mail</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>mail queue ID obtained with <a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">mail</td><td>pointer to the memory block that was obtained with <a class="el" href="group__CMSIS__RTOS__Mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMailFree</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Free the memory block specified by <em>mail</em> and return it to the mail queue.</p>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the <em>mail</em> block is released.</li>
<li><em>osErrorValue:</em> <em>mail</em> block does not belong to the mail queue pool.</li>
<li><em>osErrorParameter:</em> the value to the parameter <em>queue_id</em> is incorrect. </li>
</ul>
</div>
</div>
<a class="anchor" id="gac6ad7e6e7d6c4a80e60da22c57a42ccd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a> osMailGet </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a>&#160;</td>
<td class="paramname"><em>queue_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>mail queue ID obtained with <a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="functionOverview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>event that contains mail information or error code. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMailGet</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Suspend the execution of the current <b>RUNNING</b> thread until a mail arrives. When a mail is already in the queue, the function returns instantly with the mail information.</p>
<p>The argument <em>millisec</em> specifies how long the system waits for a mail to arrive. While the system waits the thread that is calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout can have the following values:</p>
<ul>
<li>when <em>millisec</em> is 0, the function returns instantly.</li>
<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until a mail arrives.</li>
<li>all other values specify a time in millisecond for a timeout.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>The parameter <em>millisec</em> must be 0 for using this function in an ISR. </dd>
<dd>
<a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> no mail is available in the queue and no timeout was specified</li>
<li><em>osEventTimeout:</em> no mail has arrived during the given timeout period.</li>
<li><em>osEventMail:</em> mail received, <em>value.p</em> contains the pointer to mail content.</li>
<li><em>osErrorParameter:</em> a parameter is invalid or outside of a permitted range. </li>
</ul>
</div>
</div>
<a class="anchor" id="ga485ef6f81854ebda8ffbce4832181e02"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osMailPut </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a>&#160;</td>
<td class="paramname"><em>queue_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>mail</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>mail queue ID obtained with <a class="el" href="group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">mail</td><td>memory block previously allocated with <a class="el" href="group__CMSIS__RTOS__Mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a> or <a class="el" href="group__CMSIS__RTOS__Mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">osMailCAlloc</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMailPut</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Put the memory block specified with <em>mail</em> into the mail queue specified by <em>queue</em>.</p>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the message is put into the queue.</li>
<li><em>osErrorValue:</em> <em>mail</em> was previously not allocated as memory slot.</li>
<li><em>osErrorParameter:</em> a parameter is invalid or outside of a permitted range.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function. </dd></dl>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,12 @@
var group__CMSIS__RTOS__Mail =
[
[ "osFeature_MailQ", "group__CMSIS__RTOS__Mail.html#gaceb2e0071ce160d153047f2eac1aca8e", null ],
[ "osMailQ", "group__CMSIS__RTOS__Mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2", null ],
[ "osMailQDef", "group__CMSIS__RTOS__Mail.html#ga58d712b16c0c6668059f509386d1e55b", null ],
[ "osMailAlloc", "group__CMSIS__RTOS__Mail.html#gadf5ce811bd6a56e617e902a1db6c2194", null ],
[ "osMailCAlloc", "group__CMSIS__RTOS__Mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd", null ],
[ "osMailCreate", "group__CMSIS__RTOS__Mail.html#gaa177e7fe5820dd70d8c9e46ded131174", null ],
[ "osMailFree", "group__CMSIS__RTOS__Mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc", null ],
[ "osMailGet", "group__CMSIS__RTOS__Mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd", null ],
[ "osMailPut", "group__CMSIS__RTOS__Mail.html#ga485ef6f81854ebda8ffbce4832181e02", null ]
];
@@ -0,0 +1,489 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Message Queue</title>
<title>CMSIS-RTOS: Message Queue</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('group__CMSIS__RTOS__Message.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Message Queue<div class="ingroups"><a class="el" href="group__CMSIS__RTOS__InterThread.html">Inter-Thread Communication and Resource Sharing</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Exchange messages between threads in a FIFO-like operation.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga479a6561f859e3d4818e25708593d203"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html#ga479a6561f859e3d4818e25708593d203">osFeature_MessageQ</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:ga479a6561f859e3d4818e25708593d203"><td class="mdescLeft">&#160;</td><td class="mdescRight">Message Queues: 1=available, 0=not available. <a href="#ga479a6561f859e3d4818e25708593d203">More...</a><br/></td></tr>
<tr class="separator:ga479a6561f859e3d4818e25708593d203"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac9a6a6276c12609793e7701afcc82326"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html#gac9a6a6276c12609793e7701afcc82326">osMessageQDef</a>(name, queue_sz, type)</td></tr>
<tr class="memdesc:gac9a6a6276c12609793e7701afcc82326"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a Message Queue Definition. <a href="#gac9a6a6276c12609793e7701afcc82326">More...</a><br/></td></tr>
<tr class="separator:gac9a6a6276c12609793e7701afcc82326"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2d446a0b4bb90bf05d6f92eedeaabc97"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">osMessageQ</a>(name)&#160;&#160;&#160;&amp;os_messageQ_def_##name</td></tr>
<tr class="memdesc:ga2d446a0b4bb90bf05d6f92eedeaabc97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Message Queue Definition. <a href="#ga2d446a0b4bb90bf05d6f92eedeaabc97">More...</a><br/></td></tr>
<tr class="separator:ga2d446a0b4bb90bf05d6f92eedeaabc97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaf3b9345cf426304d46565152bc26fb78"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosMessageQDef__t">osMessageQDef_t</a> *queue_def, <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr>
<tr class="memdesc:gaf3b9345cf426304d46565152bc26fb78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and Initialize a Message Queue. <a href="#gaf3b9345cf426304d46565152bc26fb78">More...</a><br/></td></tr>
<tr class="separator:gaf3b9345cf426304d46565152bc26fb78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac0dcf462fc92de8ffaba6cc004514a6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html#gac0dcf462fc92de8ffaba6cc004514a6d">osMessagePut</a> (<a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> queue_id, uint32_t info, uint32_t millisec)</td></tr>
<tr class="memdesc:gac0dcf462fc92de8ffaba6cc004514a6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Put a Message to a Queue. <a href="#gac0dcf462fc92de8ffaba6cc004514a6d">More...</a><br/></td></tr>
<tr class="separator:gac0dcf462fc92de8ffaba6cc004514a6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6c6892b8f2296cca6becd57ca2d7e1ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">osMessageGet</a> (<a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> queue_id, uint32_t millisec)</td></tr>
<tr class="memdesc:ga6c6892b8f2296cca6becd57ca2d7e1ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a Message or Wait for a Message from a Queue. <a href="#ga6c6892b8f2296cca6becd57ca2d7e1ae">More...</a><br/></td></tr>
<tr class="separator:ga6c6892b8f2296cca6becd57ca2d7e1ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p><b>Message</b> <b>passing</b> is another basic communication model between threads. In the message passing model, one thread sends data explicitly, while another thread receives it. The operation is more like some kind of I/O rather than a direct access to information to be shared. In CMSIS-RTOS, this mechanism is called s <b>message</b> <b>queue</b>. The data is passed from one thread to another in a FIFO-like operation. Using message queue functions, you can control, send, receive, or wait for messages. The data to be passed can be of integer or pointer type:</p>
<div class="image">
<img src="MessageQueue.png" alt="MessageQueue.png"/>
<div class="caption">
CMSIS-RTOS Message Queue</div></div>
<p> Compared to a <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html">Memory Pool</a>, message queues are less efficient in general, but solve a broader range of problems. Sometimes, threads do not have a common address space or the use of shared memory raises problems, such as mutual exclusion.</p>
<h2>Working with Message Queues </h2>
<p>Follow these steps to create and use a message queue:</p>
<ol type="1">
<li>Setup the message queue: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__Message.html#gac9a6a6276c12609793e7701afcc82326">osMessageQDef</a>(message_q, 5, uint32_t); <span class="comment">// Declare a message queue</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> (message_q_id); <span class="comment">// Declare an ID for the message queue</span></div>
</div><!-- fragment --></li>
<li>Then, create the message queue in a thread: <div class="fragment"><div class="line">message_q_id = <a class="code" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a>(<a class="code" href="group__CMSIS__RTOS__Message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">osMessageQ</a>(message_q), NULL);</div>
</div><!-- fragment --></li>
<li>Fill the message queue with data: <div class="fragment"><div class="line">uint32_t data = 512;</div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__Mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a>(message_q_id, data, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>);</div>
</div><!-- fragment --></li>
<li>From the receiving thread access the data using: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a> <span class="keyword">event</span> = <a class="code" href="group__CMSIS__RTOS__Message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">osMessageGet</a>(message_q_id, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>);</div>
</div><!-- fragment --> </li>
</ol>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga479a6561f859e3d4818e25708593d203"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osFeature_MessageQ&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>A CMSIS-RTOS implementation may support message queues.</p>
<ul>
<li>When <a class="el" href="group__CMSIS__RTOS__Mail.html#gaceb2e0071ce160d153047f2eac1aca8e">osFeature_MailQ</a> is 1 message queues are supported.</li>
<li>When <a class="el" href="group__CMSIS__RTOS__Mail.html#gaceb2e0071ce160d153047f2eac1aca8e">osFeature_MailQ</a> is 0 no message queues are supported.</li>
</ul>
<p><a class="el" href="rtxImplementation.html">CMSIS-RTOS RTX</a> Setting: <b>osFeature_MessageQ</b> is 1 </p>
</div>
</div>
<a class="anchor" id="ga2d446a0b4bb90bf05d6f92eedeaabc97"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osMessageQ</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;&amp;os_messageQ_def_##name</td>
</tr>
</table>
</div><div class="memdoc">
<p>Access to the message queue definition for the function <a class="el" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the queue </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osMessageQ</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="gac9a6a6276c12609793e7701afcc82326"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osMessageQDef</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">queue_sz, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">type&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Define the attributes of a message queue created by the function <a class="el" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a> using <a class="el" href="group__CMSIS__RTOS__Message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">osMessageQ</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the queue. </td></tr>
<tr><td class="paramname">queue_sz</td><td>maximum number of messages in the queue. </td></tr>
<tr><td class="paramname">type</td><td>data type of a single message element (for debugger). </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osMessageQDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gaf3b9345cf426304d46565152bc26fb78"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> osMessageCreate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="cmsis__os_8h.html#structosMessageQDef__t">osMessageQDef_t</a> *&#160;</td>
<td class="paramname"><em>queue_def</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a>&#160;</td>
<td class="paramname"><em>thread_id</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">queue_def</td><td>queue definition referenced with <a class="el" href="group__CMSIS__RTOS__Message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">osMessageQ</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID (obtained by <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>) or NULL. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>message queue ID for reference by other functions or NULL in case of error. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMessageCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Create and initialize a message queue. The parameter <em>thread_id</em> registers the receiving thread for a message and is needed for the general <a class="el" href="technicalData.html#osWait">osWait</a> function to deliver the message.</p>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> tid_thread1; <span class="comment">// ID for thread 1</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> tid_thread2; <span class="comment">// for thread 2</span></div>
<div class="line"> </div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{ <span class="comment">// Message object structure</span></div>
<div class="line"> <span class="keywordtype">float</span> voltage; <span class="comment">// AD result of measured voltage</span></div>
<div class="line"> <span class="keywordtype">float</span> current; <span class="comment">// AD result of measured current</span></div>
<div class="line"> <span class="keywordtype">int</span> counter; <span class="comment">// A counter value</span></div>
<div class="line">} T_MEAS;</div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">osPoolDef</a>(mpool, 16, T_MEAS); <span class="comment">// Define memory pool</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> mpool;</div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__Message.html#gac9a6a6276c12609793e7701afcc82326">osMessageQDef</a>(MsgBox, 16, &amp;T_MEAS); <span class="comment">// Define message queue</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> MsgBox;</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> send_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument); <span class="comment">// forward reference</span></div>
<div class="line"><span class="keywordtype">void</span> recv_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument); <span class="comment">// forward reference</span></div>
<div class="line"> <span class="comment">// Thread definitions</span></div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a>(send_thread, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a>, 1, 0);</div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a>(recv_thread, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a>, 1, 2000);</div>
<div class="line"> </div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="comment">// Thread 1: Send thread</span></div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="keywordtype">void</span> send_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) {</div>
<div class="line"> T_MEAS *mptr;</div>
<div class="line"> </div>
<div class="line"> mptr = <a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a>(mpool); <span class="comment">// Allocate memory for the message</span></div>
<div class="line"> mptr-&gt;voltage = 223.72; <span class="comment">// Set the message content</span></div>
<div class="line"> mptr-&gt;current = 17.54;</div>
<div class="line"> mptr-&gt;counter = 120786;</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Message.html#gac0dcf462fc92de8ffaba6cc004514a6d">osMessagePut</a>(MsgBox, (uint32_t)mptr, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>); <span class="comment">// Send Message</span></div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a>(100);</div>
<div class="line"> </div>
<div class="line"> mptr = <a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a>(mpool); <span class="comment">// Allocate memory for the message</span></div>
<div class="line"> mptr-&gt;voltage = 227.23; <span class="comment">// Prepare a 2nd message</span></div>
<div class="line"> mptr-&gt;current = 12.41;</div>
<div class="line"> mptr-&gt;counter = 170823;</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Message.html#gac0dcf462fc92de8ffaba6cc004514a6d">osMessagePut</a>(MsgBox, (uint32_t)mptr, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>); <span class="comment">// Send Message</span></div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a>(); <span class="comment">// Cooperative multitasking</span></div>
<div class="line"> <span class="comment">// We are done here, exit this thread</span></div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="comment">// Thread 2: Receive thread</span></div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="keywordtype">void</span> recv_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) {</div>
<div class="line"> T_MEAS *rptr;</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a> evt;</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">for</span> (;;) {</div>
<div class="line"> evt = <a class="code" href="group__CMSIS__RTOS__Message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">osMessageGet</a>(MsgBox, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>); <span class="comment">// wait for message</span></div>
<div class="line"> <span class="keywordflow">if</span> (evt.<a class="code" href="group__CMSIS__RTOS__Definitions.html#ad477a289f1f03ac45407b64268d707d3">status</a> == <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342">osEventMessage</a>) {</div>
<div class="line"> rptr = evt.<a class="code" href="group__CMSIS__RTOS__Definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f">value</a>.p;</div>
<div class="line"> printf (<span class="stringliteral">&quot;\nVoltage: %.2f V\n&quot;</span>, rptr-&gt;voltage);</div>
<div class="line"> printf (<span class="stringliteral">&quot;Current: %.2f A\n&quot;</span>, rptr-&gt;current);</div>
<div class="line"> printf (<span class="stringliteral">&quot;Number of cycles: %d\n&quot;</span>, rptr-&gt;counter);</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">osPoolFree</a>(mpool, rptr); <span class="comment">// free memory allocated for message</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> StartApplication (<span class="keywordtype">void</span>) {</div>
<div class="line"> mpool = <a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a>(<a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a>(mpool)); <span class="comment">// create memory pool</span></div>
<div class="line"> MsgBox = <a class="code" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a>(<a class="code" href="group__CMSIS__RTOS__Message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">osMessageQ</a>(MsgBox), NULL); <span class="comment">// create msg queue</span></div>
<div class="line"> </div>
<div class="line"> tid_thread1 = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a>(<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(send_thread), NULL);</div>
<div class="line"> tid_thread2 = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a>(<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(recv_thread), NULL);</div>
<div class="line"> :</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga6c6892b8f2296cca6becd57ca2d7e1ae"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a> osMessageGet </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a>&#160;</td>
<td class="paramname"><em>queue_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>message queue ID obtained with <a class="el" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="functionOverview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>event information that includes status code. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMessageGet</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Suspend the execution of the current <b>RUNNING</b> thread until a message arrives. When a message is already in the queue, the function returns instantly with the message information.</p>
<p>The argument <em>millisec</em> specifies how long the system waits for a message to become available. While the system waits the thread that is calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout value can have the following values:</p>
<ul>
<li>when <em>millisec</em> is 0, the function returns instantly.</li>
<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until a message arrives.</li>
<li>all other values specify a time in millisecond for a timeout.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>The parameter <em>millisec</em> must be 0 for using this function in an ISR. </dd>
<dd>
<a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> no message is available in the queue and no timeout was specified.</li>
<li><em>osEventTimeout:</em> no message has arrived during the given timeout period.</li>
<li><em>osEventMessage:</em> message received, <em>value.p</em> contains the pointer to message.</li>
<li><em>osErrorParameter:</em> a parameter is invalid or outside of a permitted range. </li>
</ul>
</div>
</div>
<a class="anchor" id="gac0dcf462fc92de8ffaba6cc004514a6d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osMessagePut </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a>&#160;</td>
<td class="paramname"><em>queue_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>message queue ID obtained with <a class="el" href="group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">info</td><td>message information. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="functionOverview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMessagePut</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Put the message <em>info</em> in a message queue specified by <em>queue_id</em>.</p>
<p>When the message queue is full, the system retries for a specified time with <em>millisec</em>. While the system retries the thread that is calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout can have the following values:</p>
<ul>
<li>when <em>millisec</em> is 0, the function returns instantly.</li>
<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until a message queue slot becomes available.</li>
<li>all other values specify a time in millisecond for a timeout.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>The parameter <em>millisec</em> must be 0 for using this function in an ISR. </dd>
<dd>
<a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the message is put into the queue.</li>
<li><em>osErrorResource:</em> no memory in the queue was available.</li>
<li><em>osErrorTimeoutResource:</em> no memory in the queue was available during the given time limit.</li>
<li><em>osErrorParameter:</em> a parameter is invalid or outside of a permitted range. </li>
</ul>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,9 @@
var group__CMSIS__RTOS__Message =
[
[ "osFeature_MessageQ", "group__CMSIS__RTOS__Message.html#ga479a6561f859e3d4818e25708593d203", null ],
[ "osMessageQ", "group__CMSIS__RTOS__Message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97", null ],
[ "osMessageQDef", "group__CMSIS__RTOS__Message.html#gac9a6a6276c12609793e7701afcc82326", null ],
[ "osMessageCreate", "group__CMSIS__RTOS__Message.html#gaf3b9345cf426304d46565152bc26fb78", null ],
[ "osMessageGet", "group__CMSIS__RTOS__Message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae", null ],
[ "osMessagePut", "group__CMSIS__RTOS__Message.html#gac0dcf462fc92de8ffaba6cc004514a6d", null ]
];
@@ -0,0 +1,444 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Mutexes</title>
<title>CMSIS-RTOS: Mutexes</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('group__CMSIS__RTOS__MutexMgmt.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Mutexes<div class="ingroups"><a class="el" href="group__CMSIS__RTOS__InterThread.html">Inter-Thread Communication and Resource Sharing</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Synchronize resource access using Mutual Exclusion (Mutex).
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga9b522438489d7c402c95332b58bc94f3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga9b522438489d7c402c95332b58bc94f3">osMutexDef</a>(name)&#160;&#160;&#160;const <a class="el" href="cmsis__os_8h.html#structosMutexDef__t">osMutexDef_t</a> os_mutex_def_##name = { 0 }</td></tr>
<tr class="memdesc:ga9b522438489d7c402c95332b58bc94f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define a Mutex. <a href="#ga9b522438489d7c402c95332b58bc94f3">More...</a><br/></td></tr>
<tr class="separator:ga9b522438489d7c402c95332b58bc94f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1122a86faa64b4a0880c76cf68d0c934"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">osMutex</a>(name)&#160;&#160;&#160;&amp;os_mutex_def_##name</td></tr>
<tr class="memdesc:ga1122a86faa64b4a0880c76cf68d0c934"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Mutex definition. <a href="#ga1122a86faa64b4a0880c76cf68d0c934">More...</a><br/></td></tr>
<tr class="separator:ga1122a86faa64b4a0880c76cf68d0c934"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga5c9de56e717016e39e788064e9a291cc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosMutexDef__t">osMutexDef_t</a> *mutex_def)</td></tr>
<tr class="memdesc:ga5c9de56e717016e39e788064e9a291cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and Initialize a Mutex object. <a href="#ga5c9de56e717016e39e788064e9a291cc">More...</a><br/></td></tr>
<tr class="separator:ga5c9de56e717016e39e788064e9a291cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5e1752b73f573ee015dbd9ef1edaba13"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a> (<a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id, uint32_t millisec)</td></tr>
<tr class="memdesc:ga5e1752b73f573ee015dbd9ef1edaba13"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait until a Mutex becomes available. <a href="#ga5e1752b73f573ee015dbd9ef1edaba13">More...</a><br/></td></tr>
<tr class="separator:ga5e1752b73f573ee015dbd9ef1edaba13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga006e4744d741e8e132c3d5bbc295afe1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">osMutexRelease</a> (<a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id)</td></tr>
<tr class="memdesc:ga006e4744d741e8e132c3d5bbc295afe1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Release a Mutex that was obtained by <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a>. <a href="#ga006e4744d741e8e132c3d5bbc295afe1">More...</a><br/></td></tr>
<tr class="separator:ga006e4744d741e8e132c3d5bbc295afe1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac27e24135185d51d18f3dabc20910219"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#gac27e24135185d51d18f3dabc20910219">osMutexDelete</a> (<a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id)</td></tr>
<tr class="memdesc:gac27e24135185d51d18f3dabc20910219"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a Mutex that was created by <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>. <a href="#gac27e24135185d51d18f3dabc20910219">More...</a><br/></td></tr>
<tr class="separator:gac27e24135185d51d18f3dabc20910219"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p><b>Mutual exclusion</b> (widely known as <b>Mutex</b>) is used in various operating systems for resource management. Many resources in a microcontroller device can be used repeatedly, but only by one thread at a time (for example communication channels, memory, and files). Mutexes are used to protect access to a shared resource. A mutex is created and then passed between the threads (they can acquire and release the mutex).</p>
<div class="image">
<img src="Mutex.png" alt="Mutex.png"/>
<div class="caption">
CMSIS-RTOS Mutex</div></div>
<p> A mutex is a special version of a <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html">semaphore</a>. Like the semaphore, it is a container for tokens. But instead of being able to have multiple tokens, a mutex can only carry one (representing the resource). Thus, a mutex token is binary and bounded. The advantage of a mutex is that it introduces thread ownership. When a thread acquires a mutex and becomes its owner, subsequent mutex acquires from that thread will succeed immediately without any latency. Thus, mutex acquires/releases can be nested.</p>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>Mutex management functions cannot be called from interrupt service routines (ISR), unlike a binary semaphore that can be released from an ISR.</li>
<li>CMSIS-RTOS uses <a href="https://en.wikipedia.org/wiki/Reentrant_mutex" target="_blank">reentrant/recursive mutexes</a> only.</li>
</ul>
</dd></dl>
<h2>Working with Mutexes </h2>
<p>To use mutexes, you need to follow these steps for creating and using them:</p>
<ol type="1">
<li>Declare the mutex container and initialize the mutex: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga9b522438489d7c402c95332b58bc94f3">osMutexDef</a> (uart_mutex); <span class="comment">// Declare mutex</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> (uart_mutex_id); <span class="comment">// Mutex ID</span></div>
</div><!-- fragment --></li>
<li>Create the mutex in a thread: <div class="fragment"><div class="line">uart_mutex_id = <a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>(<a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">osMutex</a>(uart_mutex));</div>
</div><!-- fragment --></li>
<li>Acquire the mutex when peripheral access is required: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a>(uart_mutex_id, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>);</div>
</div><!-- fragment --></li>
<li>When finished with the peripheral access, release the mutex: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">osMutexRelease</a>(uart_mutex_id);</div>
</div><!-- fragment --> </li>
</ol>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga1122a86faa64b4a0880c76cf68d0c934"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osMutex</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;&amp;os_mutex_def_##name</td>
</tr>
</table>
</div><div class="memdoc">
<p>Access to mutex object for the functions <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the mutex object. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osMutex</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="ga9b522438489d7c402c95332b58bc94f3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osMutexDef</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;const <a class="el" href="cmsis__os_8h.html#structosMutexDef__t">osMutexDef_t</a> os_mutex_def_##name = { 0 }</td>
</tr>
</table>
</div><div class="memdoc">
<p>Define a mutex object that is referenced by <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">osMutex</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the mutex object. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osMutexDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga5c9de56e717016e39e788064e9a291cc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> osMutexCreate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="cmsis__os_8h.html#structosMutexDef__t">osMutexDef_t</a> *&#160;</td>
<td class="paramname"><em>mutex_def</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">mutex_def</td><td>mutex definition referenced with <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">osMutex</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>mutex ID for reference by other functions or NULL in case of error. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMutexCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Create and initialize a Mutex object.</p>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga9b522438489d7c402c95332b58bc94f3">osMutexDef</a> (MutexIsr); <span class="comment">// Mutex name definition</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> CreateMutex (<span class="keywordtype">void</span>) {</div>
<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id; </div>
<div class="line"> </div>
<div class="line"> mutex_id = <a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a> (<a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">osMutex</a> (MutexIsr));</div>
<div class="line"> <span class="keywordflow">if</span> (mutex_id != NULL) {</div>
<div class="line"> <span class="comment">// Mutex object created</span></div>
<div class="line"> } </div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="gac27e24135185d51d18f3dabc20910219"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osMutexDelete </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a>&#160;</td>
<td class="paramname"><em>mutex_id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">mutex_id</td><td>mutex ID obtained by <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMutexDelete</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Delete a Mutex object. The function releases internal memory obtained for Mutex handling. After this call the <em>mutex_id</em> is no longer valid and cannot be used. The Mutex may be created again using the function <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>.</p>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the mutex object has been deleted.</li>
<li><em>osErrorISR:</em> <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#gac27e24135185d51d18f3dabc20910219">osMutexDelete</a> cannot be called from interrupt service routines.</li>
<li><em>osErrorResource:</em> all tokens have already been released.</li>
<li><em>osErrorParameter:</em> the parameter <em>mutex_id</em> is incorrect.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga9b522438489d7c402c95332b58bc94f3">osMutexDef</a> (MutexIsr); <span class="comment">// Mutex name definition </span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id; <span class="comment">// Mutex id populated by the function CreateMutex()</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> CreateMutex (<span class="keywordtype">void</span>); <span class="comment">// function prototype that creates the Mutex</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> DeleteMutex (<a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id) {</div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status;</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> (mutex_id != NULL) {</div>
<div class="line"> status = <a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#gac27e24135185d51d18f3dabc20910219">osMutexDelete</a>(mutex_id);</div>
<div class="line"> <span class="keywordflow">if</span> (status != <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a>) {</div>
<div class="line"> <span class="comment">// handle failure code</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga006e4744d741e8e132c3d5bbc295afe1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osMutexRelease </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a>&#160;</td>
<td class="paramname"><em>mutex_id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">mutex_id</td><td>mutex ID obtained by <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMutexRelease</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Release a Mutex that was obtained with <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a>. Other threads that currently wait for the same mutex will be now put into the state <b>READY</b>.</p>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the mutex has been correctly released.</li>
<li><em>osErrorResource:</em> the mutex was not obtained before.</li>
<li><em>osErrorParameter:</em> the parameter <em>mutex_id</em> is incorrect.</li>
<li><em>osErrorISR:</em> <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">osMutexRelease</a> cannot be called from interrupt service routines.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga9b522438489d7c402c95332b58bc94f3">osMutexDef</a> (MutexIsr); <span class="comment">// Mutex name definition </span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id; <span class="comment">// Mutex id populated by the function CreateMutex()</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> CreateMutex (<span class="keywordtype">void</span>); <span class="comment">// function prototype that creates the Mutex</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> ReleaseMutex (<a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id) {</div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status;</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> (mutex_id != NULL) {</div>
<div class="line"> status = <a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">osMutexRelease</a>(mutex_id);</div>
<div class="line"> <span class="keywordflow">if</span> (status != <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a>) {</div>
<div class="line"> <span class="comment">// handle failure code</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga5e1752b73f573ee015dbd9ef1edaba13"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osMutexWait </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a>&#160;</td>
<td class="paramname"><em>mutex_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">mutex_id</td><td>mutex ID obtained by <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="functionOverview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMutexWait</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Wait until a Mutex becomes available. If no other thread has obtained the Mutex, the function instantly returns and blocks the mutex object.</p>
<p>The argument <em>millisec</em> specifies how long the system waits for a mutex. While the system waits the thread that is calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout can have the following values:</p>
<ul>
<li>when <em>millisec</em> is 0, the function returns instantly.</li>
<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until the mutex becomes available.</li>
<li>all other values specify a time in millisecond for a timeout.</li>
</ul>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the mutex has been obtained.</li>
<li><em>osErrorTimeoutResource:</em> the mutex could not be obtained in the given time.</li>
<li><em>osErrorResource:</em> the mutex could not be obtained when no timeout was specified.</li>
<li><em>osErrorParameter:</em> the parameter <em>mutex_id</em> is incorrect.</li>
<li><em>osErrorISR:</em> <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a> cannot be called from interrupt service routines.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga9b522438489d7c402c95332b58bc94f3">osMutexDef</a> (MutexIsr);</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> WaitMutex (<span class="keywordtype">void</span>) {</div>
<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id; </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status;</div>
<div class="line"> </div>
<div class="line"> mutex_id = <a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a> (<a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">osMutex</a> (MutexIsr));</div>
<div class="line"> <span class="keywordflow">if</span> (mutex_id != NULL) {</div>
<div class="line"> status = <a class="code" href="group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a> (mutex_id, 0);</div>
<div class="line"> <span class="keywordflow">if</span> (status != <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a>) {</div>
<div class="line"> <span class="comment">// handle failure code</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,9 @@
var group__CMSIS__RTOS__MutexMgmt =
[
[ "osMutex", "group__CMSIS__RTOS__MutexMgmt.html#ga1122a86faa64b4a0880c76cf68d0c934", null ],
[ "osMutexDef", "group__CMSIS__RTOS__MutexMgmt.html#ga9b522438489d7c402c95332b58bc94f3", null ],
[ "osMutexCreate", "group__CMSIS__RTOS__MutexMgmt.html#ga5c9de56e717016e39e788064e9a291cc", null ],
[ "osMutexDelete", "group__CMSIS__RTOS__MutexMgmt.html#gac27e24135185d51d18f3dabc20910219", null ],
[ "osMutexRelease", "group__CMSIS__RTOS__MutexMgmt.html#ga006e4744d741e8e132c3d5bbc295afe1", null ],
[ "osMutexWait", "group__CMSIS__RTOS__MutexMgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13", null ]
];
@@ -0,0 +1,495 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Memory Pool</title>
<title>CMSIS-RTOS: Memory Pool</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('group__CMSIS__RTOS__PoolMgmt.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Memory Pool<div class="ingroups"><a class="el" href="group__CMSIS__RTOS__InterThread.html">Inter-Thread Communication and Resource Sharing</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Manage thread-safe fixed-size blocks of dynamic memory.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gadd84b683001de327894851b428587caa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#gadd84b683001de327894851b428587caa">osFeature_Pool</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gadd84b683001de327894851b428587caa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Memory Pools: 1=available, 0=not available. <a href="#gadd84b683001de327894851b428587caa">More...</a><br/></td></tr>
<tr class="separator:gadd84b683001de327894851b428587caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga87b471d4fe2d5dbd0040708edd52771b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">osPoolDef</a>(name, no, type)</td></tr>
<tr class="memdesc:ga87b471d4fe2d5dbd0040708edd52771b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define a Memory Pool. <a href="#ga87b471d4fe2d5dbd0040708edd52771b">More...</a><br/></td></tr>
<tr class="separator:ga87b471d4fe2d5dbd0040708edd52771b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5f0b204a82327533d420210125c90697"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a>(name)&#160;&#160;&#160;&amp;os_pool_def_##name</td></tr>
<tr class="memdesc:ga5f0b204a82327533d420210125c90697"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Memory Pool definition. <a href="#ga5f0b204a82327533d420210125c90697">More...</a><br/></td></tr>
<tr class="separator:ga5f0b204a82327533d420210125c90697"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga34af5c4f4ab38f4138ea7f1f9ece3a1a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosPoolDef__t">osPoolDef_t</a> *pool_def)</td></tr>
<tr class="memdesc:ga34af5c4f4ab38f4138ea7f1f9ece3a1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and Initialize a memory pool. <a href="#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">More...</a><br/></td></tr>
<tr class="separator:ga34af5c4f4ab38f4138ea7f1f9ece3a1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa0b2994f1a866c19e0d11e6e0d44f543"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a> (<a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> pool_id)</td></tr>
<tr class="memdesc:gaa0b2994f1a866c19e0d11e6e0d44f543"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a memory block from a memory pool. <a href="#gaa0b2994f1a866c19e0d11e6e0d44f543">More...</a><br/></td></tr>
<tr class="separator:gaa0b2994f1a866c19e0d11e6e0d44f543"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9f129fcad4730fbd1048ad4fa262f36a"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">osPoolCAlloc</a> (<a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> pool_id)</td></tr>
<tr class="memdesc:ga9f129fcad4730fbd1048ad4fa262f36a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a memory block from a memory pool and set memory block to zero. <a href="#ga9f129fcad4730fbd1048ad4fa262f36a">More...</a><br/></td></tr>
<tr class="separator:ga9f129fcad4730fbd1048ad4fa262f36a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4a861e9c469c9d0daf5721bf174f8e54"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">osPoolFree</a> (<a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> pool_id, void *block)</td></tr>
<tr class="memdesc:ga4a861e9c469c9d0daf5721bf174f8e54"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return an allocated memory block back to a specific memory pool. <a href="#ga4a861e9c469c9d0daf5721bf174f8e54">More...</a><br/></td></tr>
<tr class="separator:ga4a861e9c469c9d0daf5721bf174f8e54"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p><b>Memory</b> <b>pools</b> are fixed-size blocks of memory that are thread-safe. They operate much faster than the dynamically allocated heap and do not suffer from fragmentation. Being thread-safe, they can be accessed from threads and ISRs alike.</p>
<p><b>Shared</b> <b>memory</b> is one of the basic models to exchange information between threads. Using memory pools for exchanging data, you can share more complex objects between threads if compared to a <a class="el" href="group__CMSIS__RTOS__Message.html">Message Queue</a>. Memory pool management functions are used to define and manage such fixed-sized memory pools.</p>
<h2>Working with Memory Pools </h2>
<p>Follow these steps to create and use a memory pool:</p>
<ol type="1">
<li>Declare a data structure that combines a number of elements: <div class="fragment"><div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"> uint32_t length;</div>
<div class="line"> uint32_t width;</div>
<div class="line"> uint32_t height;</div>
<div class="line"> uint32_t weight;</div>
<div class="line">} properties_t;</div>
</div><!-- fragment --></li>
<li>Declare a memory pool of these objects as a block of memory: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">osPoolDef</a> (object_pool, 10, properties_t); <span class="comment">// Declare memory pool</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> (object_pool_id); <span class="comment">// Memory pool ID</span></div>
</div><!-- fragment --></li>
<li>Then, create the memory pool in a thread: <div class="fragment"><div class="line">object_pool_id = <a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a>(<a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a>(object_pool));</div>
</div><!-- fragment --></li>
<li>Allocate the pool within a thread and fill it with data: <div class="fragment"><div class="line">properties_t *object_data;</div>
<div class="line"> object_data = (properties_t *) <a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a>(object_pool_id);</div>
<div class="line"> </div>
<div class="line">object_data-&gt;length = 100;</div>
<div class="line">object_data-&gt;width = 10;</div>
<div class="line">object_data-&gt;height = 23;</div>
<div class="line">object_data-&gt;weight = 1000;</div>
</div><!-- fragment --> </li>
</ol>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gadd84b683001de327894851b428587caa"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osFeature_Pool&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>A CMSIS-RTOS implementation may support fixed-size memory pools.</p>
<ul>
<li>When <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#gadd84b683001de327894851b428587caa">osFeature_Pool</a> is 1 memory pools are supported.</li>
<li>When <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#gadd84b683001de327894851b428587caa">osFeature_Pool</a> is 0 no memory pools are supported.</li>
</ul>
<p><a class="el" href="rtxImplementation.html">CMSIS-RTOS RTX</a> Setting: <b>osFeature_Pool</b> is 1 </p>
</div>
</div>
<a class="anchor" id="ga5f0b204a82327533d420210125c90697"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osPool</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;&amp;os_pool_def_##name</td>
</tr>
</table>
</div><div class="memdoc">
<p>Access a memory pool for the functions <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the memory pool </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osPool</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="ga87b471d4fe2d5dbd0040708edd52771b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osPoolDef</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">no, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">type&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Define a memory pool that is referenced by <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the memory pool. </td></tr>
<tr><td class="paramname">no</td><td>maximum number of blocks (objects) in the memory pool. </td></tr>
<tr><td class="paramname">type</td><td>data type of a single block (object). </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osPoolDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gaa0b2994f1a866c19e0d11e6e0d44f543"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * osPoolAlloc </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a>&#160;</td>
<td class="paramname"><em>pool_id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pool_id</td><td>memory pool ID obtain referenced with <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>address of the allocated memory block or NULL in case of no memory available. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osPoolAlloc</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Allocate a memory block from the memory pool.</p>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"> uint8_t Buf[32];</div>
<div class="line"> uint8_t Idx;</div>
<div class="line">} MEM_BLOCK;</div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">osPoolDef</a> (MemPool, 8, MEM_BLOCK);</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> AlocMemoryPoolBlock (<span class="keywordtype">void</span>) {</div>
<div class="line"> <a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> MemPool_Id;</div>
<div class="line"> MEM_BLOCK *addr;</div>
<div class="line"> </div>
<div class="line"> MemPool_Id = <a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a> (<a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a> (MemPool));</div>
<div class="line"> <span class="keywordflow">if</span> (MemPool_Id != NULL) {</div>
<div class="line"> :</div>
<div class="line"> <span class="comment">// allocate a memory block</span></div>
<div class="line"> addr = (MEM_BLOCK *)<a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a> (MemPool_Id);</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> (addr != NULL) {</div>
<div class="line"> <span class="comment">// memory block was allocated</span></div>
<div class="line"> :</div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga9f129fcad4730fbd1048ad4fa262f36a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * osPoolCAlloc </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a>&#160;</td>
<td class="paramname"><em>pool_id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pool_id</td><td>memory pool ID obtain referenced with <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>address of the allocated memory block or NULL in case of no memory available. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osPoolCAlloc</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Allocate a memory block from the memory pool. The block is initialized to zero.</p>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"> uint8_t Buf[32];</div>
<div class="line"> uint8_t Idx;</div>
<div class="line">} MEM_BLOCK;</div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">osPoolDef</a> (MemPool, 8, MEM_BLOCK);</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> CAlocMemoryPoolBlock (<span class="keywordtype">void</span>) {</div>
<div class="line"> <a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> MemPool_Id;</div>
<div class="line"> MEM_BLOCK *addr;</div>
<div class="line"> </div>
<div class="line"> MemPool_Id = <a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a> (<a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a> (MemPool));</div>
<div class="line"> <span class="keywordflow">if</span> (MemPool_Id != NULL) {</div>
<div class="line"> :</div>
<div class="line"> <span class="comment">// allocate a memory block</span></div>
<div class="line"> addr = (MEM_BLOCK *)<a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">osPoolCAlloc</a> (MemPool_Id);</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> (addr != NULL) {</div>
<div class="line"> <span class="comment">// memory block was allocated</span></div>
<div class="line"> :</div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga34af5c4f4ab38f4138ea7f1f9ece3a1a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> osPoolCreate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="cmsis__os_8h.html#structosPoolDef__t">osPoolDef_t</a> *&#160;</td>
<td class="paramname"><em>pool_def</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pool_def</td><td>memory pool definition referenced with <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>memory pool ID for reference by other functions or NULL in case of error. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osPoolCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Create and initialize a memory pool.</p>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"> uint8_t Buf[32];</div>
<div class="line"> uint8_t Idx;</div>
<div class="line">} MEM_BLOCK;</div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">osPoolDef</a> (MemPool, 8, MEM_BLOCK);</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> CreateMemoryPool (<span class="keywordtype">void</span>) {</div>
<div class="line"><a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> MemPool_Id;</div>
<div class="line"> </div>
<div class="line"> MemPool_Id = <a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a> (<a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a> (MemPool));</div>
<div class="line"> <span class="keywordflow">if</span> (MemPool_Id != NULL) {</div>
<div class="line"> <span class="comment">// memory pool created</span></div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga4a861e9c469c9d0daf5721bf174f8e54"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osPoolFree </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a>&#160;</td>
<td class="paramname"><em>pool_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>block</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pool_id</td><td>memory pool ID obtain referenced with <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">block</td><td>address of the allocated memory block that is returned to the memory pool. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osPoolFree</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Return a memory block to a memory pool.</p>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the memory block is released.</li>
<li><em>osErrorValue:</em> <em>block</em> does not belong to the memory pool.</li>
<li><em>osErrorParameter:</em> a parameter is invalid or outside of a permitted range.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"> uint8_t Buf[32];</div>
<div class="line"> uint8_t Idx;</div>
<div class="line">} MEM_BLOCK;</div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">osPoolDef</a> (MemPool, 8, MEM_BLOCK);</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> CAlocMemoryPoolBlock (<span class="keywordtype">void</span>) {</div>
<div class="line"> <a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> MemPool_Id;</div>
<div class="line"> MEM_BLOCK *addr;</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status;</div>
<div class="line"> </div>
<div class="line"> MemPool_Id = <a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a> (<a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a> (MemPool));</div>
<div class="line"> <span class="keywordflow">if</span> (MemPool_Id != NULL) {</div>
<div class="line"> addr = (MEM_BLOCK *)<a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">osPoolCAlloc</a> (MemPool_Id);</div>
<div class="line"> <span class="keywordflow">if</span> (addr != NULL) {</div>
<div class="line"> :</div>
<div class="line"> <span class="comment">// return a memory block back to pool</span></div>
<div class="line"> status = <a class="code" href="group__CMSIS__RTOS__PoolMgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">osPoolFree</a> (MemPool_Id, addr);</div>
<div class="line"> <span class="keywordflow">if</span> (status==<a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a>) {</div>
<div class="line"> <span class="comment">// handle status code</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,10 @@
var group__CMSIS__RTOS__PoolMgmt =
[
[ "osFeature_Pool", "group__CMSIS__RTOS__PoolMgmt.html#gadd84b683001de327894851b428587caa", null ],
[ "osPool", "group__CMSIS__RTOS__PoolMgmt.html#ga5f0b204a82327533d420210125c90697", null ],
[ "osPoolDef", "group__CMSIS__RTOS__PoolMgmt.html#ga87b471d4fe2d5dbd0040708edd52771b", null ],
[ "osPoolAlloc", "group__CMSIS__RTOS__PoolMgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543", null ],
[ "osPoolCAlloc", "group__CMSIS__RTOS__PoolMgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a", null ],
[ "osPoolCreate", "group__CMSIS__RTOS__PoolMgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a", null ],
[ "osPoolFree", "group__CMSIS__RTOS__PoolMgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54", null ]
];
@@ -0,0 +1,463 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Semaphores</title>
<title>CMSIS-RTOS: Semaphores</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('group__CMSIS__RTOS__SemaphoreMgmt.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Semaphores<div class="ingroups"><a class="el" href="group__CMSIS__RTOS__InterThread.html">Inter-Thread Communication and Resource Sharing</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Access shared resources simultaneously from different threads.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga7da4c7bfb340779c9fc7b321f5ab3e3a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a">osFeature_Semaphore</a>&#160;&#160;&#160;30</td></tr>
<tr class="memdesc:ga7da4c7bfb340779c9fc7b321f5ab3e3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">maximum count for <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> function <a href="#ga7da4c7bfb340779c9fc7b321f5ab3e3a">More...</a><br/></td></tr>
<tr class="separator:ga7da4c7bfb340779c9fc7b321f5ab3e3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9e66fe361749071e5ab87826c43c2f1b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga9e66fe361749071e5ab87826c43c2f1b">osSemaphoreDef</a>(name)&#160;&#160;&#160;const <a class="el" href="cmsis__os_8h.html#structosSemaphoreDef__t">osSemaphoreDef_t</a> os_semaphore_def_##name = { 0 }</td></tr>
<tr class="memdesc:ga9e66fe361749071e5ab87826c43c2f1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define a Semaphore object. <a href="#ga9e66fe361749071e5ab87826c43c2f1b">More...</a><br/></td></tr>
<tr class="separator:ga9e66fe361749071e5ab87826c43c2f1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga03761ee8d2c3cd4544e18364ab301dac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">osSemaphore</a>(name)&#160;&#160;&#160;&amp;os_semaphore_def_##name</td></tr>
<tr class="memdesc:ga03761ee8d2c3cd4544e18364ab301dac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Semaphore definition. <a href="#ga03761ee8d2c3cd4544e18364ab301dac">More...</a><br/></td></tr>
<tr class="separator:ga03761ee8d2c3cd4544e18364ab301dac"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga97381e8e55cd47cec390bf57c96d6edb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosSemaphoreDef__t">osSemaphoreDef_t</a> *semaphore_def, int32_t count)</td></tr>
<tr class="memdesc:ga97381e8e55cd47cec390bf57c96d6edb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and Initialize a Semaphore object used for managing resources. <a href="#ga97381e8e55cd47cec390bf57c96d6edb">More...</a><br/></td></tr>
<tr class="separator:ga97381e8e55cd47cec390bf57c96d6edb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacc15b0fc8ce1167fe43da33042e62098"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gacc15b0fc8ce1167fe43da33042e62098">osSemaphoreWait</a> (<a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore_id, uint32_t millisec)</td></tr>
<tr class="memdesc:gacc15b0fc8ce1167fe43da33042e62098"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait until a Semaphore token becomes available. <a href="#gacc15b0fc8ce1167fe43da33042e62098">More...</a><br/></td></tr>
<tr class="separator:gacc15b0fc8ce1167fe43da33042e62098"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab108914997c49e14d8ff1ae0d1988ca0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a> (<a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore_id)</td></tr>
<tr class="memdesc:gab108914997c49e14d8ff1ae0d1988ca0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Release a Semaphore token. <a href="#gab108914997c49e14d8ff1ae0d1988ca0">More...</a><br/></td></tr>
<tr class="separator:gab108914997c49e14d8ff1ae0d1988ca0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabae2801ac2c096f6e8c69a264908f595"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gabae2801ac2c096f6e8c69a264908f595">osSemaphoreDelete</a> (<a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore_id)</td></tr>
<tr class="memdesc:gabae2801ac2c096f6e8c69a264908f595"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a Semaphore that was created by <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>. <a href="#gabae2801ac2c096f6e8c69a264908f595">More...</a><br/></td></tr>
<tr class="separator:gabae2801ac2c096f6e8c69a264908f595"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>Semaphores are used to manage and protect access to shared resources. Semaphores are very similar to <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html">Mutexes</a>. Whereas a Mutex permits just one thread to access a shared resource at a time, a semaphore can be used to permit a fixed number of threads to access a pool of shared resources. Using semaphores, access to a group of identical peripherals can be managed (for example multiple DMA channels).</p>
<div class="image">
<img src="Semaphore.png" alt="Semaphore.png"/>
<div class="caption">
CMSIS-RTOS Semaphore</div></div>
<p> A semaphore object should be initialized to the maximum number of available tokens. This number of available resources is specified as parameter of the <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> function. Each time a semaphore token is obtained with <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gacc15b0fc8ce1167fe43da33042e62098">osSemaphoreWait</a>, the semaphore count is decremented. When the semaphore count is 0, no semaphore token can be obtained. The thread that tries to obtain the semaphore token needs to wait until the next token is free. Semaphores are released with <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a> incrementing the semaphore count.</p>
<dl class="section note"><dt>Note</dt><dd>Semaphore tokens can be acquired from threads and released from threads and ISRs.</dd></dl>
<h2>Working with Semaphores </h2>
<p>Follow these steps to create and use a semaphore:</p>
<ol type="1">
<li>Declare the semaphore container and initialize the semaphore: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga9e66fe361749071e5ab87826c43c2f1b">osSemaphoreDef</a> (my_semaphore); <span class="comment">// Declare semaphore</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> (my_semaphore_id); <span class="comment">// Semaphore ID</span></div>
</div><!-- fragment --></li>
<li>Initialize the semaphore container with a number of tokens within a thread: <div class="fragment"><div class="line">my_semaphore_id = <a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>(<a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">osSemaphore</a>(my_semaphore), 4); <span class="comment">// Create semaphore with 4 tokens</span></div>
</div><!-- fragment --> <b>Important:</b> semaphore tokens can be created and destroyed as threads run. This means that can initialize a semaphore with zero tokens and then use one thread to add/create tokens to the semaphore while a second thread removes them. In this way you can distinguish between producer and consumer threads.</li>
<li>Acquire a token from the semaphore container: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gacc15b0fc8ce1167fe43da33042e62098">osSemaphoreWait</a>(my_semaphore_id, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>);</div>
</div><!-- fragment --></li>
<li>When finished using the semaphore resource, send the token back to the semaphore container: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a>(my_semaphore_id);</div>
</div><!-- fragment --></li>
</ol>
<h2>Semaphore Use Cases </h2>
<p>Due to their flexibility, semaphores cover a wide range of synchronizing applications. At the same time, they are perhaps the most challenging RTOS object to understand. The following explains a use case for semaphores, taken from the book <a href="http://www.greenteapress.com/semaphores/" target="_blank">The Little Book Of Semaphores</a> by Allen B. Downey which is available for free download.</p>
<p><b>Non-binary Semaphore (Multiplex)</b></p>
<p>A multiplex limits the number of threads that can access a critical section of code. For example, this could be a function accessing DMA resources which can only support a limited number of calls.</p>
<p>To allow multiple threads to run the function, initialize a semaphore to the maximum number of threads that can be allowed. The number of tokens in the semaphore represents the number of additional threads that may enter. If this number is zero, then the next thread trying to access the function will have to wait until one of the other threads exits and releases its token. When all threads have exited the token number is back to n. Ths following example shows the code for one of the threads that might access the resource:</p>
<div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga9e66fe361749071e5ab87826c43c2f1b">osSemaphoreDef</a>(multiplex);</div>
<div class="line"><a class="code" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> (multiplex_id);</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> thread_n (<span class="keywordtype">void</span>)</div>
<div class="line"> {</div>
<div class="line"> multiplex_id = <a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>(<a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">osSemaphore</a>(multiplex), 3);</div>
<div class="line"> <span class="keywordflow">while</span>(1)</div>
<div class="line"> {</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gacc15b0fc8ce1167fe43da33042e62098">osSemaphoreWait</a>(multiplex_id, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>);</div>
<div class="line"> <span class="comment">// do something</span></div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a>(multiplex_id);</div>
<div class="line"> }</div>
<div class="line"> }</div>
</div><!-- fragment --> <h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga7da4c7bfb340779c9fc7b321f5ab3e3a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osFeature_Semaphore&#160;&#160;&#160;30</td>
</tr>
</table>
</div><div class="memdoc">
<p>A CMSIS-RTOS implementation may support semaphores. The value <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a">osFeature_Semaphore</a> indicates the maximum index count for a semaphore.</p>
<p><a class="el" href="rtxImplementation.html">CMSIS-RTOS RTX</a> Setting: <b>osFeature_Semaphore</b> is 65535 </p>
</div>
</div>
<a class="anchor" id="ga03761ee8d2c3cd4544e18364ab301dac"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osSemaphore</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;&amp;os_semaphore_def_##name</td>
</tr>
</table>
</div><div class="memdoc">
<p>Access to semaphore object for the functions <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the semaphore object. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osSemaphore</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="ga9e66fe361749071e5ab87826c43c2f1b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osSemaphoreDef</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;const <a class="el" href="cmsis__os_8h.html#structosSemaphoreDef__t">osSemaphoreDef_t</a> os_semaphore_def_##name = { 0 }</td>
</tr>
</table>
</div><div class="memdoc">
<p>Define a semaphore object that is referenced by <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">osSemaphore</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the semaphore object. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osSemaphoreDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga97381e8e55cd47cec390bf57c96d6edb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> osSemaphoreCreate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="cmsis__os_8h.html#structosSemaphoreDef__t">osSemaphoreDef_t</a> *&#160;</td>
<td class="paramname"><em>semaphore_def</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">semaphore_def</td><td>semaphore definition referenced with <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">osSemaphore</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>number of available resources. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>semaphore ID for reference by other functions or NULL in case of error. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSemaphoreCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Create and initialize a Semaphore object that is used to manage access to shared resources. The parameter <em>count</em> specifies the number of available resources. The <em>count</em> value 1 creates a binary semaphore.</p>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> tid_thread1; <span class="comment">// ID for thread 1</span></div>
<div class="line"><a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> tid_thread2; <span class="comment">// ID for thread 2</span></div>
<div class="line"> </div>
<div class="line"><a class="code" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore; <span class="comment">// Semaphore ID</span></div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga9e66fe361749071e5ab87826c43c2f1b">osSemaphoreDef</a>(semaphore); <span class="comment">// Semaphore definition</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="comment">// Thread 1 - High Priority - Active every 3ms</span></div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="keywordtype">void</span> thread1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) {</div>
<div class="line"> int32_t value;</div>
<div class="line"></div>
<div class="line"> <span class="keywordflow">while</span> (1) {</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a>(3); <span class="comment">// Pass control to other tasks for 3ms</span></div>
<div class="line"> val = <a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gacc15b0fc8ce1167fe43da33042e62098">osSemaphoreWait</a> (semaphore, 1); <span class="comment">// Wait 1ms for the free semaphore</span></div>
<div class="line"> <span class="keywordflow">if</span> (val &gt; 0) {</div>
<div class="line"> <span class="comment">// If there was no time-out the semaphore was acquired</span></div>
<div class="line"> : <span class="comment">// OK, the interface is free now, use it.</span></div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a> (semaphore); <span class="comment">// Return a token back to a semaphore</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="comment">// Thread 2 - Normal Priority - looks for a free semaphore and uses</span></div>
<div class="line"><span class="comment">// the resource whenever it is available</span></div>
<div class="line"><span class="comment">//</span></div>
<div class="line"><span class="keywordtype">void</span> thread2 (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) {</div>
<div class="line"> <span class="keywordflow">while</span> (1) {</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gacc15b0fc8ce1167fe43da33042e62098">osSemaphoreWait</a> (semaphore, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>); <span class="comment">// Wait indefinitely for a free semaphore</span></div>
<div class="line"> <span class="comment">// OK, the interface is free now, use it.</span></div>
<div class="line"> :</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a> (semaphore); <span class="comment">// Return a token back to a semaphore.</span></div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Thread definitions </span></div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a>(thread1, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">osPriorityHigh</a>, 1, 0);</div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a>(thread2, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a>, 1, 0);</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> StartApplication (<span class="keywordtype">void</span>) {</div>
<div class="line"> semaphore = <a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>(<a class="code" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">osSemaphore</a>(semaphore), 1);</div>
<div class="line"></div>
<div class="line"> tid_thread1 = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a>(<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(thread1), NULL);</div>
<div class="line"> tid_thread2 = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a>(<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(thread2), NULL);</div>
<div class="line"> :</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="gabae2801ac2c096f6e8c69a264908f595"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osSemaphoreDelete </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a>&#160;</td>
<td class="paramname"><em>semaphore_id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">semaphore_id</td><td>semaphore object referenced with <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSemaphoreDelete</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Delete a Semaphore object. The function releases internal memory obtained for Semaphore handling. After this call the <em>semaphore_id</em> is no longer valid and cannot be used. The Semaphore may be created again using the function <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>.</p>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the semaphore object has been deleted.</li>
<li><em>osErrorISR:</em> <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#gabae2801ac2c096f6e8c69a264908f595">osSemaphoreDelete</a> cannot be called from interrupt service routines.</li>
<li><em>osErrorResource:</em> the semaphore object could not be deleted.</li>
<li><em>osErrorParameter:</em> the parameter <em>semaphore_id</em> is incorrect.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>. </dd></dl>
</div>
</div>
<a class="anchor" id="gab108914997c49e14d8ff1ae0d1988ca0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osSemaphoreRelease </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a>&#160;</td>
<td class="paramname"><em>semaphore_id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">semaphore_id</td><td>semaphore object referenced with <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSemaphoreRelease</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Release a Semaphore token. This increments the count of available semaphore tokens.</p>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the semaphore has been released.</li>
<li><em>osErrorResource:</em> all tokens have already been released.</li>
<li><em>osErrorParameter:</em> the parameter <em>semaphore_id</em> is incorrect. </li>
</ul>
</div>
</div>
<a class="anchor" id="gacc15b0fc8ce1167fe43da33042e62098"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t osSemaphoreWait </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a>&#160;</td>
<td class="paramname"><em>semaphore_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">semaphore_id</td><td>semaphore object referenced with <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="functionOverview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of available tokens, or -1 in case of incorrect parameters. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSemaphoreWait</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Wait until a Semaphore token becomes available. When no Semaphore token is available, the function waits for the time specified with the parameter <em>millisec</em>.</p>
<p>The argument <em>millisec</em> specifies how long the system waits for a Semaphore token to become available. While the system waits the thread that is calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout can have the following values:</p>
<ul>
<li>when <em>millisec</em> is 0, the function returns instantly.</li>
<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until the Semaphore token becomes available.</li>
<li>all other values specify a time in millisecond for a timeout.</li>
</ul>
<p>The return value indicates the number of available tokens (the semaphore count value). If 0 is returned, then no semaphore was available.</p>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>. </dd></dl>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,10 @@
var group__CMSIS__RTOS__SemaphoreMgmt =
[
[ "osFeature_Semaphore", "group__CMSIS__RTOS__SemaphoreMgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a", null ],
[ "osSemaphore", "group__CMSIS__RTOS__SemaphoreMgmt.html#ga03761ee8d2c3cd4544e18364ab301dac", null ],
[ "osSemaphoreDef", "group__CMSIS__RTOS__SemaphoreMgmt.html#ga9e66fe361749071e5ab87826c43c2f1b", null ],
[ "osSemaphoreCreate", "group__CMSIS__RTOS__SemaphoreMgmt.html#ga97381e8e55cd47cec390bf57c96d6edb", null ],
[ "osSemaphoreDelete", "group__CMSIS__RTOS__SemaphoreMgmt.html#gabae2801ac2c096f6e8c69a264908f595", null ],
[ "osSemaphoreRelease", "group__CMSIS__RTOS__SemaphoreMgmt.html#gab108914997c49e14d8ff1ae0d1988ca0", null ],
[ "osSemaphoreWait", "group__CMSIS__RTOS__SemaphoreMgmt.html#gacc15b0fc8ce1167fe43da33042e62098", null ]
];
@@ -0,0 +1,376 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Signal Events</title>
<title>CMSIS-RTOS: Signal Events</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('group__CMSIS__RTOS__SignalMgmt.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Signal Events<div class="ingroups"><a class="el" href="group__CMSIS__RTOS__InterThread.html">Inter-Thread Communication and Resource Sharing</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Synchronize threads using signals.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga01edde265710d883b6e237d34a6ef4a6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga01edde265710d883b6e237d34a6ef4a6">osFeature_Signals</a>&#160;&#160;&#160;8</td></tr>
<tr class="memdesc:ga01edde265710d883b6e237d34a6ef4a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">maximum number of Signal Flags available per thread <a href="#ga01edde265710d883b6e237d34a6ef4a6">More...</a><br/></td></tr>
<tr class="separator:ga01edde265710d883b6e237d34a6ef4a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga3de2730654589d6c3559c4b9e2825553"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id, int32_t signals)</td></tr>
<tr class="memdesc:ga3de2730654589d6c3559c4b9e2825553"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the specified Signal Flags of an active thread. <a href="#ga3de2730654589d6c3559c4b9e2825553">More...</a><br/></td></tr>
<tr class="separator:ga3de2730654589d6c3559c4b9e2825553"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga87283a6ebc31ce9ed42baf3ea7e4eab6"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">osSignalClear</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id, int32_t signals)</td></tr>
<tr class="memdesc:ga87283a6ebc31ce9ed42baf3ea7e4eab6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the specified Signal Flags of an active thread. <a href="#ga87283a6ebc31ce9ed42baf3ea7e4eab6">More...</a><br/></td></tr>
<tr class="separator:ga87283a6ebc31ce9ed42baf3ea7e4eab6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga38860acda96df47da6923348d96fc4c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a> (int32_t signals, uint32_t millisec)</td></tr>
<tr class="memdesc:ga38860acda96df47da6923348d96fc4c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for one or more Signal Flags to become signaled for the current <b>RUNNING</b> thread. <a href="#ga38860acda96df47da6923348d96fc4c9">More...</a><br/></td></tr>
<tr class="separator:ga38860acda96df47da6923348d96fc4c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>Signals are used to trigger execution states between threads. The signal management functions in CMSIS-RTOS allow you to control or wait for signal flags. Each thread has up to 31 assigned signal flags. The maximum number of signal flags is defined in the <a class="el" href="cmsis__os_8h.html">cmsis_os.h</a> file (<b>#define osFeature_Signals</b>).</p>
<p>A thread</p>
<ul>
<li>can wait for signals to be set (using <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a>). Using this function, it enters the <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ThreadStates">WAITING</a> state. The <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a> parameter <em>signals</em> defines the signals that are required to put the thread back into <b>READY</b> state.</li>
<li>may set one or more flags in any other given thread (using <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a>).</li>
<li>may clear its own signals or the signals of other threads (using <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">osSignalClear</a>).</li>
</ul>
<p>When a thread wakes up and resumes execution, its signal flags are automatically cleared.</p>
<h2>Working with Signals </h2>
<p>Here is a simple example that shows how two thread can communicate with each others using signals:</p>
<div class="image">
<img src="simple_signal.png" alt="simple_signal.png"/>
<div class="caption">
Simple signal event communication</div></div>
<p> The following steps are required to use signals:</p>
<ol type="1">
<li>In the thread (for example thread ID <code>tid_thread1</code>) that is supposed to wait for a signal, call the wait function: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__SignalMgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a> (0x0001, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>); <span class="comment">// wait forever for the signal 0x0001</span></div>
</div><!-- fragment --></li>
<li>In another thread (or threads) that are supposed to wake the waiting thread up call: <div class="fragment"><div class="line"><a class="code" href="group__CMSIS__RTOS__SignalMgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a> (tid_thread1, 0x0001); <span class="comment">// set the signal 0x0001 for thread tid_thread1</span></div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__Wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a> (1000); <span class="comment">// wait for 1 second</span></div>
</div><!-- fragment --> </li>
</ol>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga01edde265710d883b6e237d34a6ef4a6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osFeature_Signals&#160;&#160;&#160;8</td>
</tr>
</table>
</div><div class="memdoc">
<p>The CMSIS-RTOS API may support a variable number of signal flags. This define specifies the number of signal flags available per thread. The maximum value is 32 signal flags per thread.</p>
<p><a class="el" href="rtxImplementation.html">CMSIS-RTOS RTX</a> Setting: <b>osFeature_Signals</b> is 16 </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga87283a6ebc31ce9ed42baf3ea7e4eab6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t osSignalClear </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a>&#160;</td>
<td class="paramname"><em>thread_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>signals</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID obtained by <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">signals</td><td>specifies the signal flags of the thread that shall be cleared. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters or call from ISR. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSignalClear</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Clear the signal flags of an active thread.</p>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> Thread_2 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg);</div>
<div class="line"></div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a> (Thread_2, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">osPriorityHigh</a>, 1, 0);</div>
<div class="line"> </div>
<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> EX_Signal_1 (<span class="keywordtype">void</span>) {</div>
<div class="line"> int32_t signals;</div>
<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id;</div>
<div class="line"> </div>
<div class="line"> thread_id = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> (<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(Thread_2), NULL);</div>
<div class="line"> <span class="keywordflow">if</span> (thread_id == NULL) {</div>
<div class="line"> <span class="comment">// Failed to create a thread.</span></div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line">f :</div>
<div class="line"> signals = <a class="code" href="group__CMSIS__RTOS__SignalMgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">osSignalClear</a> (thread_id, 0x01);</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga3de2730654589d6c3559c4b9e2825553"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t osSignalSet </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a>&#160;</td>
<td class="paramname"><em>thread_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>signals</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID obtained by <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">signals</td><td>specifies the signal flags of the thread that should be set. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSignalSet</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Set the signal flags of an active thread. This function may be used also within interrupt service routines.</p>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> Thread_2 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg);</div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a> (Thread_2, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">osPriorityHigh</a>, 1, 0);</div>
<div class="line"> </div>
<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> EX_Signal_1 (<span class="keywordtype">void</span>) {</div>
<div class="line"> int32_t signals;</div>
<div class="line"> uint32_t exec;</div>
<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id;</div>
<div class="line"> </div>
<div class="line"> thread_id = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> (<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(Thread_2), NULL);</div>
<div class="line"> <span class="keywordflow">if</span> (thread_id == NULL) {</div>
<div class="line"> <span class="comment">// Failed to create a thread.</span></div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line"> signals = <a class="code" href="group__CMSIS__RTOS__SignalMgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a> (thread_id, 0x00000005); <span class="comment">// Send signals to the created thread</span></div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga38860acda96df47da6923348d96fc4c9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a> osSignalWait </td>
<td>(</td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>signals</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">signals</td><td>wait until all specified signal flags set or 0 for any single signal flag. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="functionOverview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>event flag information or error code. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSignalWait</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Suspend the execution of the current <b>RUNNING</b> thread until all specified signal flags with the parameter <em>signals</em> are set. When the parameter <em>signals</em> is 0 the current <b>RUNNING</b> thread is suspended until any signal is set. When these signal flags are already set, the function returns instantly. Otherwise the thread is put into the state <b>WAITING</b>. Signal flags that are reported as event are automatically cleared.</p>
<p>The argument <em>millisec</em> specifies how long the system waits for the specified signal flags. While the system waits the thread calling this function is put into the state <b>WAITING</b>. The timeout value can have the following values:</p>
<ul>
<li>when <em>millisec</em> is 0, the function returns instantly.</li>
<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until a specified signal is set.</li>
<li>all other values specify a time in millisecond for a timeout.</li>
</ul>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> no signal received when the timeout value <em>millisec</em> was 0.</li>
<li><em>osEventTimeout:</em> signal not occurred within timeout</li>
<li><em>osEventSignal:</em> signal occurred, <em>value.signals</em> contains the signal flags; these signal flags are cleared.</li>
<li><em>osErrorValue:</em> the value <em>signals</em> is outside of the permitted range.</li>
<li><em>osErrorISR:</em> <a class="el" href="group__CMSIS__RTOS__SignalMgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a> cannot be called from interrupt service routines.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> Thread_2 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg);</div>
<div class="line"> </div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a> (Thread_2, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">osPriorityHigh</a>, 1, 0);</div>
<div class="line"> </div>
<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> EX_Signal_1 (<span class="keywordtype">void</span>) {</div>
<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id;</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Definitions.html#structosEvent">osEvent</a> evt;</div>
<div class="line"> </div>
<div class="line"> thread_id = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> (<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(Thread_2), NULL);</div>
<div class="line"> <span class="keywordflow">if</span> (thread_id == NULL) {</div>
<div class="line"> <span class="comment">// Failed to create a thread.</span></div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line"> :</div>
<div class="line"> <span class="comment">// wait for a signal</span></div>
<div class="line"> evt = <a class="code" href="group__CMSIS__RTOS__SignalMgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a> (0x01, 100);</div>
<div class="line"> <span class="keywordflow">if</span> (evt.<a class="code" href="group__CMSIS__RTOS__Definitions.html#ad477a289f1f03ac45407b64268d707d3">status</a> == <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518">osEventSignal</a>) {</div>
<div class="line"> <span class="comment">// handle event status</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,7 @@
var group__CMSIS__RTOS__SignalMgmt =
[
[ "osFeature_Signals", "group__CMSIS__RTOS__SignalMgmt.html#ga01edde265710d883b6e237d34a6ef4a6", null ],
[ "osSignalClear", "group__CMSIS__RTOS__SignalMgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6", null ],
[ "osSignalSet", "group__CMSIS__RTOS__SignalMgmt.html#ga3de2730654589d6c3559c4b9e2825553", null ],
[ "osSignalWait", "group__CMSIS__RTOS__SignalMgmt.html#ga38860acda96df47da6923348d96fc4c9", null ]
];
@@ -0,0 +1,234 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Status and Error Codes</title>
<title>CMSIS-RTOS: Status and Error Codes</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('group__CMSIS__RTOS__Status.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">Status and Error Codes<div class="ingroups"><a class="el" href="group__CMSIS__RTOS.html">CMSIS-RTOS API</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Status and Error Codes returned by CMSIS-RTOS API functions.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gae2e091fefc4c767117727bd5aba4d99e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> { <br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a> = 0,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518">osEventSignal</a> = 0x08,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342">osEventMessage</a> = 0x10,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926">osEventMail</a> = 0x20,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177">osEventTimeout</a> = 0x40,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109">osErrorParameter</a> = 0x80,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d">osErrorResource</a> = 0x81,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467">osErrorTimeoutResource</a> = 0xC1,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f">osErrorISR</a> = 0x82,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65">osErrorISRRecursive</a> = 0x83,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f">osErrorPriority</a> = 0x84,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81">osErrorNoMemory</a> = 0x85,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee">osErrorValue</a> = 0x86,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc">osErrorOS</a> = 0xFF,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1">os_status_reserved</a> = 0x7FFFFFFF
<br/>
}</td></tr>
<tr class="separator:gae2e091fefc4c767117727bd5aba4d99e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>The Status and Error Codes section lists all the return values that the CMSIS-RTOS functions will return. </p>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osStatus</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>The <a class="el" href="cmsis__os_8h.html#ae2e091fefc4c767117727bd5aba4d99e">osStatus</a> enumeration defines the event status and error codes that are returned by the CMSIS-RTOS functions. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f"></a>osOK</em>&#160;</td><td class="fielddoc">
<p>function completed; no error or event occurred. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518"></a>osEventSignal</em>&#160;</td><td class="fielddoc">
<p>function completed; signal event occurred. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342"></a>osEventMessage</em>&#160;</td><td class="fielddoc">
<p>function completed; message event occurred. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926"></a>osEventMail</em>&#160;</td><td class="fielddoc">
<p>function completed; mail event occurred. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177"></a>osEventTimeout</em>&#160;</td><td class="fielddoc">
<p>function completed; timeout occurred. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109"></a>osErrorParameter</em>&#160;</td><td class="fielddoc">
<p>parameter error: a mandatory parameter was missing or specified an incorrect object. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d"></a>osErrorResource</em>&#160;</td><td class="fielddoc">
<p>resource not available: a specified resource was not available. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467"></a>osErrorTimeoutResource</em>&#160;</td><td class="fielddoc">
<p>resource not available within given time: a specified resource was not available within the timeout period. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f"></a>osErrorISR</em>&#160;</td><td class="fielddoc">
<p>not allowed in ISR context: the function cannot be called from interrupt service routines. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65"></a>osErrorISRRecursive</em>&#160;</td><td class="fielddoc">
<p>function called multiple times from ISR with same object. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f"></a>osErrorPriority</em>&#160;</td><td class="fielddoc">
<p>system cannot determine priority or thread has illegal priority. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81"></a>osErrorNoMemory</em>&#160;</td><td class="fielddoc">
<p>system is out of memory: it was impossible to allocate or reserve memory for the operation. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee"></a>osErrorValue</em>&#160;</td><td class="fielddoc">
<p>value of a parameter is out of range. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc"></a>osErrorOS</em>&#160;</td><td class="fielddoc">
<p>unspecified RTOS error: run-time error but no other error message fits. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1"></a>os_status_reserved</em>&#160;</td><td class="fielddoc">
<p>prevent from enum down-size compiler optimization. </p>
</td></tr>
</table>
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,20 @@
var group__CMSIS__RTOS__Status =
[
[ "osStatus", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e", [
[ "osOK", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f", null ],
[ "osEventSignal", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518", null ],
[ "osEventMessage", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342", null ],
[ "osEventMail", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926", null ],
[ "osEventTimeout", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177", null ],
[ "osErrorParameter", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109", null ],
[ "osErrorResource", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d", null ],
[ "osErrorTimeoutResource", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467", null ],
[ "osErrorISR", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f", null ],
[ "osErrorISRRecursive", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65", null ],
[ "osErrorPriority", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f", null ],
[ "osErrorNoMemory", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81", null ],
[ "osErrorValue", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee", null ],
[ "osErrorOS", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc", null ],
[ "os_status_reserved", "group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1", null ]
] ]
];
@@ -0,0 +1,647 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Thread Management</title>
<title>CMSIS-RTOS: Thread Management</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-RTOS
&#160;<span id="projectnumber">Version 1.03</span>
</div>
<div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
<ul class="tablist">
<script type="text/javascript">
<!--
writeComponentTabs.call(this);
//-->
</script>
</ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li><a href="modules.html"><span>Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('group__CMSIS__RTOS__ThreadMgmt.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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="#define-members">Macros</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Thread Management<div class="ingroups"><a class="el" href="group__CMSIS__RTOS.html">CMSIS-RTOS API</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Define, create, and control thread functions.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gaee93d929beb350f16e5cc7fa602e229f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a>(name, priority, instances, stacksz)</td></tr>
<tr class="memdesc:gaee93d929beb350f16e5cc7fa602e229f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a Thread Definition with function, priority, and stack requirements. <a href="#gaee93d929beb350f16e5cc7fa602e229f">More...</a><br/></td></tr>
<tr class="separator:gaee93d929beb350f16e5cc7fa602e229f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf0c7c6b5e09f8be198312144b5c9e453"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(name)&#160;&#160;&#160;&amp;os_thread_def_##name</td></tr>
<tr class="memdesc:gaf0c7c6b5e09f8be198312144b5c9e453"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access a Thread definition. <a href="#gaf0c7c6b5e09f8be198312144b5c9e453">More...</a><br/></td></tr>
<tr class="separator:gaf0c7c6b5e09f8be198312144b5c9e453"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga7f2b42f1983b9107775ec2a1c69a849a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> { <br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81">osPriorityIdle</a> = -3,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4">osPriorityLow</a> = -2,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6">osPriorityBelowNormal</a> = -1,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a> = 0,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b">osPriorityAboveNormal</a> = +1,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">osPriorityHigh</a> = +2,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af">osPriorityRealtime</a> = +3,
<br/>
&#160;&#160;<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4">osPriorityError</a> = 0x84
<br/>
}</td></tr>
<tr class="memdesc:ga7f2b42f1983b9107775ec2a1c69a849a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Priority used for thread control. <a href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">More...</a><br/></td></tr>
<tr class="separator:ga7f2b42f1983b9107775ec2a1c69a849a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gac59b5713cb083702dce759c73fd90dff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> (const <a class="el" href="cmsis__os_8h.html#structosThreadDef__t">osThreadDef_t</a> *thread_def, void *argument)</td></tr>
<tr class="memdesc:gac59b5713cb083702dce759c73fd90dff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a thread and add it to Active Threads and set it to state READY. <a href="#gac59b5713cb083702dce759c73fd90dff">More...</a><br/></td></tr>
<tr class="separator:gac59b5713cb083702dce759c73fd90dff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab1df2a28925862ef8f9cf4e1c995c5a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a> (void)</td></tr>
<tr class="memdesc:gab1df2a28925862ef8f9cf4e1c995c5a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the thread ID of the current running thread. <a href="#gab1df2a28925862ef8f9cf4e1c995c5a7">More...</a><br/></td></tr>
<tr class="separator:gab1df2a28925862ef8f9cf4e1c995c5a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaea135bb90eb853eff39e0800b91bbeab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr>
<tr class="memdesc:gaea135bb90eb853eff39e0800b91bbeab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Terminate execution of a thread and remove it from Active Threads. <a href="#gaea135bb90eb853eff39e0800b91bbeab">More...</a><br/></td></tr>
<tr class="separator:gaea135bb90eb853eff39e0800b91bbeab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">osThreadSetPriority</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id, <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> priority)</td></tr>
<tr class="memdesc:ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change priority of an active thread. <a href="#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">More...</a><br/></td></tr>
<tr class="separator:ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4299d838978bc2aae5e4350754e6a4e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga4299d838978bc2aae5e4350754e6a4e9">osThreadGetPriority</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr>
<tr class="memdesc:ga4299d838978bc2aae5e4350754e6a4e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get current priority of an active thread. <a href="#ga4299d838978bc2aae5e4350754e6a4e9">More...</a><br/></td></tr>
<tr class="separator:ga4299d838978bc2aae5e4350754e6a4e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf13a667493c5d629a90c13e113b99233"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a> (void)</td></tr>
<tr class="memdesc:gaf13a667493c5d629a90c13e113b99233"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pass control to next thread that is in state <b>READY</b>. <a href="#gaf13a667493c5d629a90c13e113b99233">More...</a><br/></td></tr>
<tr class="separator:gaf13a667493c5d629a90c13e113b99233"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>The Thread Management function group allows defining, creating, and controlling thread functions in the system. The function <b>main</b> is a special thread function that is started at system initialization and has the initial priority <em>osPriorityNormal</em>.</p>
<p><a class="anchor" id="ThreadStates"></a>Threads can be in the following states:</p>
<ul>
<li><b>RUNNING:</b> The thread that is currently running is in the <b>RUNNING</b> state. Only one thread at a time can be in this state.</li>
<li><b>READY:</b> Threads which are ready to run are in the <b>READY</b> state. Once the <b>RUNNING</b> thread has terminated or is <b>WAITING</b>, the next <b>READY</b> thread with the highest priority becomes the <b>RUNNING</b> thread.</li>
<li><b>WAITING:</b> Threads that are waiting for an event to occur are in the <b>WAITING</b> state.</li>
<li><b>INACTIVE:</b> Threads that are not created or terminated are in the <b>INACTIVE</b> state. These threads typically consume no system resources.</li>
</ul>
<div class="image">
<img src="ThreadStatus.png" alt="ThreadStatus.png"/>
<div class="caption">
Thread State and State Transitions</div></div>
<p> A CMSIS-RTOS assumes that threads are scheduled as shown in the figure <b>Thread State and State Transitions</b>. The thread states change as follows:</p>
<ul>
<li>A thread is created using the function <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a>. This puts the thread into the <b>READY</b> or <b>RUNNING</b> state (depending on the thread priority).</li>
<li>CMSIS-RTOS is pre-emptive. The active thread with the highest priority becomes the <b>RUNNING</b> thread provided it does not wait for any event. The initial priority of a thread is defined with the <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a> but may be changed during execution using the function <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">osThreadSetPriority</a>.</li>
<li>The <b>RUNNING</b> thread transfers into the <b>WAITING</b> state when it is waiting for an event.</li>
<li>Active threads can be terminated any time using the function <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a>. Threads can terminate also by just returning from the thread function. Threads that are terminated are in the <b>INACTIVE</b> state and typically do not consume any dynamic memory resources. </li>
</ul>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gaf0c7c6b5e09f8be198312144b5c9e453"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osThread</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;&amp;os_thread_def_##name</td>
</tr>
</table>
</div><div class="memdoc">
<p>Access to the thread definition for the function <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the thread definition object. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osThread</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="gaee93d929beb350f16e5cc7fa602e229f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osThreadDef</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">priority, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">instances, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">stacksz&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Define the attributes of a thread functions that can be created by the function <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> using <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>. The argument <em>instances</em> defines the number of times that <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> can be called for the same <b>osThreadDef</b>.</p>
<p><b>Code</b> <b>Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> Thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg); <span class="comment">// function prototype for a Thread</span></div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a> (Thread, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a>, 3, 0); <span class="comment">// define Thread and specify to allow three instances</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> ThreadCreate_example (<span class="keywordtype">void</span>) {</div>
<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> id1, id2, id3;</div>
<div class="line"> </div>
<div class="line"> id1 = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> (<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a> (Thread), NULL); <span class="comment">// create the thread with id1</span></div>
<div class="line"> id2 = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> (<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a> (Thread), NULL); <span class="comment">// create the thread with id2</span></div>
<div class="line"> id3 = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> (<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a> (Thread), NULL); <span class="comment">// create the thread with id3</span></div>
<div class="line"> <span class="keywordflow">if</span> (id1 == NULL) { <span class="comment">// handle thread creation for id1</span></div>
<div class="line"> <span class="comment">// Failed to create the thread with id1</span></div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">if</span> (id2 == NULL) { <span class="comment">// handle thread creation for id2</span></div>
<div class="line"> <span class="comment">// Failed to create the thread with id2</span></div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">if</span> (id3 == NULL) { <span class="comment">// handle thread creation for id3</span></div>
<div class="line"> <span class="comment">// Failed to create the thread with id3</span></div>
<div class="line"> }</div>
<div class="line"> :</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> (id1); <span class="comment">// stop the thread with id1</span></div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> (id2); <span class="comment">// stop the thread with id2</span></div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> (id3); <span class="comment">// stop the thread with id3</span></div>
<div class="line">}</div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the thread function. </td></tr>
<tr><td class="paramname">priority</td><td>initial priority of the thread function. </td></tr>
<tr><td class="paramname">instances</td><td>number of possible thread instances. </td></tr>
<tr><td class="paramname">stacksz</td><td>stack size (in bytes) requirements for the thread function. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameters to <b>osThreadDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osPriority</b> shall be consistent in every CMSIS-RTOS.</dd>
<dd>
Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p>The <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> value specifies the priority for a thread. The default thread priority should be <em>osPriorityNormal</em>. If a Thread is active that has a higher priority than the currently executing thread, then a thread switch occurs immediately to execute the new task.</p>
<p>To prevent from a priority inversion, a CMSIS-RTOS compliant OS may optionally implement a <b>priority inheritance</b> method. A priority inversion occurs when a high priority thread is waiting for a resource or event that is controlled by a thread with a lower priority. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81"></a>osPriorityIdle</em>&#160;</td><td class="fielddoc">
<p>priority: idle (lowest) </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4"></a>osPriorityLow</em>&#160;</td><td class="fielddoc">
<p>priority: low </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6"></a>osPriorityBelowNormal</em>&#160;</td><td class="fielddoc">
<p>priority: below normal </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1"></a>osPriorityNormal</em>&#160;</td><td class="fielddoc">
<p>priority: normal (default) </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b"></a>osPriorityAboveNormal</em>&#160;</td><td class="fielddoc">
<p>priority: above normal </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2"></a>osPriorityHigh</em>&#160;</td><td class="fielddoc">
<p>priority: high </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af"></a>osPriorityRealtime</em>&#160;</td><td class="fielddoc">
<p>priority: realtime (highest) </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4"></a>osPriorityError</em>&#160;</td><td class="fielddoc">
<p>system cannot determine priority or thread has illegal priority </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gac59b5713cb083702dce759c73fd90dff"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> osThreadCreate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="cmsis__os_8h.html#structosThreadDef__t">osThreadDef_t</a> *&#160;</td>
<td class="paramname"><em>thread_def</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>argument</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">thread_def</td><td>thread definition referenced with <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">argument</td><td>pointer that is passed to the thread function as start argument. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>thread ID for reference by other functions or NULL in case of error. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osThreadCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Start a thread function by adding it to the Active Threads list and set it to state <b>READY</b>. The thread function receives the <em>argument</em> pointer as function argument when the function is started. When the priority of the created thread function is higher than the current <b>RUNNING</b> thread, the created thread function starts instantly and becomes the new <b>RUNNING</b> thread.</p>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> Thread_1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg); <span class="comment">// function prototype for Thread_1</span></div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a> (Thread_1, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a>, 1, 0); <span class="comment">// define Thread_1</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> ThreadCreate_example (<span class="keywordtype">void</span>) {</div>
<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> id;</div>
<div class="line"> </div>
<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> (<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a> (Thread_1), NULL); <span class="comment">// create the thread</span></div>
<div class="line"> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == NULL) { <span class="comment">// handle thread creation</span></div>
<div class="line"> <span class="comment">// Failed to create a thread</span></div>
<div class="line"> }</div>
<div class="line"> :</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> (<span class="keywordtype">id</span>); <span class="comment">// stop the thread</span></div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="gab1df2a28925862ef8f9cf4e1c995c5a7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> osThreadGetId </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>thread ID for reference by other functions or NULL in case of error. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osThreadGetId</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Get the thread ID of the current running thread.</p>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>. </dd>
<dd>
Must not be used inside the idle daemon. This would lead to undefined behavior.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> ThreadGetId_example (<span class="keywordtype">void</span>) {</div>
<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> id; <span class="comment">// id for the currently running thread</span></div>
<div class="line"> </div>
<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a> ();</div>
<div class="line"> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == NULL) {</div>
<div class="line"> <span class="comment">// Failed to get the id; not in a thread</span></div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga4299d838978bc2aae5e4350754e6a4e9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> osThreadGetPriority </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a>&#160;</td>
<td class="paramname"><em>thread_id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID obtained by <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>current priority value of the thread function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osThreadGetPriority</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Get the priority of an active thread. In case of a failure the value <b>osPriorityError</b> is returned.</p>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> Thread_1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg) { <span class="comment">// Thread function</span></div>
<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> id; <span class="comment">// id for the currently running thread</span></div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> priority; <span class="comment">// thread priority</span></div>
<div class="line"> </div>
<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a> (); <span class="comment">// Obtain ID of current running thread</span></div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> != NULL) {</div>
<div class="line"> priority = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#ga4299d838978bc2aae5e4350754e6a4e9">osThreadGetPriority</a> (<span class="keywordtype">id</span>);</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line"> <span class="comment">// Failed to get the id</span></div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osThreadSetPriority </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a>&#160;</td>
<td class="paramname"><em>thread_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a>&#160;</td>
<td class="paramname"><em>priority</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID obtained by <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">priority</td><td>new priority value for the thread function. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osThreadSetPriority</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Change the priority of an active thread.</p>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the priority of the specified thread has been successfully changed.</li>
<li><em>osErrorParameter:</em> thread_id is incorrect.</li>
<li><em>osErrorValue:</em> incorrect priority value.</li>
<li><em>osErrorResource:</em> thread_id refers to a thread that is not an active thread.</li>
<li><em>osErrorISR:</em> <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">osThreadSetPriority</a> cannot be called from interrupt service routines.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> Thread_1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg) { <span class="comment">// Thread function</span></div>
<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> id; <span class="comment">// id for the currently running thread</span></div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> pr; <span class="comment">// thread priority</span></div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status; <span class="comment">// status of the executed function</span></div>
<div class="line"> </div>
<div class="line"> : </div>
<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a> (); <span class="comment">// Obtain ID of current running thread</span></div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> != NULL) {</div>
<div class="line"> status = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">osThreadSetPriority</a> (<span class="keywordtype">id</span>, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6">osPriorityBelowNormal</a>);</div>
<div class="line"> <span class="keywordflow">if</span> (status == <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a>) {</div>
<div class="line"> <span class="comment">// Thread priority changed to BelowNormal</span></div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line"> <span class="comment">// Failed to set the priority</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line"> <span class="comment">// Failed to get the id</span></div>
<div class="line"> }</div>
<div class="line"> : </div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="gaea135bb90eb853eff39e0800b91bbeab"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osThreadTerminate </td>
<td>(</td>
<td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a>&#160;</td>
<td class="paramname"><em>thread_id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID obtained by <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osThreadTerminate</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Remove the thread function from the active thread list. If the thread is currently RUNNING the execution will stop.</p>
<dl class="section note"><dt>Note</dt><dd>In case that <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> terminates the currently running task, the function never returns and other threads that are in the READY state are started.</dd></dl>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the specified thread has been successfully terminated.</li>
<li><em>osErrorParameter:</em> thread_id is incorrect.</li>
<li><em>osErrorResource:</em> thread_id refers to a thread that is not an active thread.</li>
<li><em>osErrorISR:</em> <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> cannot be called from interrupt service routines.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>. </dd>
<dd>
Avoid calling the function with a <em>thread_id</em> that does not exist or has been terminated already.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> Thread_1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg); <span class="comment">// function prototype for Thread_1</span></div>
<div class="line"><a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a> (Thread_1, <a class="code" href="cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a>, 1, 0); <span class="comment">// define Thread_1</span></div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> ThreadTerminate_example (<span class="keywordtype">void</span>) {</div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status;</div>
<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> id;</div>
<div class="line"> </div>
<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> (<a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a> (Thread_1), NULL); <span class="comment">// create the thread</span></div>
<div class="line"> : </div>
<div class="line"> status = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> (<span class="keywordtype">id</span>); <span class="comment">// stop the thread</span></div>
<div class="line"> <span class="keywordflow">if</span> (status == <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a>) {</div>
<div class="line"> <span class="comment">// Thread was terminated successfully</span></div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line"> <span class="comment">// Failed to terminate a thread</span></div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="gaf13a667493c5d629a90c13e113b99233"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osThreadYield </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osThreadYield</b> shall be consistent in every CMSIS-RTOS.</dd></dl>
<p>Pass control to the next thread that is in state <b>READY</b>. If there is no other thread in the state <b>READY</b>, the current thread continues execution and no thread switching occurs.</p>
<p><b><a class="el" href="group__CMSIS__RTOS__Status.html">Status and Error Codes</a></b><br/>
</p>
<ul>
<li><em>osOK:</em> the function has been correctly executed.</li>
<li><em>osErrorISR:</em> <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a> cannot be called from interrupt service routines.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="functionOverview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl>
<p><b>Code Example</b> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> Thread_1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg) { <span class="comment">// Thread function</span></div>
<div class="line"> <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status; <span class="comment">// status of the executed function</span></div>
<div class="line"> :</div>
<div class="line"> <span class="keywordflow">while</span> (1) {</div>
<div class="line"> status = <a class="code" href="group__CMSIS__RTOS__ThreadMgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a>(); <span class="comment">// </span></div>
<div class="line"> <span class="keywordflow">if</span> (status != <a class="code" href="group__CMSIS__RTOS__Status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a>) {</div>
<div class="line"> <span class="comment">// thread switch not occurred, not in a thread function</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment -->
</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 on Wed Jul 10 2019 15:21:02 for CMSIS-RTOS Version 1.03 by Arm Ltd. All rights reserved.
<!--
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
-->
</li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,21 @@
var group__CMSIS__RTOS__ThreadMgmt =
[
[ "osThread", "group__CMSIS__RTOS__ThreadMgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453", null ],
[ "osThreadDef", "group__CMSIS__RTOS__ThreadMgmt.html#gaee93d929beb350f16e5cc7fa602e229f", null ],
[ "osPriority", "group__CMSIS__RTOS__ThreadMgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a", [
[ "osPriorityIdle", "cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81", null ],
[ "osPriorityLow", "cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4", null ],
[ "osPriorityBelowNormal", "cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6", null ],
[ "osPriorityNormal", "cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1", null ],
[ "osPriorityAboveNormal", "cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b", null ],
[ "osPriorityHigh", "cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2", null ],
[ "osPriorityRealtime", "cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af", null ],
[ "osPriorityError", "cmsis__os_8h.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4", null ]
] ],
[ "osThreadCreate", "group__CMSIS__RTOS__ThreadMgmt.html#gac59b5713cb083702dce759c73fd90dff", null ],
[ "osThreadGetId", "group__CMSIS__RTOS__ThreadMgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7", null ],
[ "osThreadGetPriority", "group__CMSIS__RTOS__ThreadMgmt.html#ga4299d838978bc2aae5e4350754e6a4e9", null ],
[ "osThreadSetPriority", "group__CMSIS__RTOS__ThreadMgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b", null ],
[ "osThreadTerminate", "group__CMSIS__RTOS__ThreadMgmt.html#gaea135bb90eb853eff39e0800b91bbeab", null ],
[ "osThreadYield", "group__CMSIS__RTOS__ThreadMgmt.html#gaf13a667493c5d629a90c13e113b99233", null ]
];

Some files were not shown because too many files have changed in this diff Show More