gnuk/ChibiOS_2.0.8/docs/html/group__config.html
2010-11-30 13:54:43 +09:00

871 lines
47 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>ChibiOS/RT: Configuration</title>
<link href="custom.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<table style="text-align: center; width: 100%;" border="0"
cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td style="width: 80px;"><img alt="ChibiOS/RT Logo" src="logo_small.png"></td>
<td><big><big>ChibiOS/RT</big></big><br><br>Architecture - Reference Manual - Guides</td>
<td style="width: 80px;"></td>
</tr>
</tbody>
</table>
<hr size="1">
<!-- Generated by Doxygen 1.7.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul class="tablist">
<li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Defines</a> </div>
<div class="headertitle">
<h1>Configuration<br/>
<small>
[<a class="el" href="group__kernel.html">Kernel</a>]</small>
</h1> </div>
</div>
<div class="contents">
<p><div class="dynheader">
Collaboration diagram for Configuration:</div>
<div class="dyncontent">
<center><table><tr><td><img src="group__config.png" border="0" alt="" usemap="#group____config"/>
<map name="group____config" id="group____config">
<area shape="rect" id="node1" href="group__kernel.html" title="Kernel" alt="" coords="5,5,59,32"/>
</map>
</td></tr></table></center>
</div>
</p>
<hr/><a name="_details"></a><h2>Description</h2>
<p>Kernel related settings and hooks. </p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga195ab8ff3340a18d4513cbaf915078f2">CH_FREQUENCY</a>&nbsp;&nbsp;&nbsp;1000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">System tick frequency. <a href="#ga195ab8ff3340a18d4513cbaf915078f2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga3c6800242611cf244a38c4a870e8515a">CH_TIME_QUANTUM</a>&nbsp;&nbsp;&nbsp;20</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Round robin interval. <a href="#ga3c6800242611cf244a38c4a870e8515a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gacc5d718a9ef515a18211ff2bcd0a31dc">CH_USE_NESTED_LOCKS</a>&nbsp;&nbsp;&nbsp;FALSE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Nested locks. <a href="#gacc5d718a9ef515a18211ff2bcd0a31dc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gac73902e3c40b375483f9dde71e83253d">CH_MEMCORE_SIZE</a>&nbsp;&nbsp;&nbsp;0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Managed RAM size. <a href="#gac73902e3c40b375483f9dde71e83253d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gaa5a3d403206b04dfa43ee769e8a220c6">CH_OPTIMIZE_SPEED</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">OS optimization. <a href="#gaa5a3d403206b04dfa43ee769e8a220c6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga7176099cb271e334cde4e3c4e256086b">CH_CURRP_REGISTER_CACHE</a>&nbsp;&nbsp;&nbsp;&quot;reg&quot;</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Exotic optimization. <a href="#ga7176099cb271e334cde4e3c4e256086b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga881045654c5c0b04081bf89da3fe4534">CH_USE_REGISTRY</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Threads registry APIs. <a href="#ga881045654c5c0b04081bf89da3fe4534"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gac5e6308f66b8fdb57f0c849ed22b3d95">CH_USE_WAITEXIT</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Threads synchronization APIs. <a href="#gac5e6308f66b8fdb57f0c849ed22b3d95"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gab88f410fdc6a67192194a8431d991b27">CH_USE_SEMAPHORES</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Semaphores APIs. <a href="#gab88f410fdc6a67192194a8431d991b27"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga866568c0387963f11c078a8d939c2284">CH_USE_SEMAPHORES_PRIORITY</a>&nbsp;&nbsp;&nbsp;FALSE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Semaphores queuing mode. <a href="#ga866568c0387963f11c078a8d939c2284"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gae9e6ff0fe1964761ea6e1bce51d8ee59">CH_USE_SEMSW</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Atomic semaphore API. <a href="#gae9e6ff0fe1964761ea6e1bce51d8ee59"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga4f461a7b5edbff2405b7b40d2bb238a6">CH_USE_MUTEXES</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mutexes APIs. <a href="#ga4f461a7b5edbff2405b7b40d2bb238a6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga24fd7fe539fd6094b5db3215e1721c9c">CH_USE_CONDVARS</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Conditional Variables APIs. <a href="#ga24fd7fe539fd6094b5db3215e1721c9c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gaccc2c032c409bced696f75877e270979">CH_USE_CONDVARS_TIMEOUT</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Conditional Variables APIs with timeout. <a href="#gaccc2c032c409bced696f75877e270979"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga5e3ac686cd33ad40a89aaaf97b3dc781">CH_USE_EVENTS</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Events Flags APIs. <a href="#ga5e3ac686cd33ad40a89aaaf97b3dc781"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga64a6ad752750f42fe2474d3e7f191a71">CH_USE_EVENTS_TIMEOUT</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Events Flags APIs with timeout. <a href="#ga64a6ad752750f42fe2474d3e7f191a71"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga3823e336736d522bbfaf780c86746482">CH_USE_MESSAGES</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Synchronous Messages APIs. <a href="#ga3823e336736d522bbfaf780c86746482"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gaf48947f33ed7a44a7701d84d83d94a1c">CH_USE_MESSAGES_PRIORITY</a>&nbsp;&nbsp;&nbsp;FALSE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Synchronous Messages queuing mode. <a href="#gaf48947f33ed7a44a7701d84d83d94a1c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga6cf1736db681617019f96c4c209d2716">CH_USE_MAILBOXES</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mailboxes APIs. <a href="#ga6cf1736db681617019f96c4c209d2716"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gaabe4bd52d2fd1b180ebba1d1e8243051">CH_USE_QUEUES</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">I/O Queues APIs. <a href="#gaabe4bd52d2fd1b180ebba1d1e8243051"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gaff85f4d919dac30a337ce2f34e2fa1af">CH_USE_MEMCORE</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Core Memory Manager APIs. <a href="#gaff85f4d919dac30a337ce2f34e2fa1af"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gaaeb266ab6131572f1d8f164bddf2da3f">CH_USE_HEAP</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Heap Allocator APIs. <a href="#gaaeb266ab6131572f1d8f164bddf2da3f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga4785d390f3a787916c5a5c41e953577d">CH_USE_MALLOC_HEAP</a>&nbsp;&nbsp;&nbsp;FALSE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-runtime allocator. <a href="#ga4785d390f3a787916c5a5c41e953577d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gac456517b37f104d2226fef50310c79f8">CH_USE_MEMPOOLS</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Memory Pools Allocator APIs. <a href="#gac456517b37f104d2226fef50310c79f8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gaae4996e24bbee7d66528671cec8b8749">CH_USE_DYNAMIC</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dynamic Threads APIs. <a href="#gaae4996e24bbee7d66528671cec8b8749"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gaef984ca3bfd8a71478ad55ce6e56a8bb">CH_DBG_ENABLE_CHECKS</a>&nbsp;&nbsp;&nbsp;FALSE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Debug option, parameters checks. <a href="#gaef984ca3bfd8a71478ad55ce6e56a8bb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gad602fd2546073869a10859158d865b9b">CH_DBG_ENABLE_ASSERTS</a>&nbsp;&nbsp;&nbsp;FALSE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Debug option, consistency checks. <a href="#gad602fd2546073869a10859158d865b9b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga8bc4cfd861131aeb3c880347d0068229">CH_DBG_ENABLE_TRACE</a>&nbsp;&nbsp;&nbsp;FALSE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Debug option, trace buffer. <a href="#ga8bc4cfd861131aeb3c880347d0068229"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gab93d9ee904f15d4f2c26ef2a1394a1d7">CH_DBG_ENABLE_STACK_CHECK</a>&nbsp;&nbsp;&nbsp;FALSE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Debug option, stack checks. <a href="#gab93d9ee904f15d4f2c26ef2a1394a1d7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga6a859dd249adfb66b9bbf809061ea06c">CH_DBG_FILL_THREADS</a>&nbsp;&nbsp;&nbsp;FALSE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Debug option, stacks initialization. <a href="#ga6a859dd249adfb66b9bbf809061ea06c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gadc9c00c2e5b6e766ded8dfa77c0c90c1">CH_DBG_THREADS_PROFILING</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Debug option, threads profiling. <a href="#gadc9c00c2e5b6e766ded8dfa77c0c90c1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gaba26fd717f33330fa56dcc7919a3f02f">THREAD_EXT_FIELDS</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Threads descriptor structure hook. <a href="#gaba26fd717f33330fa56dcc7919a3f02f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga758e6ac94f0ad132cd747325719e4d2f">THREAD_EXT_INIT</a>(tp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Threads initialization hook. <a href="#ga758e6ac94f0ad132cd747325719e4d2f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga5137c8f67dd4fa75e99824a95a3fa746">THREAD_EXT_EXIT</a>(tp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Threads finalization hook. <a href="#ga5137c8f67dd4fa75e99824a95a3fa746"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gae52e2c3230a9e87d16befd547c2f92ef">IDLE_LOOP_HOOK</a>()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Idle Loop hook. <a href="#gae52e2c3230a9e87d16befd547c2f92ef"></a><br/></td></tr>
</table>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="ga195ab8ff3340a18d4513cbaf915078f2"></a><!-- doxytag: member="chconf.h::CH_FREQUENCY" ref="ga195ab8ff3340a18d4513cbaf915078f2" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_FREQUENCY&nbsp;&nbsp;&nbsp;1000</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>System tick frequency. </p>
<p>Frequency of the system timer that drives the system ticks. This setting also defines the system tick time unit. </p>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00051">51</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga3c6800242611cf244a38c4a870e8515a"></a><!-- doxytag: member="chconf.h::CH_TIME_QUANTUM" ref="ga3c6800242611cf244a38c4a870e8515a" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_TIME_QUANTUM&nbsp;&nbsp;&nbsp;20</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Round robin interval. </p>
<p>This constant is the number of system ticks allowed for the threads before preemption occurs. Setting this value to zero disables the preemption for threads with equal priority and the round robin becomes cooperative. Note that higher priority threads can still preempt, the kernel is always preemptive.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Disabling the round robin preemption makes the kernel more compact and generally faster. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00066">66</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gacc5d718a9ef515a18211ff2bcd0a31dc"></a><!-- doxytag: member="chconf.h::CH_USE_NESTED_LOCKS" ref="gacc5d718a9ef515a18211ff2bcd0a31dc" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_NESTED_LOCKS&nbsp;&nbsp;&nbsp;FALSE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Nested locks. </p>
<p>If enabled then the use of nested <code><a class="el" href="group__system.html#ga9f6573c0763d1e4e97c63c62edad6e42" title="Enters the kernel lock mode.">chSysLock()</a></code> / <code><a class="el" href="group__system.html#ga5a257fa58a09815eb64a45e2dfbdc22e" title="Leaves the kernel lock mode.">chSysUnlock()</a></code> operations is allowed.<br/>
For performance and code size reasons the recommended setting is to leave this option disabled.<br/>
You may use this option if you need to merge ChibiOS/RT with external libraries that require nested lock/unlock operations.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>T he default is <code>FALSE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00081">81</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gac73902e3c40b375483f9dde71e83253d"></a><!-- doxytag: member="chconf.h::CH_MEMCORE_SIZE" ref="gac73902e3c40b375483f9dde71e83253d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_MEMCORE_SIZE&nbsp;&nbsp;&nbsp;0</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Managed RAM size. </p>
<p>Size of the RAM area to be managed by the OS. If set to zero then the whole available RAM is used. The core memory is made available to the heap allocator and/or can be used directly through the simplified core memory allocator.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>In order to let the OS manage the whole RAM the linker script must provide the <code>__heap_base__</code> and <code>__heap_end__</code> symbols. </dd>
<dd>
Requires <code>CH_USE_COREMEM</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00096">96</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
<p>Referenced by <a class="el" href="group__memcore.html#ga4dc59d68e345710573420dca5daa241c">core_init()</a>.</p>
</div>
</div>
<a class="anchor" id="gaa5a3d403206b04dfa43ee769e8a220c6"></a><!-- doxytag: member="chconf.h::CH_OPTIMIZE_SPEED" ref="gaa5a3d403206b04dfa43ee769e8a220c6" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_OPTIMIZE_SPEED&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>OS optimization. </p>
<p>If enabled then time efficient rather than space efficient code is used when two possible implementations exist.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>This is not related to the compiler optimization options. </dd>
<dd>
The default is <code>TRUE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00112">112</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga7176099cb271e334cde4e3c4e256086b"></a><!-- doxytag: member="chconf.h::CH_CURRP_REGISTER_CACHE" ref="ga7176099cb271e334cde4e3c4e256086b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_CURRP_REGISTER_CACHE&nbsp;&nbsp;&nbsp;&quot;reg&quot;</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Exotic optimization. </p>
<p>If defined then a CPU register is used as storage for the global <code>currp</code> variable. Caching this variable in a register greatly improves both space and time OS efficiency. A side effect is that one less register has to be saved during the context switch resulting in lower RAM usage and faster context switch.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>This option is only usable with the GCC compiler and is only useful on processors with many registers like ARM cores. </dd>
<dd>
If this option is enabled then ALL the libraries linked to the ChibiOS/RT code <b>must</b> be recompiled with the GCC option <code>-ffixed-&lt;reg&gt;</code>. </dd>
<dd>
This option must be enabled in the Makefile, it is listed here for documentation only. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00132">132</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga881045654c5c0b04081bf89da3fe4534"></a><!-- doxytag: member="chconf.h::CH_USE_REGISTRY" ref="ga881045654c5c0b04081bf89da3fe4534" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_REGISTRY&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Threads registry APIs. </p>
<p>If enabled then the registry APIs are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00146">146</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gac5e6308f66b8fdb57f0c849ed22b3d95"></a><!-- doxytag: member="chconf.h::CH_USE_WAITEXIT" ref="gac5e6308f66b8fdb57f0c849ed22b3d95" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_WAITEXIT&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Threads synchronization APIs. </p>
<p>If enabled then the <code><a class="el" href="group__threads.html#ga94a5727ecdbe0f738dfc8e1ede1c3409" title="Blocks the execution of the invoking thread until the specified thread terminates then the exit code ...">chThdWait()</a></code> function is included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00157">157</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gab88f410fdc6a67192194a8431d991b27"></a><!-- doxytag: member="chconf.h::CH_USE_SEMAPHORES" ref="gab88f410fdc6a67192194a8431d991b27" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_SEMAPHORES&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Semaphores APIs. </p>
<p>If enabled then the Semaphores APIs are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00167">167</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga866568c0387963f11c078a8d939c2284"></a><!-- doxytag: member="chconf.h::CH_USE_SEMAPHORES_PRIORITY" ref="ga866568c0387963f11c078a8d939c2284" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_SEMAPHORES_PRIORITY&nbsp;&nbsp;&nbsp;FALSE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Semaphores queuing mode. </p>
<p>If enabled then the threads are enqueued on semaphores by priority rather than in FIFO order.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>FALSE</code>. Enable this if you have special requirements. </dd>
<dd>
Requires <code>CH_USE_SEMAPHORES</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00179">179</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gae9e6ff0fe1964761ea6e1bce51d8ee59"></a><!-- doxytag: member="chconf.h::CH_USE_SEMSW" ref="gae9e6ff0fe1964761ea6e1bce51d8ee59" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_SEMSW&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Atomic semaphore API. </p>
<p>If enabled then the semaphores the <code><a class="el" href="group__semaphores.html#ga0dc7b4339506de346d67b4560b271e44" title="Performs atomic signal and wait operations on two semaphores.">chSemSignalWait()</a></code> API is included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd>
<dd>
Requires <code>CH_USE_SEMAPHORES</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00191">191</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga4f461a7b5edbff2405b7b40d2bb238a6"></a><!-- doxytag: member="chconf.h::CH_USE_MUTEXES" ref="ga4f461a7b5edbff2405b7b40d2bb238a6" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_MUTEXES&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Mutexes APIs. </p>
<p>If enabled then the mutexes APIs are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00201">201</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga24fd7fe539fd6094b5db3215e1721c9c"></a><!-- doxytag: member="chconf.h::CH_USE_CONDVARS" ref="ga24fd7fe539fd6094b5db3215e1721c9c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_CONDVARS&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Conditional Variables APIs. </p>
<p>If enabled then the conditional variables APIs are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd>
<dd>
Requires <code>CH_USE_MUTEXES</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00213">213</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gaccc2c032c409bced696f75877e270979"></a><!-- doxytag: member="chconf.h::CH_USE_CONDVARS_TIMEOUT" ref="gaccc2c032c409bced696f75877e270979" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_CONDVARS_TIMEOUT&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Conditional Variables APIs with timeout. </p>
<p>If enabled then the conditional variables APIs with timeout specification are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd>
<dd>
Requires <code>CH_USE_CONDVARS</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00225">225</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga5e3ac686cd33ad40a89aaaf97b3dc781"></a><!-- doxytag: member="chconf.h::CH_USE_EVENTS" ref="ga5e3ac686cd33ad40a89aaaf97b3dc781" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_EVENTS&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Events Flags APIs. </p>
<p>If enabled then the event flags APIs are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00235">235</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga64a6ad752750f42fe2474d3e7f191a71"></a><!-- doxytag: member="chconf.h::CH_USE_EVENTS_TIMEOUT" ref="ga64a6ad752750f42fe2474d3e7f191a71" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_EVENTS_TIMEOUT&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Events Flags APIs with timeout. </p>
<p>If enabled then the events APIs with timeout specification are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd>
<dd>
Requires <code>CH_USE_EVENTS</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00247">247</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga3823e336736d522bbfaf780c86746482"></a><!-- doxytag: member="chconf.h::CH_USE_MESSAGES" ref="ga3823e336736d522bbfaf780c86746482" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_MESSAGES&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Synchronous Messages APIs. </p>
<p>If enabled then the synchronous messages APIs are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00258">258</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gaf48947f33ed7a44a7701d84d83d94a1c"></a><!-- doxytag: member="chconf.h::CH_USE_MESSAGES_PRIORITY" ref="gaf48947f33ed7a44a7701d84d83d94a1c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_MESSAGES_PRIORITY&nbsp;&nbsp;&nbsp;FALSE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Synchronous Messages queuing mode. </p>
<p>If enabled then messages are served by priority rather than in FIFO order.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>FALSE</code>. Enable this if you have special requirements. </dd>
<dd>
Requires <code>CH_USE_MESSAGES</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00270">270</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga6cf1736db681617019f96c4c209d2716"></a><!-- doxytag: member="chconf.h::CH_USE_MAILBOXES" ref="ga6cf1736db681617019f96c4c209d2716" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_MAILBOXES&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Mailboxes APIs. </p>
<p>If enabled then the asynchronous messages (mailboxes) APIs are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd>
<dd>
Requires <code>CH_USE_SEMAPHORES</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00282">282</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gaabe4bd52d2fd1b180ebba1d1e8243051"></a><!-- doxytag: member="chconf.h::CH_USE_QUEUES" ref="gaabe4bd52d2fd1b180ebba1d1e8243051" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_QUEUES&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>I/O Queues APIs. </p>
<p>If enabled then the I/O queues APIs are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd>
<dd>
Requires <code>CH_USE_SEMAPHORES</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00293">293</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gaff85f4d919dac30a337ce2f34e2fa1af"></a><!-- doxytag: member="chconf.h::CH_USE_MEMCORE" ref="gaff85f4d919dac30a337ce2f34e2fa1af" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_MEMCORE&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Core Memory Manager APIs. </p>
<p>If enabled then the core memory manager APIs are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00304">304</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gaaeb266ab6131572f1d8f164bddf2da3f"></a><!-- doxytag: member="chconf.h::CH_USE_HEAP" ref="gaaeb266ab6131572f1d8f164bddf2da3f" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_HEAP&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Heap Allocator APIs. </p>
<p>If enabled then the memory heap allocator APIs are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd>
<dd>
Requires <code>CH_USE_COREMEM</code> and either <code>CH_USE_MUTEXES</code> or <code>CH_USE_SEMAPHORES</code>. </dd>
<dd>
Mutexes are recommended. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00318">318</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga4785d390f3a787916c5a5c41e953577d"></a><!-- doxytag: member="chconf.h::CH_USE_MALLOC_HEAP" ref="ga4785d390f3a787916c5a5c41e953577d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_MALLOC_HEAP&nbsp;&nbsp;&nbsp;FALSE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>C-runtime allocator. </p>
<p>If enabled the the heap allocator APIs just wrap the C-runtime <code>malloc()</code> and <code>free()</code> functions.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>FALSE</code>. </dd>
<dd>
Requires <code>CH_USE_HEAP</code>. </dd>
<dd>
The C-runtime may or may not require <code>CH_USE_COREMEM</code>, see the appropriate documentation. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00332">332</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gac456517b37f104d2226fef50310c79f8"></a><!-- doxytag: member="chconf.h::CH_USE_MEMPOOLS" ref="gac456517b37f104d2226fef50310c79f8" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_MEMPOOLS&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Memory Pools Allocator APIs. </p>
<p>If enabled then the memory pools allocator APIs are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00343">343</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gaae4996e24bbee7d66528671cec8b8749"></a><!-- doxytag: member="chconf.h::CH_USE_DYNAMIC" ref="gaae4996e24bbee7d66528671cec8b8749" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_USE_DYNAMIC&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Dynamic Threads APIs. </p>
<p>If enabled then the dynamic threads creation APIs are included in the kernel.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd>
<dd>
Requires <code>CH_USE_WAITEXIT</code>. </dd>
<dd>
Requires <code>CH_USE_HEAP</code> and/or <code>CH_USE_MEMPOOLS</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00356">356</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gaef984ca3bfd8a71478ad55ce6e56a8bb"></a><!-- doxytag: member="chconf.h::CH_DBG_ENABLE_CHECKS" ref="gaef984ca3bfd8a71478ad55ce6e56a8bb" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_DBG_ENABLE_CHECKS&nbsp;&nbsp;&nbsp;FALSE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Debug option, parameters checks. </p>
<p>If enabled then the checks on the API functions input parameters are activated.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>FALSE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00371">371</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gad602fd2546073869a10859158d865b9b"></a><!-- doxytag: member="chconf.h::CH_DBG_ENABLE_ASSERTS" ref="gad602fd2546073869a10859158d865b9b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_DBG_ENABLE_ASSERTS&nbsp;&nbsp;&nbsp;FALSE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Debug option, consistency checks. </p>
<p>If enabled then all the assertions in the kernel code are activated. This includes consistency checks inside the kernel, runtime anomalies and port-defined checks.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>FALSE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00383">383</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga8bc4cfd861131aeb3c880347d0068229"></a><!-- doxytag: member="chconf.h::CH_DBG_ENABLE_TRACE" ref="ga8bc4cfd861131aeb3c880347d0068229" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_DBG_ENABLE_TRACE&nbsp;&nbsp;&nbsp;FALSE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Debug option, trace buffer. </p>
<p>If enabled then the context switch circular trace buffer is activated.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>FALSE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00394">394</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gab93d9ee904f15d4f2c26ef2a1394a1d7"></a><!-- doxytag: member="chconf.h::CH_DBG_ENABLE_STACK_CHECK" ref="gab93d9ee904f15d4f2c26ef2a1394a1d7" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_DBG_ENABLE_STACK_CHECK&nbsp;&nbsp;&nbsp;FALSE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Debug option, stack checks. </p>
<p>If enabled then a runtime stack check is performed.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>FALSE</code>. </dd>
<dd>
The stack check is performed in a architecture/port dependent way. It may not be implemented or some ports. </dd>
<dd>
The default failure mode is to halt the system with the global <code>panic_msg</code> variable set to <code>NULL</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00408">408</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga6a859dd249adfb66b9bbf809061ea06c"></a><!-- doxytag: member="chconf.h::CH_DBG_FILL_THREADS" ref="ga6a859dd249adfb66b9bbf809061ea06c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_DBG_FILL_THREADS&nbsp;&nbsp;&nbsp;FALSE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Debug option, stacks initialization. </p>
<p>If enabled then the threads working area is filled with a byte value when a thread is created. This can be useful for the runtime measurement of the used stack.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>FALSE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00420">420</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gadc9c00c2e5b6e766ded8dfa77c0c90c1"></a><!-- doxytag: member="chconf.h::CH_DBG_THREADS_PROFILING" ref="gadc9c00c2e5b6e766ded8dfa77c0c90c1" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CH_DBG_THREADS_PROFILING&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Debug option, threads profiling. </p>
<p>If enabled then a field is added to the <code><a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a></code> structure that counts the system ticks occurred while executing the thread.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>The default is <code>TRUE</code>. </dd>
<dd>
This debug option is defaulted to TRUE because it is required by some test cases into the test suite. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00433">433</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="gaba26fd717f33330fa56dcc7919a3f02f"></a><!-- doxytag: member="chconf.h::THREAD_EXT_FIELDS" ref="gaba26fd717f33330fa56dcc7919a3f02f" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define THREAD_EXT_FIELDS</td>
</tr>
</table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">struct </span>{ \
<span class="comment">/* Add threads custom fields here.*/</span> \
};
</pre></div>
<p>Threads descriptor structure hook. </p>
<p>User fields added to the end of the <code><a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a></code> structure. </p>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00445">445</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga758e6ac94f0ad132cd747325719e4d2f"></a><!-- doxytag: member="chconf.h::THREAD_EXT_INIT" ref="ga758e6ac94f0ad132cd747325719e4d2f" args="(tp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define THREAD_EXT_INIT</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname">tp</td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
<span class="comment">/* Add threads initialization code here.*/</span> \
}
</pre></div>
<p>Threads initialization hook. </p>
<p>User initialization code added to the <code>chThdInit()</code> API.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>It is invoked from within <code>chThdInit()</code> and implicitily from all the threads creation APIs. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00459">459</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
<p>Referenced by <a class="el" href="group__threads.html#ga4f6ae58bb3cedfc03aacde6d49e49d35">init_thread()</a>.</p>
</div>
</div>
<a class="anchor" id="ga5137c8f67dd4fa75e99824a95a3fa746"></a><!-- doxytag: member="chconf.h::THREAD_EXT_EXIT" ref="ga5137c8f67dd4fa75e99824a95a3fa746" args="(tp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define THREAD_EXT_EXIT</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname">tp</td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
<span class="comment">/* Add threads finalization code here.*/</span> \
}
</pre></div>
<p>Threads finalization hook. </p>
<p>User finalization code added to the <code><a class="el" href="group__threads.html#ga24ab3a3a4d70214ee360867a1c3c75ac" title="Terminates the current thread by specifying an exit status code.">chThdExit()</a></code> API.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>It is inserted into lock zone. </dd>
<dd>
It is also invoked when the threads simply return in order to terminate. </dd></dl>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00473">473</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
<p>Referenced by <a class="el" href="group__threads.html#ga24ab3a3a4d70214ee360867a1c3c75ac">chThdExit()</a>.</p>
</div>
</div>
<a class="anchor" id="gae52e2c3230a9e87d16befd547c2f92ef"></a><!-- doxytag: member="chconf.h::IDLE_LOOP_HOOK" ref="gae52e2c3230a9e87d16befd547c2f92ef" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define IDLE_LOOP_HOOK</td>
<td>(</td>
<td class="paramname"></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
<span class="comment">/* Idle loop code here.*/</span> \
}
</pre></div>
<p>Idle Loop hook. </p>
<p>This hook is continuously invoked by the idle thread loop. </p>
<p>Definition at line <a class="el" href="chconf_8h_source.html#l00483">483</a> of file <a class="el" href="chconf_8h_source.html">chconf.h</a>.</p>
</div>
</div>
</div>
<hr size="1"><address style="text-align: right;"><small>
Generated on Sun Nov 28 2010 14:09:56 for ChibiOS/RT by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.7.1</small></address>
</body>
</html>