Files @ 6982c8ddef15
Branch filter:

Location: therm/Libraries/CMSIS/Documentation/RTOS/html/cmsis_os_h.html - annotation

Ethan Zonca
Add graphics lib
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
dc0c251991cc
<!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: Header File Template: cmsis_os.h</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>
<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>
<link href="stylsheetf" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 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.02</span>
   </div>
   <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
    <ul class="tablist">
      <li><a href="../../General/html/index.html"><span>CMSIS</span></a></li>
      <li><a href="../../Core/html/index.html"><span>CORE</span></a></li>
      <li><a href="../../DSP/html/index.html"><span>DSP</span></a></li>
      <li class="current"><a href="../../RTOS/html/index.html"><span>RTOS API</span></a></li>
      <li><a href="../../SVD/html/index.html"><span>SVD</span></a></li>
    </ul>
</div>
<!-- Generated by Doxygen 1.8.3.1 -->
<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('cmsis_os_h.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">Header File Template: <a class="el" href="cmsis__os_8h.html">cmsis_os.h</a> </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The file <b><a class="el" href="cmsis__os_8h.html">cmsis_os.h</a></b> is a template header file for a CMSIS-RTOS compliant Real-Time Operating System (RTOS). Each RTOS that is compliant with CMSIS-RTOS shall provide a specific <b><a class="el" href="cmsis__os_8h.html">cmsis_os.h</a></b> header file that represents its implementation.</p>
<p>The file <a class="el" href="cmsis__os_8h.html">cmsis_os.h</a> contains:</p>
<ul>
<li>CMSIS-RTOS API function definitions</li>
<li>struct definitions for parameters and return types</li>
<li>status and priority values used by CMSIS-RTOS API functions</li>
<li>macros for defining threads and other kernel objects</li>
</ul>
<p><b>Name conventions and header file modifications</b></p>
<p>All definitions are prefixed with <b>os</b> to give an unique name space for CMSIS-RTOS functions. Definitions that are prefixed <b>os_</b> are not used in the application code but local to this header file. All definitions and functions that belong to a module are grouped and have a common prefix, i.e. <b>osThread</b>.</p>
<p>Definitions that are marked with <b>CAN BE CHANGED</b> can be adapted towards the needs of the actual CMSIS-RTOS implementation. These definitions can be specific to the underlying RTOS kernel.</p>
<p>Definitions that are marked with <b>MUST REMAIN UNCHANGED</b> cannot be altered. Otherwise the CMSIS-RTOS implementation is no longer compliant to the standard. Note that some functions are optional and need not to be provided by every CMSIS-RTOS implementation.</p>
<p><b>Function calls from interrupt service routines</b></p>
<p>The following CMSIS-RTOS functions can be called from threads and interrupt service routines (ISR):</p>
<ul>
<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a></li>
<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a></li>
<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">osPoolCAlloc</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">osPoolFree</a></li>
<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d">osMessagePut</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">osMessageGet</a></li>
<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">osMailCAlloc</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___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 that 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 ISR 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>
<p><b>Define and reference object definitions</b></p>
<p>With <b>#define osObjectsExternal</b> objects are defined as external symbols. This allows to create a consistent header file that is used throughout a project as shown below:</p>
<p><em>Header File</em> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>&gt;</span>                                         <span class="comment">// CMSIS RTOS header file</span></div>
<div class="line"></div>
<div class="line"><span class="comment">// Thread definition</span></div>
<div class="line"><span class="keyword">extern</span> <span class="keywordtype">void</span> thread_sample (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument);             <span class="comment">// function prototype</span></div>
<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a> (thread_sample, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6" title="priority: below normal">osPriorityBelowNormal</a>, 1, 100);</div>
<div class="line"></div>
<div class="line"><span class="comment">// Pool definition</span></div>
<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b" title="Define a Memory Pool.">osPoolDef</a>(MyPool, 10, <span class="keywordtype">long</span>);</div>
</div><!-- fragment --><p>This header file defines all objects when included in a C/C++ source file. When <b>#define osObjectsExternal</b> is present before the header file, the objects are defined as external symbols. A single consistent header file can therefore be used throughout the whole project.</p>
<p><em>Example</em> </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;osObjects.h&quot;</span>     <span class="comment">// Definition of the CMSIS-RTOS objects</span></div>
</div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#define osObjectExternal   // Objects will be defined as external symbols</span></div>
<div class="line"><span class="preprocessor">#include &quot;osObjects.h&quot;     // Reference to the CMSIS-RTOS objects</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="footer">Generated on Mon Mar 18 2013 13:38:00 for CMSIS-RTOS 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.3.1 
	-->
	</li>
  </ul>
</div>
</body>
</html>