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

522 lines
32 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: Internals</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> </div>
<div class="headertitle">
<h1>Internals<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 Internals:</div>
<div class="dyncontent">
<center><table><tr><td><img src="group__internals.png" border="0" alt="" usemap="#group____internals"/>
<map name="group____internals" id="group____internals">
<area shape="rect" id="node2" 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>All the functions present in this module, while public, are not an OS API and should not be directly used in the user applications code. </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_threads_queue.html">ThreadsQueue</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic threads bidirectional linked list header and element. <a href="struct_threads_queue.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_threads_list.html">ThreadsList</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic threads single link list, it works like a stack. <a href="struct_threads_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__internals.html#ga6d19d0f3ff1fa599b6d9783dec180451">queue_init</a>(tqp)&nbsp;&nbsp;&nbsp;((tqp)-&gt;p_next = (tqp)-&gt;p_prev = (<a class="el" href="struct_thread.html">Thread</a> *)(tqp));</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Threads queue initialization. <a href="#ga6d19d0f3ff1fa599b6d9783dec180451"></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__internals.html#gaaef72a9005ecd65e7b5c22e95ad82388">list_init</a>(tlp)&nbsp;&nbsp;&nbsp;((tlp)-&gt;p_next = (<a class="el" href="struct_thread.html">Thread</a> *)(tlp))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Threads list initialization. <a href="#gaaef72a9005ecd65e7b5c22e95ad82388"></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__internals.html#gadf402c10356566d82a6631c102b7f656">isempty</a>(p)&nbsp;&nbsp;&nbsp;((p)-&gt;p_next == (<a class="el" href="struct_thread.html">Thread</a> *)(p))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Evaluates to <code>TRUE</code> if the specified threads queue or list is empty. <a href="#gadf402c10356566d82a6631c102b7f656"></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__internals.html#ga8f6bea56a53acc44758fe61c98d68a4e">notempty</a>(p)&nbsp;&nbsp;&nbsp;((p)-&gt;p_next != (<a class="el" href="struct_thread.html">Thread</a> *)(p))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Evaluates to <code>TRUE</code> if the specified threads queue or list is not empty. <a href="#ga8f6bea56a53acc44758fe61c98d68a4e"></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__internals.html#ga9ac5ac4cb62a9baa48d2004876852112">_THREADSQUEUE_DATA</a>(name)&nbsp;&nbsp;&nbsp;{(<a class="el" href="struct_thread.html">Thread</a> *)&amp;name, (<a class="el" href="struct_thread.html">Thread</a> *)&amp;name}</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data part of a static threads queue initializer. <a href="#ga9ac5ac4cb62a9baa48d2004876852112"></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__internals.html#ga08959a4e3dd5e492734970618a56078c">THREADSQUEUE_DECL</a>(name)&nbsp;&nbsp;&nbsp;<a class="el" href="struct_threads_queue.html">ThreadsQueue</a> name = _THREADSQUEUE_DATA(name)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Static threads queue initializer. <a href="#ga08959a4e3dd5e492734970618a56078c"></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__internals.html#ga02226b866ae704435baf2ffe259ba0b2">prio_insert</a> (<a class="el" href="struct_thread.html">Thread</a> *tp, <a class="el" href="struct_threads_queue.html">ThreadsQueue</a> *tqp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Inserts a thread into a priority ordered queue. <a href="#ga02226b866ae704435baf2ffe259ba0b2"></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__internals.html#gaf7072f75fdab9dcc5f7b8dcad212965c">queue_insert</a> (<a class="el" href="struct_thread.html">Thread</a> *tp, <a class="el" href="struct_threads_queue.html">ThreadsQueue</a> *tqp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Inserts a <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> into a queue. <a href="#gaf7072f75fdab9dcc5f7b8dcad212965c"></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__internals.html#ga042479f09357fc59befebf4dfe0e9f4a">fifo_remove</a> (<a class="el" href="struct_threads_queue.html">ThreadsQueue</a> *tqp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes the first-out <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> from a queue and returns it. <a href="#ga042479f09357fc59befebf4dfe0e9f4a"></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__internals.html#gacacfe77140cab62948e63d898bf4dfba">lifo_remove</a> (<a class="el" href="struct_threads_queue.html">ThreadsQueue</a> *tqp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes the last-out <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> from a queue and returns it. <a href="#gacacfe77140cab62948e63d898bf4dfba"></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__internals.html#gafff11bcd31d7dc3d1a0a6c66f3fc6ec9">dequeue</a> (<a class="el" href="struct_thread.html">Thread</a> *tp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes a <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> from a queue and returns it. <a href="#gafff11bcd31d7dc3d1a0a6c66f3fc6ec9"></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__internals.html#ga5818ce2d363d36402baece614b06e41b">list_insert</a> (<a class="el" href="struct_thread.html">Thread</a> *tp, <a class="el" href="struct_threads_list.html">ThreadsList</a> *tlp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pushes a <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> on top of a stack list. <a href="#ga5818ce2d363d36402baece614b06e41b"></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__internals.html#gad9aa523aebdaeefa3cc4a311bc210e8a">list_remove</a> (<a class="el" href="struct_threads_list.html">ThreadsList</a> *tlp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pops a <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> from the top of a stack list and returns it. <a href="#gad9aa523aebdaeefa3cc4a311bc210e8a"></a><br/></td></tr>
</table>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="ga6d19d0f3ff1fa599b6d9783dec180451"></a><!-- doxytag: member="chlists.h::queue_init" ref="ga6d19d0f3ff1fa599b6d9783dec180451" args="(tqp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define queue_init</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname">tqp</td>
<td>&nbsp;)&nbsp;</td>
<td>&nbsp;&nbsp;&nbsp;((tqp)-&gt;p_next = (tqp)-&gt;p_prev = (<a class="el" href="struct_thread.html">Thread</a> *)(tqp));</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Threads queue initialization. </p>
<p>Definition at line <a class="el" href="chlists_8h_source.html#l00046">46</a> of file <a class="el" href="chlists_8h_source.html">chlists.h</a>.</p>
<p>Referenced by <a class="el" href="group__condvars.html#ga4c698ba6ce06089c08f989e126af9873">chCondInit()</a>, <a class="el" href="group__mutexes.html#gac55fe4d05aa6bbeb31594193d2e4d2b6">chMtxInit()</a>, <a class="el" href="group__semaphores.html#gafe8fc6155a871074e8017efd908b2c58">chSemInit()</a>, <a class="el" href="group__threads.html#ga4f6ae58bb3cedfc03aacde6d49e49d35">init_thread()</a>, and <a class="el" href="group__scheduler.html#gab258cc2856e5f6bb125907cc23358fbd">scheduler_init()</a>.</p>
</div>
</div>
<a class="anchor" id="gaaef72a9005ecd65e7b5c22e95ad82388"></a><!-- doxytag: member="chlists.h::list_init" ref="gaaef72a9005ecd65e7b5c22e95ad82388" args="(tlp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define list_init</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname">tlp</td>
<td>&nbsp;)&nbsp;</td>
<td>&nbsp;&nbsp;&nbsp;((tlp)-&gt;p_next = (<a class="el" href="struct_thread.html">Thread</a> *)(tlp))</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Threads list initialization. </p>
<p>Definition at line <a class="el" href="chlists_8h_source.html#l00051">51</a> of file <a class="el" href="chlists_8h_source.html">chlists.h</a>.</p>
<p>Referenced by <a class="el" href="group__threads.html#ga4f6ae58bb3cedfc03aacde6d49e49d35">init_thread()</a>.</p>
</div>
</div>
<a class="anchor" id="gadf402c10356566d82a6631c102b7f656"></a><!-- doxytag: member="chlists.h::isempty" ref="gadf402c10356566d82a6631c102b7f656" args="(p)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define isempty</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname">p</td>
<td>&nbsp;)&nbsp;</td>
<td>&nbsp;&nbsp;&nbsp;((p)-&gt;p_next == (<a class="el" href="struct_thread.html">Thread</a> *)(p))</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Evaluates to <code>TRUE</code> if the specified threads queue or list is empty. </p>
<p>Definition at line <a class="el" href="chlists_8h_source.html#l00057">57</a> of file <a class="el" href="chlists_8h_source.html">chlists.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga8f6bea56a53acc44758fe61c98d68a4e"></a><!-- doxytag: member="chlists.h::notempty" ref="ga8f6bea56a53acc44758fe61c98d68a4e" args="(p)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define notempty</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname">p</td>
<td>&nbsp;)&nbsp;</td>
<td>&nbsp;&nbsp;&nbsp;((p)-&gt;p_next != (<a class="el" href="struct_thread.html">Thread</a> *)(p))</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Evaluates to <code>TRUE</code> if the specified threads queue or list is not empty. </p>
<p>Definition at line <a class="el" href="chlists_8h_source.html#l00063">63</a> of file <a class="el" href="chlists_8h_source.html">chlists.h</a>.</p>
<p>Referenced by <a class="el" href="group__condvars.html#gadddadb68e2a2ce061c7df0d647da9996">chCondSignal()</a>, <a class="el" href="group__condvars.html#ga7b9d882c348124fed46a1afc3db6c02c">chCondSignalI()</a>, and <a class="el" href="group__threads.html#ga24ab3a3a4d70214ee360867a1c3c75ac">chThdExit()</a>.</p>
</div>
</div>
<a class="anchor" id="ga9ac5ac4cb62a9baa48d2004876852112"></a><!-- doxytag: member="chlists.h::_THREADSQUEUE_DATA" ref="ga9ac5ac4cb62a9baa48d2004876852112" args="(name)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define _THREADSQUEUE_DATA</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname">name</td>
<td>&nbsp;)&nbsp;</td>
<td>&nbsp;&nbsp;&nbsp;{(<a class="el" href="struct_thread.html">Thread</a> *)&amp;name, (<a class="el" href="struct_thread.html">Thread</a> *)&amp;name}</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Data part of a static threads queue initializer. </p>
<p>This macro should be used when statically initializing a threads queue that is part of a bigger structure.</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>name</em>&nbsp;</td><td>the name of the threads queue variable </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="chlists_8h_source.html#l00072">72</a> of file <a class="el" href="chlists_8h_source.html">chlists.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga08959a4e3dd5e492734970618a56078c"></a><!-- doxytag: member="chlists.h::THREADSQUEUE_DECL" ref="ga08959a4e3dd5e492734970618a56078c" args="(name)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define THREADSQUEUE_DECL</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname">name</td>
<td>&nbsp;)&nbsp;</td>
<td>&nbsp;&nbsp;&nbsp;<a class="el" href="struct_threads_queue.html">ThreadsQueue</a> name = _THREADSQUEUE_DATA(name)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Static threads queue initializer. </p>
<p>Statically initialized threads queues require no explicit initialization using <code><a class="el" href="group__internals.html#ga6d19d0f3ff1fa599b6d9783dec180451" title="Threads queue initialization.">queue_init()</a></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>name</em>&nbsp;</td><td>the name of the threads queue variable </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="chlists_8h_source.html#l00081">81</a> of file <a class="el" href="chlists_8h_source.html">chlists.h</a>.</p>
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga02226b866ae704435baf2ffe259ba0b2"></a><!-- doxytag: member="chlists.h::prio_insert" ref="ga02226b866ae704435baf2ffe259ba0b2" args="(Thread *tp, ThreadsQueue *tqp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void prio_insert </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_thread.html">Thread</a> *&nbsp;</td>
<td class="paramname"> <em>tp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_threads_queue.html">ThreadsQueue</a> *&nbsp;</td>
<td class="paramname"> <em>tqp</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Inserts a thread into a priority ordered queue. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>The insertion is done by scanning the list from the highest priority toward the lowest. </dd>
<dd>
This function is <b>not</b> an API.</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 pointer to the thread to be inserted in the list </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tqp</em>&nbsp;</td><td>the pointer to the threads list header </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="chlists_8c_source.html#l00049">49</a> of file <a class="el" href="chlists_8c_source.html">chlists.c</a>.</p>
<p>References <a class="el" href="struct_thread.html#a49d3270919a6e423a47de20bc57beaa1">Thread::p_next</a>, <a class="el" href="struct_thread.html#a7661cf39bbb29453ce0c48a94708fb69">Thread::p_prev</a>, and <a class="el" href="struct_thread.html#ae60cc22956f4c19965cb94045333aa9c">Thread::p_prio</a>.</p>
<p>Referenced by <a class="el" href="group__condvars.html#gab6357d80b01ed8d225ef1e30a66248f9">chCondWaitS()</a>, <a class="el" href="group__condvars.html#ga9cf6ebe4c9f28cb206fab14984a18d29">chCondWaitTimeoutS()</a>, and <a class="el" href="group__mutexes.html#ga2d6350c2d147d1165c359f30798205f5">chMtxLockS()</a>.</p>
</div>
</div>
<a class="anchor" id="gaf7072f75fdab9dcc5f7b8dcad212965c"></a><!-- doxytag: member="chlists.h::queue_insert" ref="gaf7072f75fdab9dcc5f7b8dcad212965c" args="(Thread *tp, ThreadsQueue *tqp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void queue_insert </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_thread.html">Thread</a> *&nbsp;</td>
<td class="paramname"> <em>tp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_threads_queue.html">ThreadsQueue</a> *&nbsp;</td>
<td class="paramname"> <em>tqp</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Inserts a <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> into a queue. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This function is <b>not</b> an API.</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 pointer to the thread to be inserted in the list </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tqp</em>&nbsp;</td><td>the pointer to the threads list header </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="chlists_8c_source.html#l00071">71</a> of file <a class="el" href="chlists_8c_source.html">chlists.c</a>.</p>
<p>References <a class="el" href="struct_thread.html#a49d3270919a6e423a47de20bc57beaa1">Thread::p_next</a>, <a class="el" href="struct_threads_queue.html#aefc0a5e3ba3ed03da122337bc13be8fa">ThreadsQueue::p_prev</a>, and <a class="el" href="struct_thread.html#a7661cf39bbb29453ce0c48a94708fb69">Thread::p_prev</a>.</p>
</div>
</div>
<a class="anchor" id="ga042479f09357fc59befebf4dfe0e9f4a"></a><!-- doxytag: member="chlists.h::fifo_remove" ref="ga042479f09357fc59befebf4dfe0e9f4a" args="(ThreadsQueue *tqp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct_thread.html">Thread</a> * fifo_remove </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_threads_queue.html">ThreadsQueue</a> *&nbsp;</td>
<td class="paramname"> <em>tqp</em></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Removes the first-out <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> from a queue and returns it. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>If the queue is priority ordered then this function returns the thread with the highest priority. </dd>
<dd>
This function is <b>not</b> an API.</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>tqp</em>&nbsp;</td><td>the pointer to the threads list header </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The removed thread pointer. </dd></dl>
<p>Definition at line <a class="el" href="chlists_8c_source.html#l00087">87</a> of file <a class="el" href="chlists_8c_source.html">chlists.c</a>.</p>
<p>References <a class="el" href="struct_thread.html#a49d3270919a6e423a47de20bc57beaa1">Thread::p_next</a>, and <a class="el" href="struct_threads_queue.html#af4a099c245d7ceecdf2f9755d05d0ed0">ThreadsQueue::p_next</a>.</p>
<p>Referenced by <a class="el" href="group__condvars.html#ga5cf1f4697985d81ee089b042391df6fc">chCondBroadcastI()</a>, <a class="el" href="group__condvars.html#gadddadb68e2a2ce061c7df0d647da9996">chCondSignal()</a>, <a class="el" href="group__condvars.html#ga7b9d882c348124fed46a1afc3db6c02c">chCondSignalI()</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__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#ga97c1c514b755a1e71caf2f19c1ccf986">chSchGoSleepS()</a>, <a class="el" href="group__semaphores.html#ga7ec0cbda23e49e2370e0b91f20baf05e">chSemSignal()</a>, <a class="el" href="group__semaphores.html#gaca0b70cf495a9cb7569e1cf5b07e2b3d">chSemSignalI()</a>, and <a class="el" href="group__semaphores.html#ga0dc7b4339506de346d67b4560b271e44">chSemSignalWait()</a>.</p>
</div>
</div>
<a class="anchor" id="gacacfe77140cab62948e63d898bf4dfba"></a><!-- doxytag: member="chlists.h::lifo_remove" ref="gacacfe77140cab62948e63d898bf4dfba" args="(ThreadsQueue *tqp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct_thread.html">Thread</a> * lifo_remove </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_threads_queue.html">ThreadsQueue</a> *&nbsp;</td>
<td class="paramname"> <em>tqp</em></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Removes the last-out <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> from a queue and returns it. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>If the queue is priority ordered then this function returns the thread with the lowest priority. </dd>
<dd>
This function is <b>not</b> an API.</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>tqp</em>&nbsp;</td><td>the pointer to the threads list header </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The removed thread pointer. </dd></dl>
<p>Definition at line <a class="el" href="chlists_8c_source.html#l00103">103</a> of file <a class="el" href="chlists_8c_source.html">chlists.c</a>.</p>
<p>References <a class="el" href="struct_thread.html#a7661cf39bbb29453ce0c48a94708fb69">Thread::p_prev</a>, and <a class="el" href="struct_threads_queue.html#aefc0a5e3ba3ed03da122337bc13be8fa">ThreadsQueue::p_prev</a>.</p>
<p>Referenced by <a class="el" href="group__semaphores.html#gae7972b6b22b80ac09bac5a186277ab81">chSemResetI()</a>.</p>
</div>
</div>
<a class="anchor" id="gafff11bcd31d7dc3d1a0a6c66f3fc6ec9"></a><!-- doxytag: member="chlists.h::dequeue" ref="gafff11bcd31d7dc3d1a0a6c66f3fc6ec9" 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> * dequeue </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>Removes a <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> from a queue and returns it. </p>
<p>The thread is removed from the queue regardless of its relative position and regardless the used insertion method. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This function is <b>not</b> an API.</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 pointer to the thread to be removed from the queue </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The removed thread pointer. </dd></dl>
<p>Definition at line <a class="el" href="chlists_8c_source.html#l00119">119</a> of file <a class="el" href="chlists_8c_source.html">chlists.c</a>.</p>
<p>References <a class="el" href="struct_thread.html#a49d3270919a6e423a47de20bc57beaa1">Thread::p_next</a>, and <a class="el" href="struct_thread.html#a7661cf39bbb29453ce0c48a94708fb69">Thread::p_prev</a>.</p>
<p>Referenced by <a class="el" href="group__mutexes.html#ga2d6350c2d147d1165c359f30798205f5">chMtxLockS()</a>.</p>
</div>
</div>
<a class="anchor" id="ga5818ce2d363d36402baece614b06e41b"></a><!-- doxytag: member="chlists.h::list_insert" ref="ga5818ce2d363d36402baece614b06e41b" args="(Thread *tp, ThreadsList *tlp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void list_insert </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_thread.html">Thread</a> *&nbsp;</td>
<td class="paramname"> <em>tp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_threads_list.html">ThreadsList</a> *&nbsp;</td>
<td class="paramname"> <em>tlp</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Pushes a <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> on top of a stack list. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This function is <b>not</b> an API.</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 pointer to the thread to be inserted in the list </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tlp</em>&nbsp;</td><td>the pointer to the threads list header </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="chlists_8c_source.html#l00133">133</a> of file <a class="el" href="chlists_8c_source.html">chlists.c</a>.</p>
<p>References <a class="el" href="struct_threads_list.html#a9076f9b8ac5d59067adc11faa8998371">ThreadsList::p_next</a>, and <a class="el" href="struct_thread.html#a49d3270919a6e423a47de20bc57beaa1">Thread::p_next</a>.</p>
<p>Referenced by <a class="el" href="group__threads.html#ga94a5727ecdbe0f738dfc8e1ede1c3409">chThdWait()</a>.</p>
</div>
</div>
<a class="anchor" id="gad9aa523aebdaeefa3cc4a311bc210e8a"></a><!-- doxytag: member="chlists.h::list_remove" ref="gad9aa523aebdaeefa3cc4a311bc210e8a" args="(ThreadsList *tlp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct_thread.html">Thread</a> * list_remove </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_threads_list.html">ThreadsList</a> *&nbsp;</td>
<td class="paramname"> <em>tlp</em></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Pops a <a class="el" href="struct_thread.html" title="Structure representing a thread.">Thread</a> from the top of a stack list and returns it. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>The list must be non-empty before calling this function. </dd>
<dd>
This function is <b>not</b> an API.</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>tlp</em>&nbsp;</td><td>the pointer to the threads list header </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The removed thread pointer. </dd></dl>
<p>Definition at line <a class="el" href="chlists_8c_source.html#l00147">147</a> of file <a class="el" href="chlists_8c_source.html">chlists.c</a>.</p>
<p>References <a class="el" href="struct_thread.html#a49d3270919a6e423a47de20bc57beaa1">Thread::p_next</a>, and <a class="el" href="struct_threads_list.html#a9076f9b8ac5d59067adc11faa8998371">ThreadsList::p_next</a>.</p>
<p>Referenced by <a class="el" href="group__threads.html#ga24ab3a3a4d70214ee360867a1c3c75ac">chThdExit()</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>