]> begriffs open source - cmsis/blob - main/RTOS2/html/config_rtx5.html
Update documentation for branch main
[cmsis] / main / RTOS2 / html / config_rtx5.html
1 <!-- HTML header for doxygen 1.9.6-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
4 <head>
5 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6 <meta http-equiv="X-UA-Compatible" content="IE=11"/>
7 <meta name="viewport" content="width=device-width, initial-scale=1"/>
8 <title>CMSIS-RTOS2: Configure RTX v5</title>
9 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
10 <link href="tabs.css" rel="stylesheet" type="text/css"/>
11 <link href="extra_navtree.css" rel="stylesheet" type="text/css"/>
12 <link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
13 <link href="extra_search.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="jquery.js"></script>
15 <script type="text/javascript" src="dynsections.js"></script>
16 <script type="text/javascript" src="printComponentTabs.js"></script>
17 <script type="text/javascript" src="footer.js"></script>
18 <script type="text/javascript" src="navtree.js"></script>
19 <link href="navtree.css" rel="stylesheet" type="text/css"/>
20 <script type="text/javascript" src="resize.js"></script>
21 <script type="text/javascript" src="navtreedata.js"></script>
22 <script type="text/javascript" src="navtree.js"></script>
23 <link href="search/search.css" rel="stylesheet" type="text/css"/>
24 <script type="text/javascript" src="search/searchdata.js"></script>
25 <script type="text/javascript" src="search/search.js"></script>
26 <script type="text/javascript">
27 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
28   $(document).ready(function() { init_search(); });
29 /* @license-end */
30 </script>
31 <script type="text/javascript" src="darkmode_toggle.js"></script>
32 <link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
33 <link href="extra_navtree.css" rel="stylesheet" type="text/css"/>
34 <link href="extra_search.css" rel="stylesheet" type="text/css"/>
35 <link href="version.css" rel="stylesheet" type="text/css" />
36 <script type="text/javascript" src="../../version.js"></script>
37 </head>
38 <body>
39 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
40 <div id="titlearea">
41 <table cellspacing="0" cellpadding="0">
42  <tbody>
43  <tr style="height: 55px;">
44   <td id="projectlogo" style="padding: 1.5em;"><img alt="Logo" src="cmsis_logo_white_small.png"/></td>
45   <td style="padding-left: 1em; padding-bottom: 1em;padding-top: 1em;">
46    <div id="projectname">CMSIS-RTOS2
47    &#160;<span id="projectnumber"><script type="text/javascript">
48      <!--
49      writeHeader.call(this);
50      writeVersionDropdown.call(this, "CMSIS-RTOS2");
51      //-->
52     </script>
53    </span>
54    </div>
55    <div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation</div>
56   </td>
57    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
58         <span class="left">
59           <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
60           <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
61                onfocus="searchBox.OnSearchFieldFocus(true)" 
62                onblur="searchBox.OnSearchFieldFocus(false)" 
63                onkeyup="searchBox.OnSearchFieldChange(event)"/>
64           </span><span class="right">
65             <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
66           </span>
67         </div>
68 </td>
69   <!--END !PROJECT_NAME-->
70  </tr>
71  </tbody>
72 </table>
73 </div>
74 <!-- end header part -->
75 <div id="CMSISnav" class="tabs1">
76   <ul class="tablist">
77     <script type="text/javascript">
78       writeComponentTabs.call(this);
79     </script>
80   </ul>
81 </div>
82 <!-- Generated by Doxygen 1.9.6 -->
83 <script type="text/javascript">
84 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
85 var searchBox = new SearchBox("searchBox", "search/",'.html');
86 /* @license-end */
87 </script>
88 </div><!-- top -->
89 <div id="side-nav" class="ui-resizable side-nav-resizable">
90   <div id="nav-tree">
91     <div id="nav-tree-contents">
92       <div id="nav-sync" class="sync"></div>
93     </div>
94   </div>
95   <div id="splitbar" style="-moz-user-select:none;" 
96        class="ui-resizable-handle">
97   </div>
98 </div>
99 <script type="text/javascript">
100 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
101 $(document).ready(function(){initNavTree('config_rtx5.html',''); initResizable(); });
102 /* @license-end */
103 </script>
104 <div id="doc-content">
105 <!-- window showing the filter options -->
106 <div id="MSearchSelectWindow"
107      onmouseover="return searchBox.OnSearchSelectShow()"
108      onmouseout="return searchBox.OnSearchSelectHide()"
109      onkeydown="return searchBox.OnSearchSelectKey(event)">
110 </div>
111
112 <!-- iframe showing the search results (closed by default) -->
113 <div id="MSearchResultsWindow">
114 <div id="MSearchResults">
115 <div class="SRPage">
116 <div id="SRIndex">
117 <div id="SRResults"></div>
118 <div class="SRStatus" id="Loading">Loading...</div>
119 <div class="SRStatus" id="Searching">Searching...</div>
120 <div class="SRStatus" id="NoMatches">No Matches</div>
121 </div>
122 </div>
123 </div>
124 </div>
125
126 <div><div class="header">
127   <div class="headertitle"><div class="title">Configure RTX v5 </div></div>
128 </div><!--header-->
129 <div class="contents">
130 <div class="textblock"><p>The file "RTX_Config.h" defines the configuration parameters of CMSIS-RTOS RTX and must be part of every project that is using the CMSIS-RTOS RTX kernel. The configuration options are explained in detail in the following sections:</p><ul>
131 <li><a class="el" href="config_rtx5.html#systemConfig">System Configuration</a> covers system-wide settings for the global memory pool, tick frequency, ISR event buffer and round-robin thread switching as well as process isolation-related features.</li>
132 <li><a class="el" href="config_rtx5.html#threadConfig">Thread Configuration</a> provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html">Thread Management</a> functions.</li>
133 <li><a class="el" href="config_rtx5.html#timerConfig">Timer Configuration</a> provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html">Timer Management</a> functions.</li>
134 <li><a class="el" href="config_rtx5.html#eventFlagsConfig">Event Flags Configuration</a> provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__EventFlags.html">Event Flags</a> functions.</li>
135 <li><a class="el" href="config_rtx5.html#mutexConfig">Mutex Configuration</a> provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html">Mutex Management</a> functions.</li>
136 <li><a class="el" href="config_rtx5.html#semaphoreConfig">Semaphore Configuration</a> provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html">Semaphores</a> functions.</li>
137 <li><a class="el" href="config_rtx5.html#memPoolConfig">Memory Pool Configuration</a> provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html">Memory Pool</a> functions.</li>
138 <li><a class="el" href="config_rtx5.html#msgQueueConfig">Message Queue Configuration</a> provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__Message.html">Message Queue</a> functions.</li>
139 <li><a class="el" href="config_rtx5.html#evtrecConfig">Event Recorder Configuration</a> provides several parameters to configure RTX for usage with <a href="https://www.keil.com/pack/doc/compiler/EventRecorder/html/index.html" target="_blank"><b>Event Recorder</b></a>.</li>
140 </ul>
141 <p>The file "RTX_Config.c" contains default implementations of the functions osRtxIdleThread and osRtxErrorNotify. Both functions can simply be overwritten with a customized behavior by redefining them as part of the user code.</p>
142 <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, the annotations might lead to a more user-friendly graphical representation of the settings. The picture below shows the µVision <b>Configuration</b> <b>Wizard</b> view in MDK:</p>
143 <div class="image">
144 <img src="config_wizard.png" alt=""/>
145 <div class="caption">
146 RTX_Config.h in Configuration Wizard View</div></div>
147 <p>Alternatively one can provide configuration options using the compiler command line.</p>
148 <p>For example one can customize the used tick frequency to 100us by (overwriting) the configuration using </p><div class="fragment"><div class="line">cc -DOS_TICK_FREQ=100</div>
149 </div><!-- fragment --><h1><a class="anchor" id="systemConfig"></a>
150 System Configuration</h1>
151 <p>The system configuration covers system-wide settings for the global memory pool, tick frequency, ISR event buffer and round-robin thread switching.</p>
152 <p><b>System Configuration Options</b> </p><div class="image">
153 <img src="config_wizard_system.png" alt=""/>
154 <div class="caption">
155 RTX_Config.h: System Configuration</div></div>
156 <table class="markdownTable">
157 <tr class="markdownTableHead">
158 <th class="markdownTableHeadNone">Name   </th><th class="markdownTableHeadNone">#define   </th><th class="markdownTableHeadNone">Description    </th></tr>
159 <tr class="markdownTableRowOdd">
160 <td class="markdownTableBodyNone"><a class="el" href="config_rtx5.html#systemConfig_glob_mem">Global Dynamic Memory size [bytes]</a>   </td><td class="markdownTableBodyNone"><code>OS_DYNAMIC_MEM_SIZE</code>   </td><td class="markdownTableBodyNone">Defines the combined global dynamic memory size for the <a class="el" href="theory_of_operation.html#GlobalMemoryPool">Global Memory Pool</a>. Default value is <span class="XML-Token">32768</span>. Value range is <span class="XML-Token">[0-1073741824]</span> bytes, in multiples of <span class="XML-Token">8</span> bytes.    </td></tr>
161 <tr class="markdownTableRowEven">
162 <td class="markdownTableBodyNone">Kernel Tick Frequency (Hz)   </td><td class="markdownTableBodyNone"><code>OS_TICK_FREQ</code>   </td><td class="markdownTableBodyNone">Defines base time unit for delays and timeouts in Hz. Default value is <span class="XML-Token">1000</span> (1000 Hz = 1 ms period).    </td></tr>
163 <tr class="markdownTableRowOdd">
164 <td class="markdownTableBodyNone"><a class="el" href="config_rtx5.html#systemConfig_rr">Round-Robin Thread Switching</a>   </td><td class="markdownTableBodyNone"><code>OS_ROBIN_ENABLE</code>   </td><td class="markdownTableBodyNone">Enables Round-Robin Thread switching. Default value is <span class="XML-Token">1</span> (enabled).    </td></tr>
165 <tr class="markdownTableRowEven">
166 <td class="markdownTableBodyNone">&#160;&#160;&#160;Round-Robin Timeout   </td><td class="markdownTableBodyNone"><code>OS_ROBIN_TIMEOUT</code>   </td><td class="markdownTableBodyNone">Defines how long a thread will execute before a thread switch. Default value is <span class="XML-Token">5</span>. Value range is <span class="XML-Token">[1-1000]</span>.    </td></tr>
167 <tr class="markdownTableRowOdd">
168 <td class="markdownTableBodyNone"><a class="el" href="config_rtx5.html#safetyConfig_safety">Safety features (Source variant only)</a>   </td><td class="markdownTableBodyNone"><code>OS_SAFETY_FEATURES</code>   </td><td class="markdownTableBodyNone">Enables safety-related features as configured in this group. Default value is <span class="XML-Token">1</span> (enabled).    </td></tr>
169 <tr class="markdownTableRowEven">
170 <td class="markdownTableBodyNone">&#160;&#160;&#160;Safety class   </td><td class="markdownTableBodyNone"><code>OS_SAFETY_CLASS</code>   </td><td class="markdownTableBodyNone">Enables <a class="el" href="group__rtos__process__isolation__safety__class.html">Safety Classes</a> functionality. Default value is <span class="XML-Token">1</span> (enabled).    </td></tr>
171 <tr class="markdownTableRowOdd">
172 <td class="markdownTableBodyNone">&#160;&#160;&#160;MPU Protected Zone   </td><td class="markdownTableBodyNone"><code>OS_EXECUTION_ZONE</code>   </td><td class="markdownTableBodyNone">Enables <a class="el" href="group__rtos__process__isolation__mpu.html">MPU Protected Zones</a>. Default value is <span class="XML-Token">1</span> (enabled).    </td></tr>
173 <tr class="markdownTableRowEven">
174 <td class="markdownTableBodyNone">&#160;&#160;&#160;Thread Watchdog   </td><td class="markdownTableBodyNone"><code>OS_THREAD_WATCHDOG</code>   </td><td class="markdownTableBodyNone">Enables <a class="el" href="group__rtos__process__isolation__thread__wdt.html">Thread Watchdogs</a> functionality. Default value is <span class="XML-Token">1</span> (enabled).    </td></tr>
175 <tr class="markdownTableRowOdd">
176 <td class="markdownTableBodyNone">&#160;&#160;&#160;Object Pointer checking   </td><td class="markdownTableBodyNone"><code>OS_OBJ_PTR_CHECK</code>   </td><td class="markdownTableBodyNone">Enables verification of object pointer alignment and memory region. Default value is <span class="XML-Token">0</span> (disabled).    </td></tr>
177 <tr class="markdownTableRowEven">
178 <td class="markdownTableBodyNone">&#160;&#160;&#160;SVC Function Pointer checking   </td><td class="markdownTableBodyNone"><code>OS_SVC_PTR_CHECK</code>   </td><td class="markdownTableBodyNone">Enables verification of SVC function pointer alignment and memory region. Default value is <span class="XML-Token">0</span> (disabled).    </td></tr>
179 <tr class="markdownTableRowOdd">
180 <td class="markdownTableBodyNone"><a class="el" href="config_rtx5.html#systemConfig_isr_fifo">ISR FIFO Queue</a>   </td><td class="markdownTableBodyNone"><code>OS_ISR_FIFO_QUEUE</code>   </td><td class="markdownTableBodyNone">RTOS Functions called from ISR store requests to this buffer. Default value is <span class="XML-Token">16 entries</span>. Value range is <span class="XML-Token">[4-256]</span> entries in multiples of <span class="XML-Token">4</span>.    </td></tr>
181 <tr class="markdownTableRowEven">
182 <td class="markdownTableBodyNone"><a class="el" href="config_rtx5.html#systemConfig_usage_counters">Object Memory Usage Counters</a>   </td><td class="markdownTableBodyNone"><code>OS_OBJ_MEM_USAGE</code>   </td><td class="markdownTableBodyNone">Enables object memory usage counters to evaluate the maximum memory pool requirements individually for each RTOS object type. Default value is <span class="XML-Token">0</span> (disabled).   </td></tr>
183 </table>
184 <h2><a class="anchor" id="systemConfig_glob_mem"></a>
185 Global Dynamic Memory size [bytes]</h2>
186 <p>Refer to <a class="el" href="theory_of_operation.html#GlobalMemoryPool">Global Memory Pool</a>.</p>
187 <h2><a class="anchor" id="systemConfig_rr"></a>
188 Round-Robin Thread Switching</h2>
189 <p>RTX5 may be configured to use round-robin multitasking thread switching. Round-robin allows quasi-parallel execution of several threads of the <em>same</em> priority. Threads are not really executed concurrently, but are scheduled where the available CPU time is divided into time slices and RTX5 assigns a time slice to each thread. Because the time slice is typically short (only a few milliseconds), it appears as though threads execute simultaneously.</p>
190 <p>Round-robin thread switching functions as follows:</p><ul>
191 <li>the tick is preloaded with the timeout value when a thread switch occurs</li>
192 <li>the tick is decremented (if not already zero) each system tick if the same thread is still executing</li>
193 <li>when the tick reaches 0 it indicates that a timeout has occurred. If there is another thread ready with the <em>same</em> priority, then the system switches to that thread and the tick is preloaded with timeout again.</li>
194 </ul>
195 <p>In other words, threads execute for the duration of their time slice (unless a thread's time slice is given up). Then, RTX switches to the next thread that is in <b>READY</b> state and has the same priority. If no other thread with the same priority is ready to run, the current running thread resumes it execution.</p>
196 <p>Round-Robin multitasking is controlled with the <b>#define OS_ROBIN_ENABLE</b>. The time slice period is configured (in RTX timer ticks) with the <b>#define OS_ROBIN_TIMEOUT</b>.</p>
197 <h2><a class="anchor" id="safetyConfig_safety"></a>
198 Safety features (Source variant only)</h2>
199 <p>Safety features group in <a class="el" href="config_rtx5.html#systemConfig">System Configuration</a> enables individual selection of safety-related functionalities. It requires that RTX is used in the source variant.</p>
200 <p>It also includes:</p><ul>
201 <li>Thread functions: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaee8e6bed82cd58dad31bb90156182032">osThreadProtectPrivileged</a></li>
202 </ul>
203 <p><b>MPU Protected Zone</b><br  />
204  Enables <a class="el" href="group__rtos__process__isolation__mpu.html">MPU Protected Zones</a> functionality in the system. This includes:</p><ul>
205 <li>Thread attributes: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gaefca370070d0b1616421bc3311acfecc">osThreadZone</a></li>
206 <li>Thread functions: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga4101737fa4fd303d4b41fdca6b994f8e">osThreadGetZone</a>, <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga99ce311cc620c65fbac043d04dc7d755">osThreadTerminateZone</a></li>
207 <li>Zone Management: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga79d4b26de0bfcdaf142f83e585532f93">osZoneSetup_Callback</a></li>
208 </ul>
209 <p>When enabled, the MPU Protected Zone values also need to be specified for the threads created by the kernel:</p><ul>
210 <li>For Idle thread in <a class="el" href="config_rtx5.html#threadConfig">Thread Configuration</a></li>
211 <li>For Timer thread in <a class="el" href="config_rtx5.html#timerConfig">Timer Configuration</a></li>
212 </ul>
213 <p><b>Safety class</b><br  />
214  Enables <a class="el" href="group__rtos__process__isolation__safety__class.html">Safety Classes</a> functionality in the system RTOS. This includes:</p><ul>
215 <li>Object attributes: <a class="el" href="group__CMSIS__RTOS__Definitions.html#ga604fce4f5205f92c347eb62fcc216861">osSafetyClass</a></li>
216 <li>Kernel functions: <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gac7e3b012c15c55bda68e0dd96ad9cd72">osKernelProtect</a>, <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga2065364d1bc805a40e749430377df1e1">osKernelDestroyClass</a></li>
217 <li>Thread functions: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga1bfbef7da94ed4147d231e8d6eeb5f3e">osThreadGetClass</a>, <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gadadb56627094dbb07f6aeddf7d713fd9">osThreadSuspendClass</a>, <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#gadd0a06b459925eb5cdeab67b380a3970">osThreadResumeClass</a></li>
218 </ul>
219 <p>When enabled, the safety class values need to be specified for threads created by the kernel:</p><ul>
220 <li>For Idle thread in <a class="el" href="config_rtx5.html#threadConfig">Thread Configuration</a></li>
221 <li>For Timer thread in <a class="el" href="config_rtx5.html#timerConfig">Timer Configuration</a></li>
222 </ul>
223 <p><b>Thread Watchdog</b><br  />
224  Enables <a class="el" href="group__rtos__process__isolation__thread__wdt.html">Thread Watchdogs</a> functionality in the system RTOS. This includes:</p><ul>
225 <li>Thread functions: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga8f4455b06afb95c1915f15266818a8c6">osThreadFeedWatchdog</a></li>
226 <li>Handler functions: <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga5a02770aaf65c7a3c7562c109884176a">osWatchdogAlarm_Handler</a></li>
227 </ul>
228 <p><b>Object Pointer checking</b><br  />
229  Enables verification of object pointer alignment and memory region.</p>
230 <p>Before accessing RTX objects the RTX kernel verifies that obtained object pointer is valid (at least not <span class="XML-Token">NULL</span>). When <em>Object Pointer checking</em> is enabled the kernel will additionally verify that the control block of the object is located in the memory section allocated for such object type, and that it is correctly aligned within that memory section.</p>
231 <p>If static memory allocation is used, the user shall place the control blocks of the objects into the correct named memory sections as described in <a class="el" href="theory_of_operation.html#StaticObjectMemory">Static Object Memory</a>. For object-specific and dynamic memory allocations the kernel will place the objects correctly.</p>
232 <p><b>SVC Function Pointer checking</b><br  />
233  Enables verification of SVC function pointer alignment and memory region.</p>
234 <p>Many kernel functions are executed in SVC context. Corresponding function pointers are placed by the kernel into a special named memory section. If <em>SVC Function Pointer checking</em> is enabled the kernel before calling an SVC function will additionally verify that its pointer is located in the expected memory section and is correctly aligned within that memory region.</p>
235 <h2><a class="anchor" id="systemConfig_isr_fifo"></a>
236 ISR FIFO Queue</h2>
237 <p>The RTX functions (<a class="el" href="theory_of_operation.html#CMSIS_RTOS_ISR_Calls">Calls from Interrupt Service Routines</a>), when called from and interrupt handler, store the request type and optional parameter to the ISR FIFO queue buffer to be processed later, after the interrupt handler exits.</p>
238 <p>The scheduler is activated immediately after the IRQ handler has finished its execution to process the requests stored to the FIFO queue buffer. The required size of this buffer depends on the number of functions that are called within the interrupt handler. An insufficient queue size will be caught by <b>osRtxErrorNotify</b> with error code <b>osRtxErrorISRQueueOverflow</b>.</p>
239 <h2><a class="anchor" id="systemConfig_usage_counters"></a>
240 Object Memory Usage Counters</h2>
241 <p>Object memory usage counters help to evaluate the maximum memory pool requirements for each object type, just like stack watermarking does for threads. The initial setup starts with a global memory pool for all object types. Consecutive runs of the application with object memory usage counters enabled, help to introduce object specific memory pools for each object type. Normally, this is required for applications that require a functional safety certification as global memory pools are not allowed in this case.</p>
242 <h1><a class="anchor" id="threadConfig"></a>
243 Thread Configuration</h1>
244 <p>The RTX5 provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html">Thread Management</a> functions.</p>
245 <p><b>Thread Configuration Options</b> </p><div class="image">
246 <img src="config_wizard_threads.png" alt=""/>
247 <div class="caption">
248 RTX_Config.h: Thread Configuration</div></div>
249 <p><br  />
250  </p><table class="markdownTable">
251 <tr class="markdownTableHead">
252 <th class="markdownTableHeadLeft">Option   </th><th class="markdownTableHeadLeft">#define   </th><th class="markdownTableHeadLeft">Description    </th></tr>
253 <tr class="markdownTableRowOdd">
254 <td class="markdownTableBodyLeft">Object specific Memory allocation   </td><td class="markdownTableBodyLeft"><code>OS_THREAD_OBJ_MEM</code>   </td><td class="markdownTableBodyLeft">Enables object specific memory allocation. See <a class="el" href="theory_of_operation.html#ObjectMemoryPool">Object-specific Memory Pools</a>.    </td></tr>
255 <tr class="markdownTableRowEven">
256 <td class="markdownTableBodyLeft">Number of user Threads   </td><td class="markdownTableBodyLeft"><code>OS_THREAD_NUM</code>   </td><td class="markdownTableBodyLeft">Defines maximum number of user threads that can be active at the same time. Applies to user threads with system provided memory for control blocks. Default value is <span class="XML-Token">1</span>. Value range is <span class="XML-Token">[1-1000]</span>.    </td></tr>
257 <tr class="markdownTableRowOdd">
258 <td class="markdownTableBodyLeft">Number of user Threads with default Stack size   </td><td class="markdownTableBodyLeft"><code>OS_THREAD_DEF_STACK_NUM</code>   </td><td class="markdownTableBodyLeft">Defines maximum number of user threads with default stack size and applies to user threads with <span class="XML-Token">0</span> stack size specified. Value range is <span class="XML-Token">[0-1000]</span>.    </td></tr>
259 <tr class="markdownTableRowEven">
260 <td class="markdownTableBodyLeft">Total Stack size [bytes] for user Threads with user-provided Stack size   </td><td class="markdownTableBodyLeft"><code>OS_THREAD_USER_STACK_SIZE</code>   </td><td class="markdownTableBodyLeft">Defines the combined stack size for user threads with user-provided stack size. Default value is <span class="XML-Token">0</span>. Value range is <span class="XML-Token">[0-1073741824]</span> Bytes, in multiples of <span class="XML-Token">8</span>.    </td></tr>
261 <tr class="markdownTableRowOdd">
262 <td class="markdownTableBodyLeft">Default Thread Stack size [bytes]   </td><td class="markdownTableBodyLeft"><code>OS_STACK_SIZE</code>   </td><td class="markdownTableBodyLeft">Defines stack size for threads with zero stack size specified. Default value is <span class="XML-Token">3072</span>. Value range is <span class="XML-Token">[96-1073741824]</span> Bytes, in multiples of <span class="XML-Token">8</span>.    </td></tr>
263 <tr class="markdownTableRowEven">
264 <td class="markdownTableBodyLeft">Idle Thread Stack size [bytes]   </td><td class="markdownTableBodyLeft"><code>OS_IDLE_THREAD_STACK_SIZE</code>   </td><td class="markdownTableBodyLeft">Defines stack size for Idle thread. Default value is <span class="XML-Token">512</span>. Value range is <span class="XML-Token">[72-1073741824]</span> bytes, in multiples of <span class="XML-Token">8</span>.    </td></tr>
265 <tr class="markdownTableRowOdd">
266 <td class="markdownTableBodyLeft">Idle Thread TrustZone Module ID   </td><td class="markdownTableBodyLeft"><code>OS_IDLE_THREAD_TZ_MOD_ID</code>   </td><td class="markdownTableBodyLeft">Defines the <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#a697f2aad6119d655d212ea10245ae394">TrustZone Module ID</a> the Idle Thread shall use. This needs to be set to a non-zero value if the Idle Thread need to call secure functions. Default value is <span class="XML-Token">0</span>.    </td></tr>
267 <tr class="markdownTableRowEven">
268 <td class="markdownTableBodyLeft">Idle Thread Safety Class   </td><td class="markdownTableBodyLeft"><code>OS_IDLE_THREAD_CLASS</code>   </td><td class="markdownTableBodyLeft">Defines the the <a class="el" href="group__rtos__process__isolation__safety__class.html">Safety Class</a> for the Idle thread. Applied only if Safety Class functionality is enabled in <a class="el" href="config_rtx5.html#systemConfig">System Configuration</a>. Default value is <span class="XML-Token">0</span>.    </td></tr>
269 <tr class="markdownTableRowOdd">
270 <td class="markdownTableBodyLeft">Idle Thread Zone   </td><td class="markdownTableBodyLeft"><code>OS_IDLE_THREAD_ZONE</code>   </td><td class="markdownTableBodyLeft">Defines the <a class="el" href="group__rtos__process__isolation__mpu.html">MPU Protected Zone</a> for the Idle thread. Applied only if MPU protected Zone functionality is enabled in <a class="el" href="config_rtx5.html#systemConfig">System Configuration</a>. Default value is <span class="XML-Token">0</span>.    </td></tr>
271 <tr class="markdownTableRowEven">
272 <td class="markdownTableBodyLeft">Stack overrun checking   </td><td class="markdownTableBodyLeft"><code>OS_STACK_CHECK</code>   </td><td class="markdownTableBodyLeft">Enable stack overrun checks at thread switch.    </td></tr>
273 <tr class="markdownTableRowOdd">
274 <td class="markdownTableBodyLeft">Stack usage watermark   </td><td class="markdownTableBodyLeft"><code>OS_STACK_WATERMARK</code>   </td><td class="markdownTableBodyLeft">Initialize thread stack with watermark pattern for analyzing stack usage. Enabling this option increases significantly the execution time of thread creation.    </td></tr>
275 <tr class="markdownTableRowEven">
276 <td class="markdownTableBodyLeft">Processor mode for Thread execution   </td><td class="markdownTableBodyLeft"><code>OS_PRIVILEGE_MODE</code>   </td><td class="markdownTableBodyLeft">Controls the default processor mode when not specified through thread attributes <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga4c028e5c3f4d86d237a1e09ceaf84792">osThreadUnprivileged</a> or <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7c2b7db42d23e4f56132e0ed739d02e5">osThreadPrivileged</a>. Default value is <span class="XML-Token">Unprivileged</span> mode. Value range is <span class="XML-Token">[0=Unprivileged; 1=Privileged]</span> mode.   </td></tr>
277 </table>
278 <h2><a class="anchor" id="threadConfig_countstack"></a>
279 Configuration of Thread Count and Stack Space</h2>
280 <p>The RTX5 kernel uses a separate stack space for each thread and provides two methods for defining the stack requirements:</p><ul>
281 <li><b>Static allocation</b>: when <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ad7c9b42355a4c8b9467130ab3fb19e43">osThreadAttr_t::stack_mem</a> and <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#aacbc9a219f2d6870e9ce89bb93f975c9">osThreadAttr_t::stack_size</a> specify a memory area which is used for the thread stack. <b>Attention:</b> The stack memory provided must be 64-bit aligned, i.e. by using uint64_t for declaration.</li>
282 <li><b>Dynamic allocation</b>: when <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#structosThreadAttr__t">osThreadAttr_t</a> is NULL or <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ad7c9b42355a4c8b9467130ab3fb19e43">osThreadAttr_t::stack_mem</a> is NULL, the system allocates the stack memory from:<ul>
283 <li>Object-specific Memory Pool (default Stack size) when "Object specific Memory allocation" is enabled and "Number of
284        user Threads with default Stack size" is not <span class="XML-Token">0</span> and <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#aacbc9a219f2d6870e9ce89bb93f975c9">osThreadAttr_t::stack_size</a> is <span class="XML-Token">0</span> (or <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#structosThreadAttr__t">osThreadAttr_t</a> is NULL).</li>
285 <li>Object-specific Memory Pool (user-provided Stack size) when "Object specific Memory allocation" is enabled and "Total
286        Stack size for user..." is not <span class="XML-Token">0</span> and <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#aacbc9a219f2d6870e9ce89bb93f975c9">osThreadAttr_t::stack_size</a> is not <span class="XML-Token">0</span>.</li>
287 <li>Global Memory Pool when "Object specific Memory allocation" is disabled or (<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#aacbc9a219f2d6870e9ce89bb93f975c9">osThreadAttr_t::stack_size</a> is not <span class="XML-Token">0</span> and "Total Stack size for user..." is <span class="XML-Token">0</span>) or (<a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#aacbc9a219f2d6870e9ce89bb93f975c9">osThreadAttr_t::stack_size</a> is <span class="XML-Token">0</span> and "Number of user Threads with default Stack size" is <span class="XML-Token">0</span>).</li>
288 </ul>
289 </li>
290 </ul>
291 <p><a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#structosThreadAttr__t">osThreadAttr_t</a> is a parameter of the function <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga48d68b8666d99d28fa646ee1d2182b8f">osThreadNew</a>.</p>
292 <dl class="section note"><dt>Note</dt><dd>Before the RTX kernel is started by the <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga9ae2cc00f0d89d7b6a307bba942b5221">osKernelStart()</a> function, the main stack defined in startup_<em>device</em>.s is used. The main stack is also used for:<ul>
293 <li>user application calls to RTX functions in <b>thread</b> <b>mode</b> using SVC calls</li>
294 <li>interrupt/exception handlers.</li>
295 </ul>
296 </dd></dl>
297 <h2><a class="anchor" id="threadConfig_ovfcheck"></a>
298 Stack Overflow Checking</h2>
299 <p>RTX5 implements a software stack overflow checking that traps stack overruns. Stack is used for return addresses and automatic variables. Extensive usage or incorrect stack configuration may cause a stack overflow. Software stack overflow checking is controlled with the define <code>OS_STACK_CHECK</code>.</p>
300 <p>If a stack overflow is detected, the function osRtxErrorNotify with error code osRtxErrorStackOverflow is called. By default, this function is implemented as an endless loop and will practically stop code execution.</p>
301 <h2><a class="anchor" id="threadConfig_watermark"></a>
302 Stack Usage Watermark</h2>
303 <p>RTX5 initializes thread stack with a watermark pattern (0xCC) when a thread is created. This allows the debugger to determine the maximum stack usage for each thread. It is typically used during development but removed from the final application. Stack usage watermark is controlled with the define <code>OS_STACK_WATERMARK</code>.</p>
304 <p>Enabling this option significantly increases the execution time of <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga48d68b8666d99d28fa646ee1d2182b8f">osThreadNew</a> (depends on thread stack size).</p>
305 <h2><a class="anchor" id="threadConfig_procmode"></a>
306 Processor Mode for Thread Execution</h2>
307 <p>RTX5 allows to execute threads in unprivileged or privileged processor mode. The processor mode is configured for all threads with the define <code>OS_PRIVILEGE_MODE</code>.</p>
308 <p>It is also possible to specify the privilege level for individual threads. For that use <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga4c028e5c3f4d86d237a1e09ceaf84792">osThreadUnprivileged</a> and <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga7c2b7db42d23e4f56132e0ed739d02e5">osThreadPrivileged</a> defines in the <em>attr_bits</em> of <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#structosThreadAttr__t">osThreadAttr_t</a> argument when creating a thread with <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#ga48d68b8666d99d28fa646ee1d2182b8f">osThreadNew</a>.</p>
309 <p>In <b>unprivileged</b> processor mode, the application software:</p><ul>
310 <li>has limited access to the MSR and MRS instructions, and cannot use the CPS instruction.</li>
311 <li>cannot access the system timer, NVIC, or system control block.</li>
312 <li>might have restricted access to memory or peripherals.</li>
313 </ul>
314 <p>In <b>privileged</b> processor mode, the application software can use all the instructions and has access to all resources.</p>
315 <h1><a class="anchor" id="timerConfig"></a>
316 Timer Configuration</h1>
317 <p>RTX5 provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__TimerMgmt.html">Timer Management</a> functions.</p>
318 <p><b>Timer Configuration Options</b> </p><div class="image">
319 <img src="config_wizard_timer.png" alt=""/>
320 <div class="caption">
321 RTX_Config.h: Timer Configuration</div></div>
322 <table class="markdownTable">
323 <tr class="markdownTableHead">
324 <th class="markdownTableHeadNone">Name   </th><th class="markdownTableHeadNone">#define   </th><th class="markdownTableHeadNone">Description    </th></tr>
325 <tr class="markdownTableRowOdd">
326 <td class="markdownTableBodyNone">Object specific Memory allocation   </td><td class="markdownTableBodyNone"><code>OS_TIMER_OBJ_MEM</code>   </td><td class="markdownTableBodyNone">Enables object specific memory allocation.    </td></tr>
327 <tr class="markdownTableRowEven">
328 <td class="markdownTableBodyNone">Number of Timer objects   </td><td class="markdownTableBodyNone"><code>OS_TIMER_NUM</code>   </td><td class="markdownTableBodyNone">Defines maximum number of objects that can be active at the same time. Applies to objects with system provided memory for control blocks. Value range is <span class="XML-Token">[1-1000]</span>.    </td></tr>
329 <tr class="markdownTableRowOdd">
330 <td class="markdownTableBodyNone">Timer Thread Priority   </td><td class="markdownTableBodyNone"><code>OS_TIMER_THREAD_PRIO</code>   </td><td class="markdownTableBodyNone">Defines priority for timer thread. Default value is <span class="XML-Token">40</span>. Value range is <span class="XML-Token">[8-48]</span>, in multiples of <span class="XML-Token">8</span>. The numbers have the following priority correlation: <span class="XML-Token">8=Low</span>; <span class="XML-Token">16=Below Normal</span>; <span class="XML-Token">24=Normal</span>; <span class="XML-Token">32=Above Normal</span>; <span class="XML-Token">40=High</span>; <span class="XML-Token">48=Realtime</span>    </td></tr>
331 <tr class="markdownTableRowEven">
332 <td class="markdownTableBodyNone">Timer Thread Stack size [bytes]   </td><td class="markdownTableBodyNone"><code>OS_TIMER_THREAD_STACK_SIZE</code>   </td><td class="markdownTableBodyNone">Defines stack size for Timer thread. May be set to 0 when timers are not used. Default value is <span class="XML-Token">512</span>. Value range is <span class="XML-Token">[0-1073741824]</span>, in multiples of <span class="XML-Token">8</span>.    </td></tr>
333 <tr class="markdownTableRowOdd">
334 <td class="markdownTableBodyNone">Timer Thread TrustZone Module ID   </td><td class="markdownTableBodyNone"><code>OS_TIMER_THREAD_TZ_MOD_ID</code>   </td><td class="markdownTableBodyNone">Defines the <a class="el" href="group__CMSIS__RTOS__ThreadMgmt.html#a697f2aad6119d655d212ea10245ae394">TrustZone Module ID</a> the Timer Thread shall use. This needs to be set to a non-zero value if any Timer Callbacks need to call secure functions. Default value is <span class="XML-Token">0</span>.    </td></tr>
335 <tr class="markdownTableRowEven">
336 <td class="markdownTableBodyNone">Timer Thread Safety Class   </td><td class="markdownTableBodyNone"><code>OS_TIMER_THREAD_CLASS</code>   </td><td class="markdownTableBodyNone">Defines the the <a class="el" href="group__rtos__process__isolation__safety__class.html">Safety Class</a> for the Timer thread. Applied only if Safety class functionality is enabled in <a class="el" href="config_rtx5.html#systemConfig">System Configuration</a>. Default value is <span class="XML-Token">0</span>.    </td></tr>
337 <tr class="markdownTableRowOdd">
338 <td class="markdownTableBodyNone">Timer Thread Zone   </td><td class="markdownTableBodyNone"><code>OS_TIMER_THREAD_ZONE</code>   </td><td class="markdownTableBodyNone">Defines the <a class="el" href="group__rtos__process__isolation__mpu.html">MPU Protected Zone</a> for the Timer thread. Applied only if MPU protected Zone functionality is enabled in <a class="el" href="config_rtx5.html#systemConfig">System Configuration</a>. Default value is <span class="XML-Token">0</span>.    </td></tr>
339 <tr class="markdownTableRowEven">
340 <td class="markdownTableBodyNone">Timer Callback Queue entries   </td><td class="markdownTableBodyNone"><code>OS_TIMER_CB_QUEUE</code>   </td><td class="markdownTableBodyNone">Number of concurrent active timer callback functions. May be set to 0 when timers are not used. Default value is <span class="XML-Token">4</span>. Value range is <span class="XML-Token">[0-256]</span>.   </td></tr>
341 </table>
342 <h2><a class="anchor" id="timerConfig_obj"></a>
343 Object-specific memory allocation</h2>
344 <p>See <a class="el" href="theory_of_operation.html#ObjectMemoryPool">Object-specific Memory Pools</a>.</p>
345 <h2><a class="anchor" id="timerConfig_user"></a>
346 User Timer Thread</h2>
347 <p>The RTX5 function <b>osRtxTimerThread</b> executes callback functions when a time period expires. The priority of the timer subsystem within the complete RTOS system is inherited from the priority of the <b>osRtxTimerThread</b>. This is configured by <code>OS_TIMER_THREAD_PRIO</code>. Stack for callback functions is supplied by <b>osRtxTimerThread</b>. <code>OS_TIMER_THREAD_STACK_SIZE</code> must satisfy the stack requirements of the callback function with the highest stack usage.</p>
348 <h1><a class="anchor" id="eventFlagsConfig"></a>
349 Event Flags Configuration</h1>
350 <p>RTX5 provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__EventFlags.html">Event Flags</a> functions.</p>
351 <p><b>Event Configuration Options</b> </p><div class="image">
352 <img src="config_wizard_eventFlags.png" alt=""/>
353 <div class="caption">
354 RTX_Config.h: Event Flags Configuration</div></div>
355 <table class="markdownTable">
356 <tr class="markdownTableHead">
357 <th class="markdownTableHeadNone">Name   </th><th class="markdownTableHeadNone">#define   </th><th class="markdownTableHeadNone">Description    </th></tr>
358 <tr class="markdownTableRowOdd">
359 <td class="markdownTableBodyNone">Object specific Memory allocation   </td><td class="markdownTableBodyNone"><code>OS_EVFLAGS_OBJ_MEM</code>   </td><td class="markdownTableBodyNone">Enables object specific memory allocation. See <a class="el" href="theory_of_operation.html#ObjectMemoryPool">Object-specific Memory Pools</a>.    </td></tr>
360 <tr class="markdownTableRowEven">
361 <td class="markdownTableBodyNone">Number of Event Flags objects   </td><td class="markdownTableBodyNone"><code>OS_EVFLAGS_NUM</code>   </td><td class="markdownTableBodyNone">Defines maximum number of objects that can be active at the same time. Applies to objects with system provided memory for control blocks. Value range is <span class="XML-Token">[1-1000]</span>.   </td></tr>
362 </table>
363 <h2><a class="anchor" id="eventFlagsConfig_obj"></a>
364 Object-specific memory allocation</h2>
365 <p>When object-specific memory is used, the pool size for all Event objects is specified by <code>OS_EVFLAGS_NUM</code>. Refer to <a class="el" href="theory_of_operation.html#ObjectMemoryPool">Object-specific Memory Pools</a>.</p>
366 <h1><a class="anchor" id="mutexConfig"></a>
367 Mutex Configuration</h1>
368 <p>RTX5 provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__MutexMgmt.html">Mutex Management</a> functions.</p>
369 <p><b>Mutex Configuration Options</b> </p><div class="image">
370 <img src="config_wizard_mutex.png" alt=""/>
371 <div class="caption">
372 RTX_Config.h: Mutex Configuration</div></div>
373 <table class="markdownTable">
374 <tr class="markdownTableHead">
375 <th class="markdownTableHeadNone">Name   </th><th class="markdownTableHeadNone">#define   </th><th class="markdownTableHeadNone">Description    </th></tr>
376 <tr class="markdownTableRowOdd">
377 <td class="markdownTableBodyNone">Object specific Memory allocation   </td><td class="markdownTableBodyNone"><code>OS_MUTEX_OBJ_MEM</code>   </td><td class="markdownTableBodyNone">Enables object specific memory allocation. See <a class="el" href="theory_of_operation.html#ObjectMemoryPool">Object-specific Memory Pools</a>.    </td></tr>
378 <tr class="markdownTableRowEven">
379 <td class="markdownTableBodyNone">Number of Mutex objects   </td><td class="markdownTableBodyNone"><code>OS_MUTEX_NUM</code>   </td><td class="markdownTableBodyNone">Defines maximum number of objects that can be active at the same time. Applies to objects with system provided memory for control blocks. Value range is <span class="XML-Token">[1-1000]</span>.   </td></tr>
380 </table>
381 <h2><a class="anchor" id="mutexConfig_obj"></a>
382 Object-specific Memory Allocation</h2>
383 <p>When object-specific memory is used, the pool size for all Mutex objects is specified by <code>OS_MUTEX_NUM</code>. Refer to <a class="el" href="theory_of_operation.html#ObjectMemoryPool">Object-specific Memory Pools</a>.</p>
384 <h1><a class="anchor" id="semaphoreConfig"></a>
385 Semaphore Configuration</h1>
386 <p>RTX5 provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__SemaphoreMgmt.html">Semaphores</a> functions.</p>
387 <p><b>Semaphore Configuration Options</b> </p><div class="image">
388 <img src="config_wizard_semaphore.png" alt=""/>
389 <div class="caption">
390 RTX_Config.h: Semaphore Configuration</div></div>
391 <table class="markdownTable">
392 <tr class="markdownTableHead">
393 <th class="markdownTableHeadNone">Name   </th><th class="markdownTableHeadNone">#define   </th><th class="markdownTableHeadNone">Description    </th></tr>
394 <tr class="markdownTableRowOdd">
395 <td class="markdownTableBodyNone">Object specific Memory allocation   </td><td class="markdownTableBodyNone"><code>OS_SEMAPHORE_OBJ_MEM</code>   </td><td class="markdownTableBodyNone">Enables object specific memory allocation. See <a class="el" href="theory_of_operation.html#ObjectMemoryPool">Object-specific Memory Pools</a>.    </td></tr>
396 <tr class="markdownTableRowEven">
397 <td class="markdownTableBodyNone">Number of Semaphore objects   </td><td class="markdownTableBodyNone"><code>OS_SEMAPHORE_NUM</code>   </td><td class="markdownTableBodyNone">Defines maximum number of objects that can be active at the same time. Applies to objects with system provided memory for control blocks. Value range is <span class="XML-Token">[1-1000]</span>.   </td></tr>
398 </table>
399 <h2><a class="anchor" id="semaphoreConfig_obj"></a>
400 Object-specific memory allocation</h2>
401 <p>When Object-specific Memory is used, the pool size for all Semaphore objects is specified by <code>OS_SEMAPHORE_NUM</code>. Refer to <a class="el" href="theory_of_operation.html#ObjectMemoryPool">Object-specific Memory Pools</a>.</p>
402 <h1><a class="anchor" id="memPoolConfig"></a>
403 Memory Pool Configuration</h1>
404 <p>RTX5 provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__PoolMgmt.html">Memory Pool</a> functions.</p>
405 <p><b>Memory Pool Configuration Options</b> </p><div class="image">
406 <img src="config_wizard_memPool.png" alt=""/>
407 <div class="caption">
408 RTX_Config.h: Memory Pool Configuration</div></div>
409 <table class="markdownTable">
410 <tr class="markdownTableHead">
411 <th class="markdownTableHeadNone">Name   </th><th class="markdownTableHeadNone">#define   </th><th class="markdownTableHeadNone">Description    </th></tr>
412 <tr class="markdownTableRowOdd">
413 <td class="markdownTableBodyNone">Object specific Memory allocation   </td><td class="markdownTableBodyNone"><code>OS_MEMPOOL_OBJ_MEM</code>   </td><td class="markdownTableBodyNone">Enables object specific memory allocation. See <a class="el" href="theory_of_operation.html#ObjectMemoryPool">Object-specific Memory Pools</a>.    </td></tr>
414 <tr class="markdownTableRowEven">
415 <td class="markdownTableBodyNone">Number of Memory Pool objects   </td><td class="markdownTableBodyNone"><code>OS_MEMPOOL_NUM</code>   </td><td class="markdownTableBodyNone">Defines maximum number of objects that can be active at the same time. Applies to objects with system provided memory for control blocks. Value range is <span class="XML-Token">[1-1000]</span>.    </td></tr>
416 <tr class="markdownTableRowOdd">
417 <td class="markdownTableBodyNone">Data Storage Memory size [bytes]   </td><td class="markdownTableBodyNone"><code>OS_MEMPOOL_DATA_SIZE</code>   </td><td class="markdownTableBodyNone">Defines the combined data storage memory size. Applies to objects with system provided memory for data storage. Default value is <span class="XML-Token">0</span>. Value range is <span class="XML-Token">[0-1073741824]</span>, in multiples of <span class="XML-Token">8</span>.   </td></tr>
418 </table>
419 <h2><a class="anchor" id="memPoolConfig_obj"></a>
420 Object-specific memory allocation</h2>
421 <p>When object-specific memory is used, the number of pools for all MemoryPool objects is specified by <code>OS_MEMPOOL_NUM</code>. The total storage size reserved for all pools is configured in <code>OS_MEMPOOL_DATA_SIZE</code>. Refer to <a class="el" href="theory_of_operation.html#ObjectMemoryPool">Object-specific Memory Pools</a>.</p>
422 <h1><a class="anchor" id="msgQueueConfig"></a>
423 Message Queue Configuration</h1>
424 <p>RTX5 provides several parameters to configure the <a class="el" href="group__CMSIS__RTOS__Message.html">Message Queue</a> functions.</p>
425 <p><b>MessageQueue Configuration Options</b> </p><div class="image">
426 <img src="config_wizard_msgQueue.png" alt=""/>
427 <div class="caption">
428 RTX_Config.h: Message Queue Configuration</div></div>
429 <table class="markdownTable">
430 <tr class="markdownTableHead">
431 <th class="markdownTableHeadNone">Name   </th><th class="markdownTableHeadNone">#define   </th><th class="markdownTableHeadNone">Description    </th></tr>
432 <tr class="markdownTableRowOdd">
433 <td class="markdownTableBodyNone">Object specific Memory allocation   </td><td class="markdownTableBodyNone"><code>OS_MSGQUEUE_OBJ_MEM</code>   </td><td class="markdownTableBodyNone">Enables object specific memory allocation. See <a class="el" href="theory_of_operation.html#ObjectMemoryPool">Object-specific Memory Pools</a>.    </td></tr>
434 <tr class="markdownTableRowEven">
435 <td class="markdownTableBodyNone">Number of Message Queue objects   </td><td class="markdownTableBodyNone"><code>OS_MSGQUEUE_NUM</code>   </td><td class="markdownTableBodyNone">Defines maximum number of objects that can be active at the same time. Applies to objects with system provided memory for control blocks. Value range is <span class="XML-Token">[1-1000]</span>.    </td></tr>
436 <tr class="markdownTableRowOdd">
437 <td class="markdownTableBodyNone">Data Storage Memory size [bytes]   </td><td class="markdownTableBodyNone"><code>OS_MSGQUEUE_DATA_SIZE</code>   </td><td class="markdownTableBodyNone">Defines the combined data storage memory size. Applies to objects with system provided memory for data storage. Default value is <span class="XML-Token">0</span>. Value range is <span class="XML-Token">[0-1073741824]</span>, in multiples of <span class="XML-Token">8</span>.   </td></tr>
438 </table>
439 <h2><a class="anchor" id="msgQueueConfig_obj"></a>
440 Object-specific memory allocation</h2>
441 <p>When Object-specific Memory is used, the number of queues for all Message Queue objects is specified by <code>OS_MSGQUEUE_NUM</code>. The total storage size reserved for all queues is configured in <code>OS_MSGQUEUE_DATA_SIZE</code>. Refer to <a class="el" href="theory_of_operation.html#ObjectMemoryPool">Object-specific Memory Pools</a>.</p>
442 <h1><a class="anchor" id="evtrecConfig"></a>
443 Event Recorder Configuration</h1>
444 <p>This section describes the configuration settings for the <a href="https://www.keil.com/pack/doc/compiler/EventRecorder/html/index.html" target="_blank">Event Recorder</a> annotations. The usage requires the source variant of RTX5; refer to <a class="el" href="cre_rtx_proj.html#cre_rtx_proj_er">Add Event Recorder Visibility</a> for more information.</p>
445 <h2><a class="anchor" id="evtrecConfigGlobIni"></a>
446 Global Configuration</h2>
447 <p>Initialize Event Recorder during the <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae818f6611d25ba3140bede410a52d659">osKernelInitialize</a> and optionally start event recording.</p>
448 <div class="image">
449 <img src="config_wizard_evtrecGlobIni.png" alt=""/>
450 <div class="caption">
451 RTX_Config.h: Global Configuration</div></div>
452 <p><br  />
453 </p>
454 <table class="markdownTable">
455 <tr class="markdownTableHead">
456 <th class="markdownTableHeadNone">Name   </th><th class="markdownTableHeadNone">#define   </th><th class="markdownTableHeadNone">Description    </th></tr>
457 <tr class="markdownTableRowOdd">
458 <td class="markdownTableBodyNone">Global Initialization   </td><td class="markdownTableBodyNone"><code>OS_EVR_INIT</code>   </td><td class="markdownTableBodyNone">Initialize Event Recorder during <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#gae818f6611d25ba3140bede410a52d659">osKernelInitialize</a>.    </td></tr>
459 <tr class="markdownTableRowEven">
460 <td class="markdownTableBodyNone">Start Recording   </td><td class="markdownTableBodyNone"><code>OS_EVR_START</code>   </td><td class="markdownTableBodyNone">Start event recording after initialization.   </td></tr>
461 </table>
462 <dl class="section note"><dt>Note</dt><dd><ul>
463 <li>If <b>Global Initialization (<code>OS_EVR_INIT</code>)</b> is set, an explicit call to <code>EventRecorderInitialize</code> is not required.</li>
464 <li>If <b>Start Recording (<code>OS_EVR_START</code>)</b> is set, an explicit call to <code>EventRecorderStart</code> is not required. You may call the function <code>EventRecorderStop</code> to stop recording.</li>
465 </ul>
466 </dd></dl>
467 <p><b>Global Event Filter Setup</b></p>
468 <p>These event filter settings are applied to all software component numbers, including MDK middleware and user components.</p>
469 <div class="image">
470 <img src="config_wizard_evtrecGlobEvtFiltSetup.png" alt=""/>
471 <div class="caption">
472 RTX_Config.h: Global Event Filter Setup</div></div>
473 <p><br  />
474 </p>
475 <table class="markdownTable">
476 <tr class="markdownTableHead">
477 <th class="markdownTableHeadNone">Name   </th><th class="markdownTableHeadNone">#define   </th><th class="markdownTableHeadNone">Description    </th></tr>
478 <tr class="markdownTableRowOdd">
479 <td class="markdownTableBodyNone">Error events   </td><td class="markdownTableBodyNone"><code>OS_EVR_LEVEL</code>   </td><td class="markdownTableBodyNone">Enable error events.    </td></tr>
480 <tr class="markdownTableRowEven">
481 <td class="markdownTableBodyNone">API function call events   </td><td class="markdownTableBodyNone"><code>OS_EVR_LEVEL</code>   </td><td class="markdownTableBodyNone">Enable API function call events.    </td></tr>
482 <tr class="markdownTableRowOdd">
483 <td class="markdownTableBodyNone">Operation events   </td><td class="markdownTableBodyNone"><code>OS_EVR_LEVEL</code>   </td><td class="markdownTableBodyNone">Enable operation events.    </td></tr>
484 <tr class="markdownTableRowEven">
485 <td class="markdownTableBodyNone">Detailed operation events   </td><td class="markdownTableBodyNone"><code>OS_EVR_LEVEL</code>   </td><td class="markdownTableBodyNone">Enable detailed operation events.   </td></tr>
486 </table>
487 <dl class="section note"><dt>Note</dt><dd>You may disable event recording for specific software components by calling the function <code>EventRecorderDisable</code>.</dd></dl>
488 <p><b>RTOS Event Filter Setup</b></p>
489 <p>These event filter settings are applied to specific RTX component groups with sub-options for:</p><ul>
490 <li>Error events</li>
491 <li>API function call events</li>
492 <li>Operation events</li>
493 <li>Detailed operation events</li>
494 </ul>
495 <p>The generation of events must be enabled as explained under <a class="el" href="config_rtx5.html#evtrecConfigEvtGen">RTOS Event Generation</a>.</p>
496 <div class="image">
497 <img src="config_wizard_evtrecRTOSEvtFilterSetup.png" alt=""/>
498 <div class="caption">
499 RTX_Config.h: RTOS Event Filter Setup</div></div>
500 <p><br  />
501 </p>
502 <table class="markdownTable">
503 <tr class="markdownTableHead">
504 <th class="markdownTableHeadNone">Name   </th><th class="markdownTableHeadNone">#define   </th><th class="markdownTableHeadNone">Description    </th></tr>
505 <tr class="markdownTableRowOdd">
506 <td class="markdownTableBodyNone">Memory Management   </td><td class="markdownTableBodyNone"><code>OS_EVR_MEMORY_LEVEL</code>   </td><td class="markdownTableBodyNone">Recording level for Memory Management events.    </td></tr>
507 <tr class="markdownTableRowEven">
508 <td class="markdownTableBodyNone">Kernel   </td><td class="markdownTableBodyNone"><code>OS_EVR_KERNEL_LEVEL</code>   </td><td class="markdownTableBodyNone">Recording level for Kernel events.    </td></tr>
509 <tr class="markdownTableRowOdd">
510 <td class="markdownTableBodyNone">Thread   </td><td class="markdownTableBodyNone"><code>OS_EVR_THREAD_LEVEL</code>   </td><td class="markdownTableBodyNone">Recording level for Thread events.    </td></tr>
511 <tr class="markdownTableRowEven">
512 <td class="markdownTableBodyNone">Generic Wait   </td><td class="markdownTableBodyNone"><code>OS_EVR_WAIT_LEVEL</code>   </td><td class="markdownTableBodyNone">Recording level for Generic Wait events.    </td></tr>
513 <tr class="markdownTableRowOdd">
514 <td class="markdownTableBodyNone">Thread Flags   </td><td class="markdownTableBodyNone"><code>OS_EVR_THFLAGS_LEVEL</code>   </td><td class="markdownTableBodyNone">Recording level for Thread Flags events.    </td></tr>
515 <tr class="markdownTableRowEven">
516 <td class="markdownTableBodyNone">Event Flags   </td><td class="markdownTableBodyNone"><code>OS_EVR_EVFLAGS_LEVEL</code>   </td><td class="markdownTableBodyNone">Recording level for Event Flags events.    </td></tr>
517 <tr class="markdownTableRowOdd">
518 <td class="markdownTableBodyNone">Timer   </td><td class="markdownTableBodyNone"><code>OS_EVR_TIMER_LEVEL</code>   </td><td class="markdownTableBodyNone">Recording level for Timer events.    </td></tr>
519 <tr class="markdownTableRowEven">
520 <td class="markdownTableBodyNone">Mutex   </td><td class="markdownTableBodyNone"><code>OS_EVR_MUTEX_LEVEL</code>   </td><td class="markdownTableBodyNone">Recording level for Mutex events.    </td></tr>
521 <tr class="markdownTableRowOdd">
522 <td class="markdownTableBodyNone">Semaphore   </td><td class="markdownTableBodyNone"><code>OS_EVR_SEMAPHORE_LEVEL</code>   </td><td class="markdownTableBodyNone">Recording level for Semaphore events.    </td></tr>
523 <tr class="markdownTableRowEven">
524 <td class="markdownTableBodyNone">Memory Pool   </td><td class="markdownTableBodyNone"><code>OS_EVR_MEMPOOL_LEVEL</code>   </td><td class="markdownTableBodyNone">Recording level for Memory Pool events.    </td></tr>
525 <tr class="markdownTableRowOdd">
526 <td class="markdownTableBodyNone">Message Queue   </td><td class="markdownTableBodyNone"><code>OS_EVR_MSGQUEUE_LEVEL</code>   </td><td class="markdownTableBodyNone">Recording level for Message Queue events.   </td></tr>
527 </table>
528 <h2><a class="anchor" id="evtrecConfigEvtGen"></a>
529 RTOS Event Generation</h2>
530 <p>Enable the event generation for specific RTX component groups. This requires the RTX source variant (refer to <a class="el" href="cre_rtx_proj.html#cre_rtx_proj_er">Add Event Recorder Visibility</a> for more information).</p>
531 <div class="image">
532 <img src="config_wizard_evtrecGeneration.png" alt=""/>
533 <div class="caption">
534 RTX_Config.h: Event generation configuration</div></div>
535 <p><br  />
536 </p>
537 <table class="markdownTable">
538 <tr class="markdownTableHead">
539 <th class="markdownTableHeadNone">Name   </th><th class="markdownTableHeadNone">#define   </th><th class="markdownTableHeadNone">Description    </th></tr>
540 <tr class="markdownTableRowOdd">
541 <td class="markdownTableBodyNone">Memory Management   </td><td class="markdownTableBodyNone"><code>OS_EVR_MEMORY</code>   </td><td class="markdownTableBodyNone">Enables Memory Management events generation.    </td></tr>
542 <tr class="markdownTableRowEven">
543 <td class="markdownTableBodyNone">Kernel   </td><td class="markdownTableBodyNone"><code>OS_EVR_KERNEL</code>   </td><td class="markdownTableBodyNone">Enables Kernel events generation.    </td></tr>
544 <tr class="markdownTableRowOdd">
545 <td class="markdownTableBodyNone">Thread   </td><td class="markdownTableBodyNone"><code>OS_EVR_THREAD</code>   </td><td class="markdownTableBodyNone">Enables Thread events generation.    </td></tr>
546 <tr class="markdownTableRowEven">
547 <td class="markdownTableBodyNone">Generic Wait   </td><td class="markdownTableBodyNone"><code>OS_EVR_WAIT</code>   </td><td class="markdownTableBodyNone">Enables Generic Wait events generation.    </td></tr>
548 <tr class="markdownTableRowOdd">
549 <td class="markdownTableBodyNone">Thread Flags   </td><td class="markdownTableBodyNone"><code>OS_EVR_THFLAGS</code>   </td><td class="markdownTableBodyNone">Enables Thread Flags events generation.    </td></tr>
550 <tr class="markdownTableRowEven">
551 <td class="markdownTableBodyNone">Event Flags   </td><td class="markdownTableBodyNone"><code>OS_EVR_EVFLAGS</code>   </td><td class="markdownTableBodyNone">Enables Event Flags events generation.    </td></tr>
552 <tr class="markdownTableRowOdd">
553 <td class="markdownTableBodyNone">Timer   </td><td class="markdownTableBodyNone"><code>OS_EVR_TIMER</code>   </td><td class="markdownTableBodyNone">Enables Timer events generation.    </td></tr>
554 <tr class="markdownTableRowEven">
555 <td class="markdownTableBodyNone">Mutex   </td><td class="markdownTableBodyNone"><code>OS_EVR_MUTEX</code>   </td><td class="markdownTableBodyNone">Enables Mutex events generation.    </td></tr>
556 <tr class="markdownTableRowOdd">
557 <td class="markdownTableBodyNone">Semaphore   </td><td class="markdownTableBodyNone"><code>OS_EVR_SEMAPHORE</code>   </td><td class="markdownTableBodyNone">Enables Semaphore events generation.    </td></tr>
558 <tr class="markdownTableRowEven">
559 <td class="markdownTableBodyNone">Memory Pool   </td><td class="markdownTableBodyNone"><code>OS_EVR_MEMPOOL</code>   </td><td class="markdownTableBodyNone">Enables Memory Pool events generation.    </td></tr>
560 <tr class="markdownTableRowOdd">
561 <td class="markdownTableBodyNone">Message Queue   </td><td class="markdownTableBodyNone"><code>OS_EVR_MSGQUEUE</code>   </td><td class="markdownTableBodyNone">Enables Message Queue events generation.   </td></tr>
562 </table>
563 <dl class="section note"><dt>Note</dt><dd>If event generation for a component is disabled, the code that generates the related events is not included. Thus, <a class="el" href="config_rtx5.html#evtrecConfigGlobIni">filters</a> for this component will have no effect and the debugger is unable to display any events for the related component group.</dd></dl>
564 <h2><a class="anchor" id="systemConfig_event_recording"></a>
565 Manual event configuration</h2>
566 <p>To disable the generation of events for a specific RTX API call, use the following #define settings (from <b>rtx_evr.h</b>) and add these manually to the <b>RTX_Config.h</b> file:</p>
567 <p><b>Memory</b> <b>events</b> <br  />
568 <code>EVR_RTX_MEMORY_INIT_DISABLE</code>, <code>EVR_RTX_MEMORY_ALLOC_DISABLE</code>, <code>EVR_RTX_MEMORY_FREE_DISABLE</code>, <code>EVR_RTX_MEMORY_BLOCK_INIT_DISABLE</code>, <code>EVR_RTX_MEMORY_BLOCK_ALLOC_DISABLE</code>, <code>EVR_RTX_MEMORY_BLOCK_FREE_DISABLE</code> </p>
569 <p><b>Kernel</b> <b>events</b> <br  />
570 <code>EVR_RTX_KERNEL_ERROR_DISABLE</code>, <code>EVR_RTX_KERNEL_INITIALIZE_DISABLE</code>, <code>EVR_RTX_KERNEL_INITIALIZED_DISABLE</code>, <code>EVR_RTX_KERNEL_GET_INFO_DISABLE</code>, <code>EVR_RTX_KERNEL_INFO_RETRIEVED_DISABLE</code>, <code>EVR_RTX_KERNEL_GET_STATE_DISABLE</code>, <code>EVR_RTX_KERNEL_START_DISABLE</code>, <code>EVR_RTX_KERNEL_STARTED_DISABLE</code>, <code>EVR_RTX_KERNEL_LOCK_DISABLE</code>, <code>EVR_RTX_KERNEL_LOCKED_DISABLE</code>, <code>EVR_RTX_KERNEL_UNLOCK_DISABLE</code>, <code>EVR_RTX_KERNEL_UNLOCKED_DISABLE</code>, <code>EVR_RTX_KERNEL_RESTORE_LOCK_DISABLE</code>, <code>EVR_RTX_KERNEL_LOCK_RESTORED_DISABLE</code>, <code>EVR_RTX_KERNEL_SUSPEND_DISABLE</code>, <code>EVR_RTX_KERNEL_SUSPENDED_DISABLE</code>, <code>EVR_RTX_KERNEL_RESUME_DISABLE</code>, <code>EVR_RTX_KERNEL_RESUMED_DISABLE</code>, <code>EVR_RTX_KERNEL_PROTECT_DISABLE</code>, <code>EVR_RTX_KERNEL_PROTECTED_DISABLE</code>, <code>EVR_RTX_KERNEL_GET_TICK_COUNT_DISABLE</code>, <code>EVR_RTX_KERNEL_GET_TICK_FREQ_DISABLE</code>, <code>EVR_RTX_KERNEL_GET_SYS_TIMER_COUNT_DISABLE</code>, <code>EVR_RTX_KERNEL_GET_SYS_TIMER_FREQ_DISABLE</code>, <code>EVR_RTX_KERNEL_DESTROY_CLASS_DISABLE</code>, <code>EVR_RTX_KERNEL_ERROR_NOTIFY_DISABLE</code> </p>
571 <p><b>Thread</b> <b>events</b> <br  />
572 <code>EVR_RTX_THREAD_ERROR_DISABLE</code>, <code>EVR_RTX_THREAD_NEW_DISABLE</code>, <code>EVR_RTX_THREAD_CREATED_DISABLE</code>, <code>EVR_RTX_THREAD_GET_NAME_DISABLE</code>, <code>EVR_RTX_THREAD_GET_ID_DISABLE</code>, <code>EVR_RTX_THREAD_GET_STATE_DISABLE</code>, <code>EVR_RTX_THREAD_GET_CLASS_DISABLE</code>, <code>EVR_RTX_THREAD_GET_ZONE_DISABLE</code>, <code>EVR_RTX_THREAD_GET_STACK_SIZE_DISABLE</code>, <code>EVR_RTX_THREAD_GET_STACK_SPACE_DISABLE</code>, <code>EVR_RTX_THREAD_SET_PRIORITY_DISABLE</code>, <code>EVR_RTX_THREAD_PRIORITY_UPDATED_DISABLE</code>, <code>EVR_RTX_THREAD_GET_PRIORITY_DISABLE</code>, <code>EVR_RTX_THREAD_YIELD_DISABLE</code>, <code>EVR_RTX_THREAD_SUSPEND_DISABLE</code>, <code>EVR_RTX_THREAD_SUSPENDED_DISABLE</code>, <code>EVR_RTX_THREAD_RESUME_DISABLE</code>, <code>EVR_RTX_THREAD_RESUMED_DISABLE</code>, <code>EVR_RTX_THREAD_DETACH_DISABLE</code>, <code>EVR_RTX_THREAD_DETACHED_DISABLE</code>, <code>EVR_RTX_THREAD_JOIN_DISABLE</code>, <code>EVR_RTX_THREAD_JOIN_PENDING_DISABLE</code>, <code>EVR_RTX_THREAD_JOINED_DISABLE</code>, <code>EVR_RTX_THREAD_BLOCKED_DISABLE</code>, <code>EVR_RTX_THREAD_UNBLOCKED_DISABLE</code>, <code>EVR_RTX_THREAD_PREEMPTED_DISABLE</code>, <code>EVR_RTX_THREAD_SWITCHED_DISABLE</code>, <code>EVR_RTX_THREAD_EXIT_DISABLE</code>, <code>EVR_RTX_THREAD_TERMINATE_DISABLE</code>, <code>EVR_RTX_THREAD_DESTROYED_DISABLE</code>, <code>EVR_RTX_THREAD_GET_COUNT_DISABLE</code>, <code>EVR_RTX_THREAD_ENUMERATE_DISABLE</code>, <code>EVR_RTX_THREAD_FEED_WATCHDOG_DISABLE</code>, <code>EVR_RTX_THREAD_FEED_WATCHDOG_DONE_DISABLE</code>, <code>EVR_RTX_THREAD_WATCHDOG_EXPIRED_DISABLE</code>, <code>EVR_RTX_THREAD_PROTECT_PRIVILEGED_DISABLE</code>, <code>EVR_RTX_THREAD_PRIVILEGED_PROTECTED_DISABLE</code>, <code>EVR_RTX_THREAD_SUSPEND_CLASS_DISABLE</code>, <code>EVR_RTX_THREAD_RESUME_CLASS_DISABLE</code>, <code>EVR_RTX_THREAD_TERMINATE_ZONE_DISABLE</code> </p>
573 <p><b>Generic</b> <b>wait</b> <b>events</b> <br  />
574 <code>EVR_RTX_DELAY_ERROR_DISABLE</code>, <code>EVR_RTX_DELAY_DISABLE</code>, <code>EVR_RTX_DELAY_UNTIL_DISABLE</code>, <code>EVR_RTX_DELAY_STARTED_DISABLE</code>, <code>EVR_RTX_DELAY_UNTIL_STARTED_DISABLE</code>, <code>EVR_RTX_DELAY_COMPLETED_DISABLE</code> </p>
575 <p><b>Thread</b> <b>flag</b> <b>events</b> <br  />
576 <code>EVR_RTX_THREAD_FLAGS_ERROR_DISABLE</code>, <code>EVR_RTX_THREAD_FLAGS_SET_DISABLE</code>, <code>EVR_RTX_THREAD_FLAGS_SET_DONE_DISABLE</code>, <code>EVR_RTX_THREAD_FLAGS_CLEAR_DISABLE</code>, <code>EVR_RTX_THREAD_FLAGS_CLEAR_DONE_DISABLE</code>, <code>EVR_RTX_THREAD_FLAGS_GET_DISABLE</code>, <code>EVR_RTX_THREAD_FLAGS_WAIT_DISABLE</code>, <code>EVR_RTX_THREAD_FLAGS_WAIT_PENDING_DISABLE</code>, <code>EVR_RTX_THREAD_FLAGS_WAIT_TIMEOUT_DISABLE</code>, <code>EVR_RTX_THREAD_FLAGS_WAIT_COMPLETED_DISABLE</code>, <code>EVR_RTX_THREAD_FLAGS_WAIT_NOT_COMPLETED_DISABLE</code> </p>
577 <p><b>Event</b> <b>flag</b> <b>events</b> <br  />
578 <code>EVR_RTX_EVENT_FLAGS_ERROR_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_NEW_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_CREATED_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_GET_NAME_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_SET_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_SET_DONE_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_CLEAR_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_CLEAR_DONE_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_GET_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_WAIT_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_WAIT_PENDING_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_WAIT_TIMEOUT_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_WAIT_COMPLETED_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_WAIT_NOT_COMPLETED_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_DELETE_DISABLE</code>, <code>EVR_RTX_EVENT_FLAGS_DESTROYED_DISABLE</code> </p>
579 <p><b>Timer</b> <b>events</b> <br  />
580 <code>EVR_RTX_TIMER_ERROR_DISABLE</code>, <code>EVR_RTX_TIMER_CALLBACK_DISABLE</code>, <code>EVR_RTX_TIMER_NEW_DISABLE</code>, <code>EVR_RTX_TIMER_CREATED_DISABLE</code>, <code>EVR_RTX_TIMER_GET_NAME_DISABLE</code>, <code>EVR_RTX_TIMER_START_DISABLE</code>, <code>EVR_RTX_TIMER_STARTED_DISABLE</code>, <code>EVR_RTX_TIMER_STOP_DISABLE</code>, <code>EVR_RTX_TIMER_STOPPED_DISABLE</code>, <code>EVR_RTX_TIMER_IS_RUNNING_DISABLE</code>, <code>EVR_RTX_TIMER_DELETE_DISABLE</code>, <code>EVR_RTX_TIMER_DESTROYED_DISABLE</code> </p>
581 <p><b>Mutex</b> <b>events</b> <br  />
582 <code>EVR_RTX_MUTEX_ERROR_DISABLE</code>, <code>EVR_RTX_MUTEX_NEW_DISABLE</code>, <code>EVR_RTX_MUTEX_CREATED_DISABLE</code>, <code>EVR_RTX_MUTEX_GET_NAME_DISABLE</code>, <code>EVR_RTX_MUTEX_ACQUIRE_DISABLE</code>, <code>EVR_RTX_MUTEX_ACQUIRE_PENDING_DISABLE</code>, <code>EVR_RTX_MUTEX_ACQUIRE_TIMEOUT_DISABLE</code>, <code>EVR_RTX_MUTEX_ACQUIRED_DISABLE</code>, <code>EVR_RTX_MUTEX_NOT_ACQUIRED_DISABLE</code>, <code>EVR_RTX_MUTEX_RELEASE_DISABLE</code>, <code>EVR_RTX_MUTEX_RELEASED_DISABLE</code>, <code>EVR_RTX_MUTEX_GET_OWNER_DISABLE</code>, <code>EVR_RTX_MUTEX_DELETE_DISABLE</code>, <code>EVR_RTX_MUTEX_DESTROYED_DISABLE</code> </p>
583 <p><b>Semaphore</b> <b>events</b> <br  />
584 <code>EVR_RTX_SEMAPHORE_ERROR_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_NEW_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_CREATED_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_GET_NAME_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_ACQUIRE_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_ACQUIRE_PENDING_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_ACQUIRE_TIMEOUT_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_ACQUIRED_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_NOT_ACQUIRED_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_RELEASE_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_RELEASED_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_GET_COUNT_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_DELETE_DISABLE</code>, <code>EVR_RTX_SEMAPHORE_DESTROYED_DISABLE</code> </p>
585 <p><b>Memory</b> <b>pool</b> <b>events</b> <br  />
586 <code>EVR_RTX_MEMORY_POOL_ERROR_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_NEW_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_CREATED_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_GET_NAME_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_ALLOC_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_ALLOC_PENDING_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_ALLOC_TIMEOUT_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_ALLOCATED_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_ALLOC_FAILED_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_FREE_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_DEALLOCATED_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_FREE_FAILED_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_GET_CAPACITY_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_GET_BLOCK_SZIE_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_GET_COUNT_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_GET_SPACE_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_DELETE_DISABLE</code>, <code>EVR_RTX_MEMORY_POOL_DESTROYED_DISABLE</code> </p>
587 <p><b>Message</b> <b>queue</b> <b>events</b> <br  />
588 <code>EVR_RTX_MESSAGE_QUEUE_ERROR_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_NEW_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_CREATED_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_GET_NAME_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_PUT_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_PUT_PENDING_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_PUT_TIMEOUT_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_INSERT_PENDING_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_INSERTED_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_NOT_INSERTED_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_GET_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_GET_PENDING_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_GET_TIMEOUT_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_RETRIEVED_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_NOT_RETRIEVED_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_GET_CAPACITY_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_GET_MSG_SIZE_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_GET_COUNT_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_GET_SPACE_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_RESET_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_RESET_DONE_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_DELETE_DISABLE</code>, <code>EVR_RTX_MESSAGE_QUEUE_DESTROYED_DISABLE</code> </p>
589 </div></div><!-- contents -->
590 </div><!-- PageDoc -->
591 </div><!-- doc-content -->
592 <!-- start footer part -->
593 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
594   <ul>
595     <li class="footer">
596       <script type="text/javascript">
597         <!--
598         writeFooter.call(this);
599         //-->
600       </script> 
601     </li>
602   </ul>
603 </div>
604 </body>
605 </html>