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

821 lines
62 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: Scheduler</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="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Defines</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<h1>Scheduler<br/>
<small>
[<a class="el" href="group__base.html">Base Kernel Services</a>]</small>
</h1> </div>
</div>
<div class="contents">
<p><div class="dynheader">
Collaboration diagram for Scheduler:</div>
<div class="dyncontent">
<center><table><tr><td><img src="group__scheduler.png" border="0" alt="" usemap="#group____scheduler"/>
<map name="group____scheduler" id="group____scheduler">
<area shape="rect" id="node1" href="group__base.html" title="Base Kernel Services" alt="" coords="7,7,132,33"/>
<area shape="rect" id="node2" href="group___s_t_m8___c_o_r_e.html" title="STM8 specific port code, structures and macros." alt="" coords="356,7,495,33"/>
</map>
</td></tr></table></center>
</div>
</p>
<hr/><a name="_details"></a><h2>Description</h2>
<p>This module provides the default portable scheduler code, scheduler functions can be individually captured by the port layer in order to provide architecture optimized equivalents. When a function is captured its default code is not built into the OS image, the optimized version is included instead. </p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_ready_list.html">ReadyList</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ready list header. <a href="struct_ready_list.html#_details">More...</a><br/></td></tr>
<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__scheduler.html#gae1c86078318e11c2fa57ee3c2ec69f61">RDY_OK</a>&nbsp;&nbsp;&nbsp;0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default thread wakeup low level message. <a href="#gae1c86078318e11c2fa57ee3c2ec69f61"></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__scheduler.html#gaf28d5427eeeb8f737cc7db495157780c">RDY_TIMEOUT</a>&nbsp;&nbsp;&nbsp;-1</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Low level message sent to a thread awakened by a timeout. <a href="#gaf28d5427eeeb8f737cc7db495157780c"></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__scheduler.html#ga3a606c833796229f23adcb3f6c404a81">RDY_RESET</a>&nbsp;&nbsp;&nbsp;-2</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Low level message sent to a thread awakened by a reset operation. <a href="#ga3a606c833796229f23adcb3f6c404a81"></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__scheduler.html#gaeb0aae94eb04f9809571cdab39679651">NOPRIO</a>&nbsp;&nbsp;&nbsp;0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ready list header priority. <a href="#gaeb0aae94eb04f9809571cdab39679651"></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__scheduler.html#gacfbd3f4098069329a23d7ec54a7fb8ab">IDLEPRIO</a>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Idle thread priority. <a href="#gacfbd3f4098069329a23d7ec54a7fb8ab"></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__scheduler.html#ga38aff897bc7950077d5985b3d4bcf4d5">LOWPRIO</a>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lowest user priority. <a href="#ga38aff897bc7950077d5985b3d4bcf4d5"></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__scheduler.html#gad6a6b28f0c1cf8e0da714ef771fb90a0">NORMALPRIO</a>&nbsp;&nbsp;&nbsp;64</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Normal user priority. <a href="#gad6a6b28f0c1cf8e0da714ef771fb90a0"></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__scheduler.html#ga0621c307e30868052b802fbc821297e8">HIGHPRIO</a>&nbsp;&nbsp;&nbsp;127</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Highest user priority. <a href="#ga0621c307e30868052b802fbc821297e8"></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__scheduler.html#gadb5ffd31ad382d3b83488e6b6780f03f">ABSPRIO</a>&nbsp;&nbsp;&nbsp;255</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Greatest possible priority. <a href="#gadb5ffd31ad382d3b83488e6b6780f03f"></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__scheduler.html#gad1ac15e9e5fc17810a94a779257f3d29">TIME_IMMEDIATE</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="group__types.html#gae3e32a98d431a02106616da3071832dd">systime_t</a>)-1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Zero time specification for some syscalls with a timeout specification. <a href="#gad1ac15e9e5fc17810a94a779257f3d29"></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__scheduler.html#gae1568cf3090c973c3bc47f86ae2f5afb">TIME_INFINITE</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="group__types.html#gae3e32a98d431a02106616da3071832dd">systime_t</a>)0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Infinite time specification for all the syscalls with a timeout specification. <a href="#gae1568cf3090c973c3bc47f86ae2f5afb"></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__scheduler.html#gaa3e744fe83212f48d7373b764b9abb2d">firstprio</a>(rlp)&nbsp;&nbsp;&nbsp;((rlp)-&gt;p_next-&gt;p_prio)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the priority of the first thread on the given ready list. <a href="#gaa3e744fe83212f48d7373b764b9abb2d"></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__scheduler.html#ga1a5fddde56420e8accd0c09c1abb32a7">currp</a>&nbsp;&nbsp;&nbsp;rlist.r_current</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Current thread pointer access macro. <a href="#ga1a5fddde56420e8accd0c09c1abb32a7"></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__scheduler.html#ga226bd98a30b2db31dbb1ecc572c18da2">setcurrp</a>(tp)&nbsp;&nbsp;&nbsp;(currp = (tp))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Current thread pointer change macro. <a href="#ga226bd98a30b2db31dbb1ecc572c18da2"></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__scheduler.html#ga146230c1fe7e6dab4bc6649f2a71444c">chSchIsRescRequiredI</a>()&nbsp;&nbsp;&nbsp;(firstprio(&amp;rlist.r_queue) &gt; currp-&gt;p_prio)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines if the current thread must reschedule. <a href="#ga146230c1fe7e6dab4bc6649f2a71444c"></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__scheduler.html#gac45d5a97963db4129d95645429e2dd8b">chSchCanYieldS</a>()&nbsp;&nbsp;&nbsp;(firstprio(&amp;rlist.r_queue) &gt;= currp-&gt;p_prio)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines if yielding is possible. <a href="#gac45d5a97963db4129d95645429e2dd8b"></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__scheduler.html#ga8fd763c1a004a010fc13575578edefbd">chSchDoYieldS</a>()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Yields the time slot. <a href="#ga8fd763c1a004a010fc13575578edefbd"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__scheduler.html#gab258cc2856e5f6bb125907cc23358fbd">scheduler_init</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scheduler initialization. <a href="#gab258cc2856e5f6bb125907cc23358fbd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_thread.html">Thread</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__scheduler.html#ga535d58cfb3436c8d4e4586c31c062298">chSchReadyI</a> (<a class="el" href="struct_thread.html">Thread</a> *tp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Inserts a thread in the Ready List. <a href="#ga535d58cfb3436c8d4e4586c31c062298"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__scheduler.html#ga97c1c514b755a1e71caf2f19c1ccf986">chSchGoSleepS</a> (<a class="el" href="group__types.html#ga52d7ed152360a74632afa37bbeeca7ca">tstate_t</a> newstate)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Puts the current thread to sleep into the specified state. <a href="#ga97c1c514b755a1e71caf2f19c1ccf986"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__types.html#ga35bcb0c321cd7bc45bf1a11fa17ebdd3">msg_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__scheduler.html#ga306e564f678c1a39139639490c77e78b">chSchGoSleepTimeoutS</a> (<a class="el" href="group__types.html#ga52d7ed152360a74632afa37bbeeca7ca">tstate_t</a> newstate, <a class="el" href="group__types.html#gae3e32a98d431a02106616da3071832dd">systime_t</a> time)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Puts the current thread to sleep into the specified state with timeout specification. <a href="#ga306e564f678c1a39139639490c77e78b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__scheduler.html#gae47a8819a21ef2d521124e76bfb37c95">chSchWakeupS</a> (<a class="el" href="struct_thread.html">Thread</a> *ntp, <a class="el" href="group__types.html#ga35bcb0c321cd7bc45bf1a11fa17ebdd3">msg_t</a> msg)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wakes up a thread. <a href="#gae47a8819a21ef2d521124e76bfb37c95"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__scheduler.html#ga0257cf203e72a766a52059750cb97e6e">chSchDoRescheduleI</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Switches to the first thread on the runnable queue. <a href="#ga0257cf203e72a766a52059750cb97e6e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__scheduler.html#ga4e38b4bee3d2330f6a0f1cdb7660af20">chSchRescheduleS</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs a reschedule if a higher priority thread is runnable. <a href="#ga4e38b4bee3d2330f6a0f1cdb7660af20"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__types.html#ga7556af1cb61728b53228fa3af1c851de">bool_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__scheduler.html#ga5fa012ef9d1e920983fe2aea2695a52a">chSchIsRescRequiredExI</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Evaluates if a reschedule is required. <a href="#ga5fa012ef9d1e920983fe2aea2695a52a"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_ready_list.html">ReadyList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__scheduler.html#ga752cd9dbf0dc458b8b532182836ca38d">rlist</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ready list header. <a href="#ga752cd9dbf0dc458b8b532182836ca38d"></a><br/></td></tr>
</table>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="gae1c86078318e11c2fa57ee3c2ec69f61"></a><!-- doxytag: member="chschd.h::RDY_OK" ref="gae1c86078318e11c2fa57ee3c2ec69f61" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define RDY_OK&nbsp;&nbsp;&nbsp;0</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Default thread wakeup low level message. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00039">39</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group___c_a_n.html#ga557d845167f6ab4f224b036860411db5">canReceive()</a>, <a class="el" href="group___c_a_n.html#gad9c686d19b4319ef586af3631b779c6c">canTransmit()</a>, <a class="el" href="group__condvars.html#gadddadb68e2a2ce061c7df0d647da9996">chCondSignal()</a>, <a class="el" href="group__events.html#ga90d702300eecee3d05f83e95b155c3ee">chEvtWaitAllTimeout()</a>, <a class="el" href="group__events.html#gaf690406ccc833e2c9235e7e2041a6715">chEvtWaitAnyTimeout()</a>, <a class="el" href="group__events.html#ga2944a7fc82e7cc15537f5a7c04f457d3">chEvtWaitOneTimeout()</a>, <a class="el" href="group__io__queues.html#ga142d0e885ac3a695f5f033a65f49abd0">chIQGetTimeout()</a>, <a class="el" href="group__io__queues.html#gaddf6fc39af7d905c9f23afde14d8d764">chIQReadTimeout()</a>, <a class="el" href="group__mailboxes.html#gadc562242a8854497a1f9539cb9ffea09">chMBFetchS()</a>, <a class="el" href="group__mailboxes.html#gaa9c91c0b781bec0df3540407d75b1bb3">chMBPostAheadS()</a>, <a class="el" href="group__mailboxes.html#gac6514c185ae87c2633132478ea48d689">chMBPostS()</a>, <a class="el" href="group__mutexes.html#gae9ae07165126c9f6c0ce0b17bdb53669">chMtxUnlock()</a>, <a class="el" href="group__io__queues.html#ga3df1926602eb698119990b311b097ad9">chOQPutTimeout()</a>, <a class="el" href="group__io__queues.html#ga1e90d41fa021107d72b1bed81186aae8">chOQWriteTimeout()</a>, <a class="el" href="group__semaphores.html#ga7ec0cbda23e49e2370e0b91f20baf05e">chSemSignal()</a>, <a class="el" href="group__threads.html#ga50b84e3e82a4e09c1066e1d422e4c780">chThdCreateFromHeap()</a>, <a class="el" href="group__threads.html#gad3ccc1a6f054c543258ed2fe97ed2f58">chThdCreateFromMemoryPool()</a>, <a class="el" href="group__threads.html#ga048e588238dd336c6059133b3d0c3435">chThdCreateStatic()</a>, <a class="el" href="group__threads.html#ga2c1ce2be73cd177af7e577b282232a7d">chThdResume()</a>, <a class="el" href="group___m_a_c.html#ga151a33674ef86c2403ac7797fa87805c">macWaitReceiveDescriptor()</a>, and <a class="el" href="group___m_a_c.html#ga7304721038db1d7c0cb616c9c4d3f0ce">macWaitTransmitDescriptor()</a>.</p>
</div>
</div>
<a class="anchor" id="gaf28d5427eeeb8f737cc7db495157780c"></a><!-- doxytag: member="chschd.h::RDY_TIMEOUT" ref="gaf28d5427eeeb8f737cc7db495157780c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define RDY_TIMEOUT&nbsp;&nbsp;&nbsp;-1</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Low level message sent to a thread awakened by a timeout. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00041">41</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group___a_d_c.html#ga026ac46dfe36031ab177e35f3aff5b09">adcWaitConversion()</a>, <a class="el" href="group__condvars.html#ga9cf6ebe4c9f28cb206fab14984a18d29">chCondWaitTimeoutS()</a>, <a class="el" href="group___m_a_c.html#ga151a33674ef86c2403ac7797fa87805c">macWaitReceiveDescriptor()</a>, and <a class="el" href="group___m_a_c.html#ga7304721038db1d7c0cb616c9c4d3f0ce">macWaitTransmitDescriptor()</a>.</p>
</div>
</div>
<a class="anchor" id="ga3a606c833796229f23adcb3f6c404a81"></a><!-- doxytag: member="chschd.h::RDY_RESET" ref="ga3a606c833796229f23adcb3f6c404a81" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define RDY_RESET&nbsp;&nbsp;&nbsp;-2</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Low level message sent to a thread awakened by a reset operation. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00043">43</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
</div>
</div>
<a class="anchor" id="gaeb0aae94eb04f9809571cdab39679651"></a><!-- doxytag: member="chschd.h::NOPRIO" ref="gaeb0aae94eb04f9809571cdab39679651" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define NOPRIO&nbsp;&nbsp;&nbsp;0</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Ready list header priority. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00045">45</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
</div>
</div>
<a class="anchor" id="gacfbd3f4098069329a23d7ec54a7fb8ab"></a><!-- doxytag: member="chschd.h::IDLEPRIO" ref="gacfbd3f4098069329a23d7ec54a7fb8ab" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define IDLEPRIO&nbsp;&nbsp;&nbsp;1</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Idle thread priority. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00046">46</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group__system.html#gafe2c7de6567e98e487e009e81e3be10b">chSysInit()</a>.</p>
</div>
</div>
<a class="anchor" id="ga38aff897bc7950077d5985b3d4bcf4d5"></a><!-- doxytag: member="chschd.h::LOWPRIO" ref="ga38aff897bc7950077d5985b3d4bcf4d5" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LOWPRIO&nbsp;&nbsp;&nbsp;2</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Lowest user priority. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00047">47</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group__threads.html#ga5a5d9388c64e4c1a3aec129d2831eefe">chThdSetPriority()</a>.</p>
</div>
</div>
<a class="anchor" id="gad6a6b28f0c1cf8e0da714ef771fb90a0"></a><!-- doxytag: member="chschd.h::NORMALPRIO" ref="gad6a6b28f0c1cf8e0da714ef771fb90a0" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define NORMALPRIO&nbsp;&nbsp;&nbsp;64</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Normal user priority. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00048">48</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group__system.html#gafe2c7de6567e98e487e009e81e3be10b">chSysInit()</a>.</p>
</div>
</div>
<a class="anchor" id="ga0621c307e30868052b802fbc821297e8"></a><!-- doxytag: member="chschd.h::HIGHPRIO" ref="ga0621c307e30868052b802fbc821297e8" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define HIGHPRIO&nbsp;&nbsp;&nbsp;127</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Highest user priority. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00049">49</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group__threads.html#gac6de13d4044b32d3ae9e2066b5d4c030">chThdCreateI()</a>, and <a class="el" href="group__threads.html#ga5a5d9388c64e4c1a3aec129d2831eefe">chThdSetPriority()</a>.</p>
</div>
</div>
<a class="anchor" id="gadb5ffd31ad382d3b83488e6b6780f03f"></a><!-- doxytag: member="chschd.h::ABSPRIO" ref="gadb5ffd31ad382d3b83488e6b6780f03f" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define ABSPRIO&nbsp;&nbsp;&nbsp;255</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Greatest possible priority. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00050">50</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
</div>
</div>
<a class="anchor" id="gad1ac15e9e5fc17810a94a779257f3d29"></a><!-- doxytag: member="chschd.h::TIME_IMMEDIATE" ref="gad1ac15e9e5fc17810a94a779257f3d29" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define TIME_IMMEDIATE&nbsp;&nbsp;&nbsp;((<a class="el" href="group__types.html#gae3e32a98d431a02106616da3071832dd">systime_t</a>)-1)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Zero time specification for some syscalls with a timeout specification. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Not all functions accept <code>TIME_IMMEDIATE</code> as timeout parameter, see the specific function documentation. </dd></dl>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00058">58</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group__events.html#ga90d702300eecee3d05f83e95b155c3ee">chEvtWaitAllTimeout()</a>, <a class="el" href="group__events.html#gaf690406ccc833e2c9235e7e2041a6715">chEvtWaitAnyTimeout()</a>, <a class="el" href="group__events.html#ga2944a7fc82e7cc15537f5a7c04f457d3">chEvtWaitOneTimeout()</a>, and <a class="el" href="group__semaphores.html#ga924ec5d191bb8debe8727ae4dd5d6d03">chSemWaitTimeoutS()</a>.</p>
</div>
</div>
<a class="anchor" id="gae1568cf3090c973c3bc47f86ae2f5afb"></a><!-- doxytag: member="chschd.h::TIME_INFINITE" ref="gae1568cf3090c973c3bc47f86ae2f5afb" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define TIME_INFINITE&nbsp;&nbsp;&nbsp;((<a class="el" href="group__types.html#gae3e32a98d431a02106616da3071832dd">systime_t</a>)0)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Infinite time specification for all the syscalls with a timeout specification. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00064">64</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group__scheduler.html#ga306e564f678c1a39139639490c77e78b">chSchGoSleepTimeoutS()</a>, <a class="el" href="group__threads.html#ga8b10a49e2ec522a5ddecabdc453afcab">chThdSleep()</a>, <a class="el" href="group__time.html#ga1c44c3a0bc64b2954d95cd98b2e7124e">chVTSetI()</a>, <a class="el" href="group___m_a_c.html#ga151a33674ef86c2403ac7797fa87805c">macWaitReceiveDescriptor()</a>, and <a class="el" href="group___m_a_c.html#ga7304721038db1d7c0cb616c9c4d3f0ce">macWaitTransmitDescriptor()</a>.</p>
</div>
</div>
<a class="anchor" id="gaa3e744fe83212f48d7373b764b9abb2d"></a><!-- doxytag: member="chschd.h::firstprio" ref="gaa3e744fe83212f48d7373b764b9abb2d" args="(rlp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define firstprio</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname">rlp</td>
<td>&nbsp;)&nbsp;</td>
<td>&nbsp;&nbsp;&nbsp;((rlp)-&gt;p_next-&gt;p_prio)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns the priority of the first thread on the given ready list. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00069">69</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group__scheduler.html#ga5fa012ef9d1e920983fe2aea2695a52a">chSchIsRescRequiredExI()</a>.</p>
</div>
</div>
<a class="anchor" id="ga1a5fddde56420e8accd0c09c1abb32a7"></a><!-- doxytag: member="chschd.h::currp" ref="ga1a5fddde56420e8accd0c09c1abb32a7" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define currp&nbsp;&nbsp;&nbsp;rlist.r_current</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Current thread pointer access macro. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This macro is not meant to be used in the application code but only from within the kernel, use the <code><a class="el" href="group__threads.html#gaa36662628234799d205ff8c0cc6745c5" title="Returns a pointer to the current Thread.">chThdSelf()</a></code> API instead. </dd>
<dd>
It is forbidden to use this macro in order to change the pointer (currp = something), use <code><a class="el" href="group__scheduler.html#ga226bd98a30b2db31dbb1ecc572c18da2" title="Current thread pointer change macro.">setcurrp()</a></code> instead. </dd></dl>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00111">111</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group__condvars.html#ga9cf6ebe4c9f28cb206fab14984a18d29">chCondWaitTimeoutS()</a>, <a class="el" href="group__debug.html#gac7f8f0653faf2e3a93108ff5333821b7">chDbgTrace()</a>, <a class="el" href="group__events.html#ga76f41b9668c3f1adafc516a8f92b9cad">chEvtClear()</a>, <a class="el" href="group__events.html#ga94f14b6063f42b9be79a7dabde18232d">chEvtPend()</a>, <a class="el" href="group__messages.html#ga65dda189b03b238412301ce5d80bfcf4">chMsgGet()</a>, <a class="el" href="group__messages.html#ga19a54b3b4b0e3677c47d650a3be3c7aa">chMsgRelease()</a>, <a class="el" href="group__messages.html#gae68fefbf9d0404bbf56ae354961fae41">chMsgWait()</a>, <a class="el" href="group__mutexes.html#gadbf0bd4a36b1f7e33ee41939df32ab78">chMtxTryLockS()</a>, <a class="el" href="group__scheduler.html#ga0257cf203e72a766a52059750cb97e6e">chSchDoRescheduleI()</a>, <a class="el" href="group__scheduler.html#ga97c1c514b755a1e71caf2f19c1ccf986">chSchGoSleepS()</a>, <a class="el" href="group__scheduler.html#ga306e564f678c1a39139639490c77e78b">chSchGoSleepTimeoutS()</a>, <a class="el" href="group__scheduler.html#ga5fa012ef9d1e920983fe2aea2695a52a">chSchIsRescRequiredExI()</a>, <a class="el" href="group__scheduler.html#gae47a8819a21ef2d521124e76bfb37c95">chSchWakeupS()</a>, <a class="el" href="group__semaphores.html#gaa2c0367078533e291d2e889e251d8b67">chSemWaitS()</a>, <a class="el" href="group__semaphores.html#ga924ec5d191bb8debe8727ae4dd5d6d03">chSemWaitTimeoutS()</a>, <a class="el" href="group__system.html#gafe2c7de6567e98e487e009e81e3be10b">chSysInit()</a>, <a class="el" href="group__system.html#ga1e42ee112f4a5d2c95be07d523c247be">chSysTimerHandlerI()</a>, <a class="el" href="group__threads.html#ga5a5d9388c64e4c1a3aec129d2831eefe">chThdSetPriority()</a>, <a class="el" href="group__threads.html#ga94a5727ecdbe0f738dfc8e1ede1c3409">chThdWait()</a>, and <a class="el" href="classchibios__rt_1_1_base_thread.html#a4477cb3ed6fc3250638bb21d8199f573">chibios_rt::BaseThread::IsPendingMessage()</a>.</p>
</div>
</div>
<a class="anchor" id="ga226bd98a30b2db31dbb1ecc572c18da2"></a><!-- doxytag: member="chschd.h::setcurrp" ref="ga226bd98a30b2db31dbb1ecc572c18da2" args="(tp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define setcurrp</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname">tp</td>
<td>&nbsp;)&nbsp;</td>
<td>&nbsp;&nbsp;&nbsp;(currp = (tp))</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Current thread pointer change macro. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This macro is not meant to be used in the application code but only from within the kernel. </dd></dl>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00123">123</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group__scheduler.html#ga0257cf203e72a766a52059750cb97e6e">chSchDoRescheduleI()</a>, <a class="el" href="group__scheduler.html#ga97c1c514b755a1e71caf2f19c1ccf986">chSchGoSleepS()</a>, <a class="el" href="group__scheduler.html#gae47a8819a21ef2d521124e76bfb37c95">chSchWakeupS()</a>, and <a class="el" href="group__system.html#gafe2c7de6567e98e487e009e81e3be10b">chSysInit()</a>.</p>
</div>
</div>
<a class="anchor" id="ga146230c1fe7e6dab4bc6649f2a71444c"></a><!-- doxytag: member="chschd.h::chSchIsRescRequiredI" ref="ga146230c1fe7e6dab4bc6649f2a71444c" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define chSchIsRescRequiredI</td>
<td>(</td>
<td class="paramname"></td>
<td>&nbsp;)&nbsp;</td>
<td>&nbsp;&nbsp;&nbsp;(firstprio(&amp;rlist.r_queue) &gt; currp-&gt;p_prio)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Determines if the current thread must reschedule. </p>
<p>This function returns <code>TRUE</code> if there is a ready thread with higher priority. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00164">164</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group__scheduler.html#ga4e38b4bee3d2330f6a0f1cdb7660af20">chSchRescheduleS()</a>.</p>
</div>
</div>
<a class="anchor" id="gac45d5a97963db4129d95645429e2dd8b"></a><!-- doxytag: member="chschd.h::chSchCanYieldS" ref="gac45d5a97963db4129d95645429e2dd8b" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define chSchCanYieldS</td>
<td>(</td>
<td class="paramname"></td>
<td>&nbsp;)&nbsp;</td>
<td>&nbsp;&nbsp;&nbsp;(firstprio(&amp;rlist.r_queue) &gt;= currp-&gt;p_prio)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Determines if yielding is possible. </p>
<p>This function returns <code>TRUE</code> if there is a ready thread with equal or higher priority. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00173">173</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga8fd763c1a004a010fc13575578edefbd"></a><!-- doxytag: member="chschd.h::chSchDoYieldS" ref="ga8fd763c1a004a010fc13575578edefbd" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define chSchDoYieldS</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="keywordflow">if</span> (<a class="code" href="group__scheduler.html#gac45d5a97963db4129d95645429e2dd8b" title="Determines if yielding is possible.">chSchCanYieldS</a>()) \
<a class="code" href="group__scheduler.html#ga0257cf203e72a766a52059750cb97e6e" title="Switches to the first thread on the runnable queue.">chSchDoRescheduleI</a>(); \
}
</pre></div>
<p>Yields the time slot. </p>
<p>Yields the CPU control to the next thread in the ready list with equal or higher priority, if any. </p>
<p>Definition at line <a class="el" href="chschd_8h_source.html#l00182">182</a> of file <a class="el" href="chschd_8h_source.html">chschd.h</a>.</p>
<p>Referenced by <a class="el" href="group__threads.html#gacb0a8f22a8358487eaebab3c84b1c4a1">chThdYield()</a>.</p>
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="gab258cc2856e5f6bb125907cc23358fbd"></a><!-- doxytag: member="chschd.h::scheduler_init" ref="gab258cc2856e5f6bb125907cc23358fbd" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void scheduler_init </td>
<td>(</td>
<td class="paramtype">void&nbsp;</td>
<td class="paramname"></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Scheduler initialization. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Internally invoked by the <code><a class="el" href="group__system.html#gafe2c7de6567e98e487e009e81e3be10b" title="ChibiOS/RT initialization.">chSysInit()</a></code>, not an API. </dd></dl>
<p>Definition at line <a class="el" href="chschd_8c_source.html#l00053">53</a> of file <a class="el" href="chschd_8c_source.html">chschd.c</a>.</p>
<p>References <a class="el" href="group__internals.html#ga6d19d0f3ff1fa599b6d9783dec180451">queue_init</a>, <a class="el" href="struct_ready_list.html#adaf2a3d936298fdee21396af9cf640c9">ReadyList::r_newer</a>, <a class="el" href="struct_ready_list.html#a5b122d594ffb1f9e400ef9ee69b7aa12">ReadyList::r_older</a>, <a class="el" href="struct_ready_list.html#aee33d97bf6d798dfd2528db725452bcc">ReadyList::r_prio</a>, and <a class="el" href="struct_ready_list.html#a7577e36ac8500b0364cd3d4157e260d1">ReadyList::r_queue</a>.</p>
<p>Referenced by <a class="el" href="group__system.html#gafe2c7de6567e98e487e009e81e3be10b">chSysInit()</a>.</p>
</div>
</div>
<a class="anchor" id="ga535d58cfb3436c8d4e4586c31c062298"></a><!-- doxytag: member="chschd.h::chSchReadyI" ref="ga535d58cfb3436c8d4e4586c31c062298" args="(Thread *tp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct_thread.html">Thread</a> * chSchReadyI </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_thread.html">Thread</a> *&nbsp;</td>
<td class="paramname"> <em>tp</em></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Inserts a thread in the Ready List. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>The function does not reschedule, the <code><a class="el" href="group__scheduler.html#ga4e38b4bee3d2330f6a0f1cdb7660af20" title="Performs a reschedule if a higher priority thread is runnable.">chSchRescheduleS()</a></code> should be called soon after.</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tp</em>&nbsp;</td><td>the <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> to be made ready </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> pointer. </dd></dl>
<p>Definition at line <a class="el" href="chschd_8c_source.html#l00078">78</a> of file <a class="el" href="chschd_8c_source.html">chschd.c</a>.</p>
<p>References <a class="el" href="struct_thread.html#a49d3270919a6e423a47de20bc57beaa1">Thread::p_next</a>, <a class="el" href="struct_thread.html#a3c3e9d6abccb62c3a5fab6ef043a391f">Thread::p_state</a>, and <a class="el" href="struct_ready_list.html#a7577e36ac8500b0364cd3d4157e260d1">ReadyList::r_queue</a>.</p>
<p>Referenced by <a class="el" href="group__condvars.html#ga5cf1f4697985d81ee089b042391df6fc">chCondBroadcastI()</a>, <a class="el" href="group__condvars.html#ga7b9d882c348124fed46a1afc3db6c02c">chCondSignalI()</a>, <a class="el" href="group__events.html#ga6c219038c3e618e2142c6e1601997907">chEvtSignalI()</a>, <a class="el" href="group__messages.html#ga29a48a438e97dc47cb798a84e13764cb">chMsgSend()</a>, <a class="el" href="group__mutexes.html#ga2d6350c2d147d1165c359f30798205f5">chMtxLockS()</a>, <a class="el" href="group__mutexes.html#ga853b4ced43d22fb5d82678dd2f0aba75">chMtxUnlockAll()</a>, <a class="el" href="group__mutexes.html#ga705fa60fb8aa28a6632f693e83f78c96">chMtxUnlockS()</a>, <a class="el" href="group__scheduler.html#ga0257cf203e72a766a52059750cb97e6e">chSchDoRescheduleI()</a>, <a class="el" href="group__scheduler.html#gae47a8819a21ef2d521124e76bfb37c95">chSchWakeupS()</a>, <a class="el" href="group__semaphores.html#gae7972b6b22b80ac09bac5a186277ab81">chSemResetI()</a>, <a class="el" href="group__semaphores.html#gaca0b70cf495a9cb7569e1cf5b07e2b3d">chSemSignalI()</a>, <a class="el" href="group__semaphores.html#ga0dc7b4339506de346d67b4560b271e44">chSemSignalWait()</a>, and <a class="el" href="group__threads.html#ga24ab3a3a4d70214ee360867a1c3c75ac">chThdExit()</a>.</p>
</div>
</div>
<a class="anchor" id="ga97c1c514b755a1e71caf2f19c1ccf986"></a><!-- doxytag: member="chschd.h::chSchGoSleepS" ref="ga97c1c514b755a1e71caf2f19c1ccf986" args="(tstate_t newstate)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void chSchGoSleepS </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__types.html#ga52d7ed152360a74632afa37bbeeca7ca">tstate_t</a>&nbsp;</td>
<td class="paramname"> <em>newstate</em></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Puts the current thread to sleep into the specified state. </p>
<p>The thread goes into a sleeping state. The <a class="el" href="concepts.html#thread_states">Threads States</a> are described into <code>threads.h</code>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>newstate</em>&nbsp;</td><td>the new thread state </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="chschd_8c_source.html#l00103">103</a> of file <a class="el" href="chschd_8c_source.html">chschd.c</a>.</p>
<p>References <a class="el" href="group__debug.html#gac7f8f0653faf2e3a93108ff5333821b7">chDbgTrace()</a>, <a class="el" href="group__system.html#ga63044a9140cf65d2272f06e05431e161">chSysSwitchI</a>, <a class="el" href="group__scheduler.html#ga1a5fddde56420e8accd0c09c1abb32a7">currp</a>, <a class="el" href="group__internals.html#ga042479f09357fc59befebf4dfe0e9f4a">fifo_remove()</a>, <a class="el" href="struct_ready_list.html#a7577e36ac8500b0364cd3d4157e260d1">ReadyList::r_queue</a>, and <a class="el" href="group__scheduler.html#ga226bd98a30b2db31dbb1ecc572c18da2">setcurrp</a>.</p>
<p>Referenced by <a class="el" href="group__condvars.html#gab6357d80b01ed8d225ef1e30a66248f9">chCondWaitS()</a>, <a class="el" href="group__events.html#ga8c5c6bf310a08cdc836d23f98a87dbf5">chEvtWaitAll()</a>, <a class="el" href="group__events.html#gabd731d3ed2f037b2409e370676575f8d">chEvtWaitAny()</a>, <a class="el" href="group__events.html#ga77651e22578713ebe355c1213286c2e9">chEvtWaitOne()</a>, <a class="el" href="group__messages.html#ga29a48a438e97dc47cb798a84e13764cb">chMsgSend()</a>, <a class="el" href="group__messages.html#gae68fefbf9d0404bbf56ae354961fae41">chMsgWait()</a>, <a class="el" href="group__mutexes.html#ga2d6350c2d147d1165c359f30798205f5">chMtxLockS()</a>, <a class="el" href="group__scheduler.html#ga306e564f678c1a39139639490c77e78b">chSchGoSleepTimeoutS()</a>, <a class="el" href="group__semaphores.html#ga0dc7b4339506de346d67b4560b271e44">chSemSignalWait()</a>, <a class="el" href="group__semaphores.html#gaa2c0367078533e291d2e889e251d8b67">chSemWaitS()</a>, <a class="el" href="group__threads.html#ga24ab3a3a4d70214ee360867a1c3c75ac">chThdExit()</a>, and <a class="el" href="group__threads.html#ga94a5727ecdbe0f738dfc8e1ede1c3409">chThdWait()</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="group__scheduler_ga97c1c514b755a1e71caf2f19c1ccf986_cgraph.png" border="0" usemap="#group__scheduler_ga97c1c514b755a1e71caf2f19c1ccf986_cgraph" alt=""/></div>
<map name="group__scheduler_ga97c1c514b755a1e71caf2f19c1ccf986_cgraph" id="group__scheduler_ga97c1c514b755a1e71caf2f19c1ccf986_cgraph">
<area shape="rect" id="node3" href="group__debug.html#gac7f8f0653faf2e3a93108ff5333821b7" title="Inserts in the circular debug trace buffer a context switch record." alt="" coords="156,5,236,32"/>
<area shape="rect" id="node5" href="group__internals.html#ga042479f09357fc59befebf4dfe0e9f4a" title="Removes the first&#45;out Thread from a queue and returns it." alt="" coords="156,56,236,83"/>
</map>
</div>
</p>
</div>
</div>
<a class="anchor" id="ga306e564f678c1a39139639490c77e78b"></a><!-- doxytag: member="chschd.h::chSchGoSleepTimeoutS" ref="ga306e564f678c1a39139639490c77e78b" args="(tstate_t newstate, systime_t time)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__types.html#ga35bcb0c321cd7bc45bf1a11fa17ebdd3">msg_t</a> chSchGoSleepTimeoutS </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__types.html#ga52d7ed152360a74632afa37bbeeca7ca">tstate_t</a>&nbsp;</td>
<td class="paramname"> <em>newstate</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__types.html#gae3e32a98d431a02106616da3071832dd">systime_t</a>&nbsp;</td>
<td class="paramname"> <em>time</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Puts the current thread to sleep into the specified state with timeout specification. </p>
<p>The thread goes into a sleeping state, if it is not awakened explicitly within the specified timeout then it is forcibly awakened with a <code>RDY_TIMEOUT</code> low level message. The <a class="el" href="concepts.html#thread_states">Threads States</a> are described into <code>threads.h</code>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>newstate</em>&nbsp;</td><td>the new thread state </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>time</em>&nbsp;</td><td>the number of ticks before the operation timeouts, the special values are handled as follow:</p>
<ul>
<li><em>TIME_INFINITE</em> the thread enters an infinite sleep state, this is equivalent to invoking <code><a class="el" href="group__scheduler.html#ga97c1c514b755a1e71caf2f19c1ccf986" title="Puts the current thread to sleep into the specified state.">chSchGoSleepS()</a></code> but, of course, less efficient.</li>
<li><em>TIME_IMMEDIATE</em> this value is accepted but interpreted as a normal time specification not as an immediate timeout specification.</li>
</ul>
</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The wakeup message. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>RDY_TIMEOUT</em>&nbsp;</td><td>if a timeout occurs. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="chschd_8c_source.html#l00167">167</a> of file <a class="el" href="chschd_8c_source.html">chschd.c</a>.</p>
<p>References <a class="el" href="group__scheduler.html#ga97c1c514b755a1e71caf2f19c1ccf986">chSchGoSleepS()</a>, <a class="el" href="group__time.html#gae54e6dd40bc7b9cdeb409393ec9e134a">chVTIsArmedI</a>, <a class="el" href="group__time.html#ga680d851a74e594cc965101e79891840f">chVTResetI()</a>, <a class="el" href="group__time.html#ga1c44c3a0bc64b2954d95cd98b2e7124e">chVTSetI()</a>, <a class="el" href="group__scheduler.html#ga1a5fddde56420e8accd0c09c1abb32a7">currp</a>, and <a class="el" href="group__scheduler.html#gae1568cf3090c973c3bc47f86ae2f5afb">TIME_INFINITE</a>.</p>
<p>Referenced by <a class="el" href="group__condvars.html#ga9cf6ebe4c9f28cb206fab14984a18d29">chCondWaitTimeoutS()</a>, <a class="el" href="group__events.html#ga90d702300eecee3d05f83e95b155c3ee">chEvtWaitAllTimeout()</a>, <a class="el" href="group__events.html#gaf690406ccc833e2c9235e7e2041a6715">chEvtWaitAnyTimeout()</a>, <a class="el" href="group__events.html#ga2944a7fc82e7cc15537f5a7c04f457d3">chEvtWaitOneTimeout()</a>, and <a class="el" href="group__semaphores.html#ga924ec5d191bb8debe8727ae4dd5d6d03">chSemWaitTimeoutS()</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="group__scheduler_ga306e564f678c1a39139639490c77e78b_cgraph.png" border="0" usemap="#group__scheduler_ga306e564f678c1a39139639490c77e78b_cgraph" alt=""/></div>
<map name="group__scheduler_ga306e564f678c1a39139639490c77e78b_cgraph" id="group__scheduler_ga306e564f678c1a39139639490c77e78b_cgraph">
<area shape="rect" id="node3" href="group__scheduler.html#ga97c1c514b755a1e71caf2f19c1ccf986" title="Puts the current thread to sleep into the specified state." alt="" coords="192,31,293,57"/>
<area shape="rect" id="node9" href="group__time.html#ga680d851a74e594cc965101e79891840f" title="Disables a Virtual Timer." alt="" coords="204,81,281,108"/>
<area shape="rect" id="node11" href="group__time.html#ga1c44c3a0bc64b2954d95cd98b2e7124e" title="Enables a virtual timer." alt="" coords="209,132,276,159"/>
<area shape="rect" id="node5" href="group__debug.html#gac7f8f0653faf2e3a93108ff5333821b7" title="Inserts in the circular debug trace buffer a context switch record." alt="" coords="343,5,423,32"/>
<area shape="rect" id="node7" href="group__internals.html#ga042479f09357fc59befebf4dfe0e9f4a" title="Removes the first&#45;out Thread from a queue and returns it." alt="" coords="343,56,423,83"/>
</map>
</div>
</p>
</div>
</div>
<a class="anchor" id="gae47a8819a21ef2d521124e76bfb37c95"></a><!-- doxytag: member="chschd.h::chSchWakeupS" ref="gae47a8819a21ef2d521124e76bfb37c95" args="(Thread *ntp, msg_t msg)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void chSchWakeupS </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_thread.html">Thread</a> *&nbsp;</td>
<td class="paramname"> <em>ntp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__types.html#ga35bcb0c321cd7bc45bf1a11fa17ebdd3">msg_t</a>&nbsp;</td>
<td class="paramname"> <em>msg</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Wakes up a thread. </p>
<p>The thread is inserted into the ready list or immediately made running depending on its relative priority compared to the current thread. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>It is equivalent to a <code><a class="el" href="group__scheduler.html#ga535d58cfb3436c8d4e4586c31c062298" title="Inserts a thread in the Ready List.">chSchReadyI()</a></code> followed by a <code><a class="el" href="group__scheduler.html#ga4e38b4bee3d2330f6a0f1cdb7660af20" title="Performs a reschedule if a higher priority thread is runnable.">chSchRescheduleS()</a></code> but much more efficient. </dd>
<dd>
The function assumes that the current thread has the highest priority.</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>ntp</em>&nbsp;</td><td>the <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> to be made ready </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>msg</em>&nbsp;</td><td>message to the awakened thread </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="chschd_8c_source.html#l00197">197</a> of file <a class="el" href="chschd_8c_source.html">chschd.c</a>.</p>
<p>References <a class="el" href="group__debug.html#gac7f8f0653faf2e3a93108ff5333821b7">chDbgTrace()</a>, <a class="el" href="group__scheduler.html#ga535d58cfb3436c8d4e4586c31c062298">chSchReadyI()</a>, <a class="el" href="group__system.html#ga63044a9140cf65d2272f06e05431e161">chSysSwitchI</a>, <a class="el" href="group__scheduler.html#ga1a5fddde56420e8accd0c09c1abb32a7">currp</a>, <a class="el" href="struct_thread.html#ae60cc22956f4c19965cb94045333aa9c">Thread::p_prio</a>, <a class="el" href="struct_thread.html#a3c3e9d6abccb62c3a5fab6ef043a391f">Thread::p_state</a>, <a class="el" href="struct_thread.html#a72cd0424b6098ca241fac1f74d21b56a">Thread::p_u</a>, <a class="el" href="struct_thread.html#ad5792c30fbd60df0de223b0f398fc6d7">Thread::rdymsg</a>, and <a class="el" href="group__scheduler.html#ga226bd98a30b2db31dbb1ecc572c18da2">setcurrp</a>.</p>
<p>Referenced by <a class="el" href="group__condvars.html#gadddadb68e2a2ce061c7df0d647da9996">chCondSignal()</a>, <a class="el" href="group__messages.html#ga19a54b3b4b0e3677c47d650a3be3c7aa">chMsgRelease()</a>, <a class="el" href="group__mutexes.html#gae9ae07165126c9f6c0ce0b17bdb53669">chMtxUnlock()</a>, <a class="el" href="group__semaphores.html#ga7ec0cbda23e49e2370e0b91f20baf05e">chSemSignal()</a>, <a class="el" href="group__threads.html#ga50b84e3e82a4e09c1066e1d422e4c780">chThdCreateFromHeap()</a>, <a class="el" href="group__threads.html#gad3ccc1a6f054c543258ed2fe97ed2f58">chThdCreateFromMemoryPool()</a>, <a class="el" href="group__threads.html#ga048e588238dd336c6059133b3d0c3435">chThdCreateStatic()</a>, and <a class="el" href="group__threads.html#ga2c1ce2be73cd177af7e577b282232a7d">chThdResume()</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="group__scheduler_gae47a8819a21ef2d521124e76bfb37c95_cgraph.png" border="0" usemap="#group__scheduler_gae47a8819a21ef2d521124e76bfb37c95_cgraph" alt=""/></div>
<map name="group__scheduler_gae47a8819a21ef2d521124e76bfb37c95_cgraph" id="group__scheduler_gae47a8819a21ef2d521124e76bfb37c95_cgraph">
<area shape="rect" id="node3" href="group__debug.html#gac7f8f0653faf2e3a93108ff5333821b7" title="Inserts in the circular debug trace buffer a context switch record." alt="" coords="156,5,236,32"/>
<area shape="rect" id="node5" href="group__scheduler.html#ga535d58cfb3436c8d4e4586c31c062298" title="Inserts a thread in the Ready List." alt="" coords="153,56,239,83"/>
</map>
</div>
</p>
</div>
</div>
<a class="anchor" id="ga0257cf203e72a766a52059750cb97e6e"></a><!-- doxytag: member="chschd.h::chSchDoRescheduleI" ref="ga0257cf203e72a766a52059750cb97e6e" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void chSchDoRescheduleI </td>
<td>(</td>
<td class="paramtype">void&nbsp;</td>
<td class="paramname"></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Switches to the first thread on the runnable queue. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>It is intended to be called if <code>chSchRescRequiredI()</code> evaluates to <code>TRUE</code>. </dd></dl>
<p>Definition at line <a class="el" href="chschd_8c_source.html#l00225">225</a> of file <a class="el" href="chschd_8c_source.html">chschd.c</a>.</p>
<p>References <a class="el" href="group__debug.html#gac7f8f0653faf2e3a93108ff5333821b7">chDbgTrace()</a>, <a class="el" href="group__scheduler.html#ga535d58cfb3436c8d4e4586c31c062298">chSchReadyI()</a>, <a class="el" href="group__system.html#ga63044a9140cf65d2272f06e05431e161">chSysSwitchI</a>, <a class="el" href="group__scheduler.html#ga1a5fddde56420e8accd0c09c1abb32a7">currp</a>, <a class="el" href="group__internals.html#ga042479f09357fc59befebf4dfe0e9f4a">fifo_remove()</a>, <a class="el" href="struct_ready_list.html#a7577e36ac8500b0364cd3d4157e260d1">ReadyList::r_queue</a>, and <a class="el" href="group__scheduler.html#ga226bd98a30b2db31dbb1ecc572c18da2">setcurrp</a>.</p>
<p>Referenced by <a class="el" href="group__scheduler.html#ga4e38b4bee3d2330f6a0f1cdb7660af20">chSchRescheduleS()</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="group__scheduler_ga0257cf203e72a766a52059750cb97e6e_cgraph.png" border="0" usemap="#group__scheduler_ga0257cf203e72a766a52059750cb97e6e_cgraph" alt=""/></div>
<map name="group__scheduler_ga0257cf203e72a766a52059750cb97e6e_cgraph" id="group__scheduler_ga0257cf203e72a766a52059750cb97e6e_cgraph">
<area shape="rect" id="node3" href="group__debug.html#gac7f8f0653faf2e3a93108ff5333821b7" title="Inserts in the circular debug trace buffer a context switch record." alt="" coords="183,5,263,32"/>
<area shape="rect" id="node5" href="group__scheduler.html#ga535d58cfb3436c8d4e4586c31c062298" title="Inserts a thread in the Ready List." alt="" coords="180,56,265,83"/>
<area shape="rect" id="node7" href="group__internals.html#ga042479f09357fc59befebf4dfe0e9f4a" title="Removes the first&#45;out Thread from a queue and returns it." alt="" coords="183,107,263,133"/>
</map>
</div>
</p>
</div>
</div>
<a class="anchor" id="ga4e38b4bee3d2330f6a0f1cdb7660af20"></a><!-- doxytag: member="chschd.h::chSchRescheduleS" ref="ga4e38b4bee3d2330f6a0f1cdb7660af20" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void chSchRescheduleS </td>
<td>(</td>
<td class="paramtype">void&nbsp;</td>
<td class="paramname"></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Performs a reschedule if a higher priority thread is runnable. </p>
<p>If a thread with a higher priority than the current thread is in the ready list then make the higher priority thread running. </p>
<p>Definition at line <a class="el" href="chschd_8c_source.html#l00247">247</a> of file <a class="el" href="chschd_8c_source.html">chschd.c</a>.</p>
<p>References <a class="el" href="group__scheduler.html#ga0257cf203e72a766a52059750cb97e6e">chSchDoRescheduleI()</a>, and <a class="el" href="group__scheduler.html#ga146230c1fe7e6dab4bc6649f2a71444c">chSchIsRescRequiredI</a>.</p>
<p>Referenced by <a class="el" href="group___a_d_c.html#gabce14d8f240e85715cded02c85b6585a">adcStopConversion()</a>, <a class="el" href="group___c_a_n.html#ga97caf4f277c09588c225ea2328a74cba">canSleep()</a>, <a class="el" href="group___c_a_n.html#ga4e89a7d246119e077d27431a02586133">canStop()</a>, <a class="el" href="group___c_a_n.html#ga09737d4ae5be724bf791a309e8a28dff">canWakeup()</a>, <a class="el" href="group__condvars.html#ga60c24a8060a884313efe82b8404e77f6">chCondBroadcast()</a>, <a class="el" href="group__events.html#ga44015af4dd20f74b0f73824ff1c1b2f4">chEvtBroadcast()</a>, <a class="el" href="group__events.html#ga75a812ae99ce83a3689f51d797a038de">chEvtSignal()</a>, <a class="el" href="group__mailboxes.html#gadc562242a8854497a1f9539cb9ffea09">chMBFetchS()</a>, <a class="el" href="group__mailboxes.html#gaa9c91c0b781bec0df3540407d75b1bb3">chMBPostAheadS()</a>, <a class="el" href="group__mailboxes.html#gac6514c185ae87c2633132478ea48d689">chMBPostS()</a>, <a class="el" href="group__mailboxes.html#ga4199e224456395c3dbc74dbc889dff94">chMBReset()</a>, <a class="el" href="group__mutexes.html#ga853b4ced43d22fb5d82678dd2f0aba75">chMtxUnlockAll()</a>, <a class="el" href="group__semaphores.html#ga58e266e609cfd3dbc67f299b3ae9debb">chSemReset()</a>, <a class="el" href="group__semaphores.html#ga0dc7b4339506de346d67b4560b271e44">chSemSignalWait()</a>, <a class="el" href="group__threads.html#ga5a5d9388c64e4c1a3aec129d2831eefe">chThdSetPriority()</a>, and <a class="el" href="group___s_e_r_i_a_l.html#gacb106a30f8007afdf9eeaf8681dbd3cf">sdStop()</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="group__scheduler_ga4e38b4bee3d2330f6a0f1cdb7660af20_cgraph.png" border="0" usemap="#group__scheduler_ga4e38b4bee3d2330f6a0f1cdb7660af20_cgraph" alt=""/></div>
<map name="group__scheduler_ga4e38b4bee3d2330f6a0f1cdb7660af20_cgraph" id="group__scheduler_ga4e38b4bee3d2330f6a0f1cdb7660af20_cgraph">
<area shape="rect" id="node3" href="group__scheduler.html#ga0257cf203e72a766a52059750cb97e6e" title="Switches to the first thread on the runnable queue." alt="" coords="171,56,296,83"/>
<area shape="rect" id="node5" href="group__debug.html#gac7f8f0653faf2e3a93108ff5333821b7" title="Inserts in the circular debug trace buffer a context switch record." alt="" coords="348,5,428,32"/>
<area shape="rect" id="node7" href="group__scheduler.html#ga535d58cfb3436c8d4e4586c31c062298" title="Inserts a thread in the Ready List." alt="" coords="345,56,431,83"/>
<area shape="rect" id="node9" href="group__internals.html#ga042479f09357fc59befebf4dfe0e9f4a" title="Removes the first&#45;out Thread from a queue and returns it." alt="" coords="348,107,428,133"/>
</map>
</div>
</p>
</div>
</div>
<a class="anchor" id="ga5fa012ef9d1e920983fe2aea2695a52a"></a><!-- doxytag: member="chschd.h::chSchIsRescRequiredExI" ref="ga5fa012ef9d1e920983fe2aea2695a52a" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__types.html#ga7556af1cb61728b53228fa3af1c851de">bool_t</a> chSchIsRescRequiredExI </td>
<td>(</td>
<td class="paramtype">void&nbsp;</td>
<td class="paramname"></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Evaluates if a reschedule is required. </p>
<p>The decision is taken by comparing the relative priorities and depending on the state of the round robin timeout counter. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This function is meant to be used in the timer interrupt handler where <code><a class="el" href="group__time.html#ga3cc8210175b310d62e2043f752ccafee" title="Virtual timers ticker.">chVTDoTickI()</a></code> is invoked.</dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>TRUE</em>&nbsp;</td><td>if there is a thread that should go in running state. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>FALSE</em>&nbsp;</td><td>if a reschedule is not required. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="chschd_8c_source.html#l00265">265</a> of file <a class="el" href="chschd_8c_source.html">chschd.c</a>.</p>
<p>References <a class="el" href="group__scheduler.html#ga1a5fddde56420e8accd0c09c1abb32a7">currp</a>, <a class="el" href="group__scheduler.html#gaa3e744fe83212f48d7373b764b9abb2d">firstprio</a>, and <a class="el" href="struct_ready_list.html#a7577e36ac8500b0364cd3d4157e260d1">ReadyList::r_queue</a>.</p>
</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="ga752cd9dbf0dc458b8b532182836ca38d"></a><!-- doxytag: member="chschd.c::rlist" ref="ga752cd9dbf0dc458b8b532182836ca38d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct_ready_list.html">ReadyList</a> <a class="el" href="group___s_t_m8___c_o_r_e.html#ga3a6de9d40a3d21712aecc7837fa7c23b">rlist</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Ready list header. </p>
<p>Definition at line <a class="el" href="chschd_8c_source.html#l00046">46</a> of file <a class="el" href="chschd_8c_source.html">chschd.c</a>.</p>
<p>Referenced by <a class="el" href="group__registry.html#ga55c0a485b40cf4acbfce0dd333f28513">chRegFirstThread()</a>, <a class="el" href="group__registry.html#gaefff43a49fb7888a596319d67cf01dab">chRegNextThread()</a>, and <a class="el" href="group__system.html#ga1e42ee112f4a5d2c95be07d523c247be">chSysTimerHandlerI()</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>