MCB1700_Welcome/Doxygen/html/list_8h_source.html

609 lines
106 KiB
HTML
Raw Permalink Blame History

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Labor04: list.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Labor04
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('list_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">list.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="list_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="list_8h.html#a542a8d55e98bc407593979e61f83cd02"> 1</a></span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * FreeRTOS Kernel V10.0.0</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy of</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * this software and associated documentation files (the &quot;Software&quot;), to deal in</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the Software without restriction, including without limitation the rights to</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Software, and to permit persons to whom the Software is furnished to do so,</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * subject to the following conditions:</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * copies or substantial portions of the Software. If you wish to use our Amazon</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * FreeRTOS name, please do so in a fair use way that does not cause confusion.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * http://www.FreeRTOS.org</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * http://aws.amazon.com/freertos</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * 1 tab == 4 spaces!</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * This is the list implementation used by the scheduler. While it is tailored</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * heavily for the schedulers needs, it is also available for use by</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * application code.</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * list_ts can only store pointers to list_item_ts. Each ListItem_t contains a</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * numeric value (xItemValue). Most of the time the lists are sorted in</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * descending item value order.</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * Lists are created already containing one list item. The value of this</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * item is the maximum possible that can be stored, it is therefore always at</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * the end of the list and acts as a marker. The list member pxHead always</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * points to this marker - even though it is at the tail of the list. This</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * is because the tail contains a wrap back pointer to the true head of</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * the list.</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> * In addition to it&#39;s value, each list item contains a pointer to the next</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * item in the list (pxNext), a pointer to the list it is in (pxContainer)</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * and a pointer to back to the object that contains it. These later two</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * pointers are included for efficiency of list manipulation. There is</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * effectively a two way link between the object containing the list item and</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * the list item itself.</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * \page ListIntroduction List Implementation</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> * \ingroup FreeRTOSIntro</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#ifndef INC_FREERTOS_H</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#error FreeRTOS.h must be included before list.h</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#ifndef LIST_H</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#define LIST_H</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * The list structure members are modified from within interrupts, and therefore</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * by rights should be declared volatile. However, they are only modified in a</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * functionally atomic way (within critical sections of with the scheduler</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * suspended) and are either passed by reference into a function or indexed via</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * a volatile variable. Therefore, in all use cases tested so far, the volatile</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * qualifier can be omitted in order to provide a moderate performance</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * improvement without adversely affecting functional behaviour. The assembly</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * instructions generated by the IAR, ARM and GCC compilers when the respective</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * compiler&#39;s options were set for maximum optimisation has been inspected and</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> * deemed to be as intended. That said, as compiler technology advances, and</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * especially if aggressive cross module optimisation is used (a use case that</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * has not been exercised to any great extend) then it is feasible that the</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * volatile qualifier will be needed for correct optimisation. It is expected</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * that a compiler removing essential code because, without the volatile</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> * qualifier on the list structure members and with aggressive cross module</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * optimisation, the compiler deemed the code unnecessary will result in</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> * complete and obvious failure of the scheduler. If this is ever experienced</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> * then the volatile qualifier can be inserted in the relevant places within the</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> * list structures by simply defining configLIST_VOLATILE to volatile in</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> * FreeRTOSConfig.h (as per the example at the bottom of this comment block).</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> * If configLIST_VOLATILE is not defined then the preprocessor directives below</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> * will simply #define configLIST_VOLATILE away completely.</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> * To use volatile list structure members then add the following line to</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> * FreeRTOSConfig.h (without the quotes):</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> * &quot;#define configLIST_VOLATILE volatile&quot;</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor">#ifndef configLIST_VOLATILE</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="list_8h.html#a2d5de557c5561c8980d1bf51d87d8cba"> 93</a></span>&#160;<span class="preprocessor">#define configLIST_VOLATILE</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* configSUPPORT_CROSS_MODULE_OPTIMISATION */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">/* Macros that can be used to place known values within the list structures,</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment">then check that the known values do not get corrupted during the execution of</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment">the application. These may catch the list data structures being overwritten in</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment">memory. They will not catch data errors caused by incorrect configuration or</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment">use of FreeRTOS.*/</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor">#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 0 )</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment">/* Define the macros to do nothing. */</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="list_8h.html#a3611bd5d5d87cb26ac1dc7a4852b94a0"> 107</a></span>&#160;<span class="preprocessor">#define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="list_8h.html#abf45f853974db484cd7df434bd006e98"> 108</a></span>&#160;<span class="preprocessor">#define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="list_8h.html#a3a52b5a4f70d3a07e37a5814a23ba880"> 109</a></span>&#160;<span class="preprocessor">#define listFIRST_LIST_INTEGRITY_CHECK_VALUE</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="list_8h.html#a87dc70c22e3ff0eba560d6f357472634"> 110</a></span>&#160;<span class="preprocessor">#define listSECOND_LIST_INTEGRITY_CHECK_VALUE</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="list_8h.html#a0e65118e1baa7ab805cdfb37e580501d"> 111</a></span>&#160;<span class="preprocessor">#define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem )</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="list_8h.html#ac8b9d912bdcfdb5544f373d2a94268b2"> 112</a></span>&#160;<span class="preprocessor">#define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem )</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="list_8h.html#a5d68b1187d09c64d6ee329786cb0289b"> 113</a></span>&#160;<span class="preprocessor">#define listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList )</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="list_8h.html#a83b40c6e61534ef41229bd912dacab48"> 114</a></span>&#160;<span class="preprocessor">#define listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList )</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="list_8h.html#a95b994725c299cdc81c74efc16210cc6"> 115</a></span>&#160;<span class="preprocessor">#define listTEST_LIST_ITEM_INTEGRITY( pxItem )</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="list_8h.html#a337d6137e0a4d37321efc5c2f31dba22"> 116</a></span>&#160;<span class="preprocessor">#define listTEST_LIST_INTEGRITY( pxList )</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment">/* Define macros that add new members into the list structures. */</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor">#define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE TickType_t xListItemIntegrityValue1;</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor">#define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE TickType_t xListItemIntegrityValue2;</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor">#define listFIRST_LIST_INTEGRITY_CHECK_VALUE TickType_t xListIntegrityValue1;</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor">#define listSECOND_LIST_INTEGRITY_CHECK_VALUE TickType_t xListIntegrityValue2;</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment">/* Define macros that set the new structure members to known values. */</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="preprocessor">#define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) ( pxItem )-&gt;xListItemIntegrityValue1 = pdINTEGRITY_CHECK_VALUE</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="preprocessor">#define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) ( pxItem )-&gt;xListItemIntegrityValue2 = pdINTEGRITY_CHECK_VALUE</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor">#define listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList ) ( pxList )-&gt;xListIntegrityValue1 = pdINTEGRITY_CHECK_VALUE</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor">#define listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList ) ( pxList )-&gt;xListIntegrityValue2 = pdINTEGRITY_CHECK_VALUE</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; </div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment">/* Define macros that will assert if one of the structure members does not</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment">contain its expected value. */</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="preprocessor">#define listTEST_LIST_ITEM_INTEGRITY( pxItem ) configASSERT( ( ( pxItem )-&gt;xListItemIntegrityValue1 == pdINTEGRITY_CHECK_VALUE ) &amp;&amp; ( ( pxItem )-&gt;xListItemIntegrityValue2 == pdINTEGRITY_CHECK_VALUE ) )</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="preprocessor">#define listTEST_LIST_INTEGRITY( pxList ) configASSERT( ( ( pxList )-&gt;xListIntegrityValue1 == pdINTEGRITY_CHECK_VALUE ) &amp;&amp; ( ( pxList )-&gt;xListIntegrityValue2 == pdINTEGRITY_CHECK_VALUE ) )</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; </div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> * Definition of the only type of object that a list can contain.</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="structx_l_i_s_t___i_t_e_m.html"> 140</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structx_l_i_s_t___i_t_e_m.html">xLIST_ITEM</a></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;{</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="list_8h.html#a3611bd5d5d87cb26ac1dc7a4852b94a0">listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE</a> <span class="comment">/*&lt; Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="structx_l_i_s_t___i_t_e_m.html#aa6f3caf3e73107fb0da6fede4b06f104"> 143</a></span>&#160; <a class="code" href="list_8h.html#a2d5de557c5561c8980d1bf51d87d8cba">configLIST_VOLATILE</a> <a class="code" href="portmacro_8h.html#aa69c48c6e902ce54f70886e6573c92a9">TickType_t</a> <a class="code" href="structx_l_i_s_t___i_t_e_m.html#aa6f3caf3e73107fb0da6fede4b06f104">xItemValue</a>; <span class="comment">/*&lt; The value being listed. In most cases this is used to sort the list in descending order. */</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="structx_l_i_s_t___i_t_e_m.html#a77927cd93dda0c59b3855aca58881ca1"> 144</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structx_l_i_s_t___i_t_e_m.html">xLIST_ITEM</a> * <a class="code" href="list_8h.html#a2d5de557c5561c8980d1bf51d87d8cba">configLIST_VOLATILE</a> <a class="code" href="structx_l_i_s_t___i_t_e_m.html#a77927cd93dda0c59b3855aca58881ca1">pxNext</a>; <span class="comment">/*&lt; Pointer to the next ListItem_t in the list. */</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="structx_l_i_s_t___i_t_e_m.html#a0294e93ecc18bcdb723038af1027505d"> 145</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structx_l_i_s_t___i_t_e_m.html">xLIST_ITEM</a> * <a class="code" href="list_8h.html#a2d5de557c5561c8980d1bf51d87d8cba">configLIST_VOLATILE</a> <a class="code" href="structx_l_i_s_t___i_t_e_m.html#a0294e93ecc18bcdb723038af1027505d">pxPrevious</a>; <span class="comment">/*&lt; Pointer to the previous ListItem_t in the list. */</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="structx_l_i_s_t___i_t_e_m.html#aeb54d184fbcccb5748e66cb2426e3b3f"> 146</a></span>&#160; <span class="keywordtype">void</span> * <a class="code" href="structx_l_i_s_t___i_t_e_m.html#aeb54d184fbcccb5748e66cb2426e3b3f">pvOwner</a>; <span class="comment">/*&lt; Pointer to the object (normally a TCB) that contains the list item. There is therefore a two way link between the object containing the list item and the list item itself. */</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="structx_l_i_s_t___i_t_e_m.html#a0a7b95bc338d7d9df18e10607893d103"> 147</a></span>&#160; <span class="keywordtype">void</span> * <a class="code" href="list_8h.html#a2d5de557c5561c8980d1bf51d87d8cba">configLIST_VOLATILE</a> <a class="code" href="structx_l_i_s_t___i_t_e_m.html#a0a7b95bc338d7d9df18e10607893d103">pvContainer</a>; <span class="comment">/*&lt; Pointer to the list in which this list item is placed (if any). */</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="list_8h.html#abf45f853974db484cd7df434bd006e98">listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE</a> <span class="comment">/*&lt; Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;};</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structx_l_i_s_t___i_t_e_m.html">xLIST_ITEM</a> <a class="code" href="structx_l_i_s_t___i_t_e_m.html">ListItem_t</a>; <span class="comment">/* For some reason lint wants this as two separate definitions. */</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html"> 152</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html">xMINI_LIST_ITEM</a></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;{</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="list_8h.html#a3611bd5d5d87cb26ac1dc7a4852b94a0">listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE</a> <span class="comment">/*&lt; Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html#aa6f3caf3e73107fb0da6fede4b06f104"> 155</a></span>&#160; <a class="code" href="list_8h.html#a2d5de557c5561c8980d1bf51d87d8cba">configLIST_VOLATILE</a> <a class="code" href="portmacro_8h.html#aa69c48c6e902ce54f70886e6573c92a9">TickType_t</a> <a class="code" href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html#aa6f3caf3e73107fb0da6fede4b06f104">xItemValue</a>;</div>
<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html#a77927cd93dda0c59b3855aca58881ca1"> 156</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structx_l_i_s_t___i_t_e_m.html">xLIST_ITEM</a> * <a class="code" href="list_8h.html#a2d5de557c5561c8980d1bf51d87d8cba">configLIST_VOLATILE</a> <a class="code" href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html#a77927cd93dda0c59b3855aca58881ca1">pxNext</a>;</div>
<div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html#a0294e93ecc18bcdb723038af1027505d"> 157</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structx_l_i_s_t___i_t_e_m.html">xLIST_ITEM</a> * <a class="code" href="list_8h.html#a2d5de557c5561c8980d1bf51d87d8cba">configLIST_VOLATILE</a> <a class="code" href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html#a0294e93ecc18bcdb723038af1027505d">pxPrevious</a>;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;};</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html">xMINI_LIST_ITEM</a> <a class="code" href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html">MiniListItem_t</a>;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> * Definition of the type of queue used by the scheduler.</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="structx_l_i_s_t.html"> 164</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structx_l_i_s_t.html">xLIST</a></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;{</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="list_8h.html#a3a52b5a4f70d3a07e37a5814a23ba880">listFIRST_LIST_INTEGRITY_CHECK_VALUE</a> <span class="comment">/*&lt; Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="structx_l_i_s_t.html#a8fa392ba5e75883d007713e1e6c83a76"> 167</a></span>&#160; <span class="keyword">volatile</span> <a class="code" href="portmacro_8h.html#a646f89d4298e4f5afd522202b11cb2e6">UBaseType_t</a> <a class="code" href="structx_l_i_s_t.html#a8fa392ba5e75883d007713e1e6c83a76">uxNumberOfItems</a>;</div>
<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="structx_l_i_s_t.html#ae8639154918acc3f75d718480322aa82"> 168</a></span>&#160; <a class="code" href="structx_l_i_s_t___i_t_e_m.html">ListItem_t</a> * <a class="code" href="list_8h.html#a2d5de557c5561c8980d1bf51d87d8cba">configLIST_VOLATILE</a> <a class="code" href="structx_l_i_s_t.html#ae8639154918acc3f75d718480322aa82">pxIndex</a>; <span class="comment">/*&lt; Used to walk through the list. Points to the last item returned by a call to listGET_OWNER_OF_NEXT_ENTRY (). */</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="structx_l_i_s_t.html#a83a65be4e3a2bb70855742896126bf63"> 169</a></span>&#160; <a class="code" href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html">MiniListItem_t</a> <a class="code" href="structx_l_i_s_t.html#a83a65be4e3a2bb70855742896126bf63">xListEnd</a>; <span class="comment">/*&lt; List item that contains the maximum possible item value meaning it is always at the end of the list and is therefore used as a marker. */</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="list_8h.html#a87dc70c22e3ff0eba560d6f357472634">listSECOND_LIST_INTEGRITY_CHECK_VALUE</a> <span class="comment">/*&lt; Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="list_8h.html#ad14d7e3de1350e459c7c23c6f59c902a"> 171</a></span>&#160;} <a class="code" href="list_8h.html#ad14d7e3de1350e459c7c23c6f59c902a">List_t</a>;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; </div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"> * Access macro to set the owner of a list item. The owner of a list item</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> * is the object (usually a TCB) that contains the list item.</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> * \page listSET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="list_8h.html#acc01a08e534b54fe438847ef02e5060a"> 180</a></span>&#160;<span class="preprocessor">#define listSET_LIST_ITEM_OWNER( pxListItem, pxOwner ) ( ( pxListItem )-&gt;pvOwner = ( void * ) ( pxOwner ) )</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; </div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment"> * Access macro to get the owner of a list item. The owner of a list item</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"> * is the object (usually a TCB) that contains the list item.</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"> * \page listSET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="list_8h.html#aa9469bd061a44b4f75d30c6175f66d5c"> 189</a></span>&#160;<span class="preprocessor">#define listGET_LIST_ITEM_OWNER( pxListItem ) ( ( pxListItem )-&gt;pvOwner )</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> * Access macro to set the value of the list item. In most cases the value is</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> * used to sort the list in descending order.</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"> * \page listSET_LIST_ITEM_VALUE listSET_LIST_ITEM_VALUE</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="list_8h.html#a83e95e61652f032fdc26aa622f5e2610"> 198</a></span>&#160;<span class="preprocessor">#define listSET_LIST_ITEM_VALUE( pxListItem, xValue ) ( ( pxListItem )-&gt;xItemValue = ( xValue ) )</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; </div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"> * Access macro to retrieve the value of the list item. The value can</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> * represent anything - for example the priority of a task, or the time at</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment"> * which a task should be unblocked.</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment"> * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="list_8h.html#aa50d09950abc602741d7ebe8387f4e1a"> 208</a></span>&#160;<span class="preprocessor">#define listGET_LIST_ITEM_VALUE( pxListItem ) ( ( pxListItem )-&gt;xItemValue )</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; </div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"> * Access macro to retrieve the value of the list item at the head of a given</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment"> * list.</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment"> * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="list_8h.html#a63742b27958b959ac9ab69d8e9aed241"> 217</a></span>&#160;<span class="preprocessor">#define listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxList ) ( ( ( pxList )-&gt;xListEnd ).pxNext-&gt;xItemValue )</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> * Return the list item at the head of the list.</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"> * \page listGET_HEAD_ENTRY listGET_HEAD_ENTRY</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="list_8h.html#a987cb2766e509022c23b654907cea199"> 225</a></span>&#160;<span class="preprocessor">#define listGET_HEAD_ENTRY( pxList ) ( ( ( pxList )-&gt;xListEnd ).pxNext )</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"> * Return the list item at the head of the list.</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"> * \page listGET_NEXT listGET_NEXT</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="list_8h.html#aabf78d3f24ba56ac1d0bf0179438b960"> 233</a></span>&#160;<span class="preprocessor">#define listGET_NEXT( pxListItem ) ( ( pxListItem )-&gt;pxNext )</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"> * Return the list item that marks the end of the list</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> * \page listGET_END_MARKER listGET_END_MARKER</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="list_8h.html#a96cb0919f02e5c0d8e41ded0e65197a3"> 241</a></span>&#160;<span class="preprocessor">#define listGET_END_MARKER( pxList ) ( ( ListItem_t const * ) ( &amp;( ( pxList )-&gt;xListEnd ) ) )</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment"> * Access macro to determine if a list contains any items. The macro will</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment"> * only have the value true if the list is empty.</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment"> * \page listLIST_IS_EMPTY listLIST_IS_EMPTY</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="list_8h.html#aaba6eb05d67ebc8026bea29193eca28f"> 250</a></span>&#160;<span class="preprocessor">#define listLIST_IS_EMPTY( pxList ) ( ( BaseType_t ) ( ( pxList )-&gt;uxNumberOfItems == ( UBaseType_t ) 0 ) )</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment"> * Access macro to return the number of items in the list.</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="list_8h.html#a18b4aded515bdc512017ea6e677a13bb"> 255</a></span>&#160;<span class="preprocessor">#define listCURRENT_LIST_LENGTH( pxList ) ( ( pxList )-&gt;uxNumberOfItems )</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; </div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"> * Access function to obtain the owner of the next entry in a list.</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"> * The list member pxIndex is used to walk through a list. Calling</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"> * listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"> * and returns that entry&#39;s pxOwner parameter. Using multiple calls to this</span></div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> * function it is therefore possible to move through every item contained in</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"> * a list.</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"> * The pxOwner parameter of a list item is a pointer to the object that owns</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"> * the list item. In the scheduler this is normally a task control block.</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment"> * The pxOwner parameter effectively creates a two way link between the list</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"> * item and its owner.</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"> * @param pxTCB pxTCB is set to the address of the owner of the next list item.</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"> * @param pxList The list from which the next item owner is to be returned.</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment"> * \page listGET_OWNER_OF_NEXT_ENTRY listGET_OWNER_OF_NEXT_ENTRY</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="list_8h.html#a275d9855e9b71652e2b8f6e2ed62aadd"> 277</a></span>&#160;<span class="preprocessor">#define listGET_OWNER_OF_NEXT_ENTRY( pxTCB, pxList ) \</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor">{ \</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor">List_t * const pxConstList = ( pxList ); \</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="preprocessor"> </span><span class="comment">/* Increment the index to the next item and return the item, ensuring */</span><span class="preprocessor"> \</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor"> </span><span class="comment">/* we don&#39;t return the marker used at the end of the list. */</span><span class="preprocessor"> \</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="preprocessor"> ( pxConstList )-&gt;pxIndex = ( pxConstList )-&gt;pxIndex-&gt;pxNext; \</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="preprocessor"> if( ( void * ) ( pxConstList )-&gt;pxIndex == ( void * ) &amp;( ( pxConstList )-&gt;xListEnd ) ) \</span></div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="preprocessor"> ( pxConstList )-&gt;pxIndex = ( pxConstList )-&gt;pxIndex-&gt;pxNext; \</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="preprocessor"> ( pxTCB ) = ( pxConstList )-&gt;pxIndex-&gt;pvOwner; \</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="preprocessor">}</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; </div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; </div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="comment"> * Access function to obtain the owner of the first entry in a list. Lists</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment"> * are normally sorted in ascending item value order.</span></div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment"> * This function returns the pxOwner member of the first item in the list.</span></div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment"> * The pxOwner parameter of a list item is a pointer to the object that owns</span></div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment"> * the list item. In the scheduler this is normally a task control block.</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment"> * The pxOwner parameter effectively creates a two way link between the list</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"> * item and its owner.</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"> * @param pxList The list from which the owner of the head item is to be</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> * returned.</span></div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment"> * \page listGET_OWNER_OF_HEAD_ENTRY listGET_OWNER_OF_HEAD_ENTRY</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="list_8h.html#a715561302af8cb5b74416b23ce4e999d"> 307</a></span>&#160;<span class="preprocessor">#define listGET_OWNER_OF_HEAD_ENTRY( pxList ) ( (&amp;( ( pxList )-&gt;xListEnd ))-&gt;pxNext-&gt;pvOwner )</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment"> * Check to see if a list item is within a list. The list item maintains a</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment"> * &quot;container&quot; pointer that points to the list it is in. All this macro does</span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment"> * is check to see if the container and the list match.</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="comment"> * @param pxList The list we want to know if the list item is within.</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment"> * @param pxListItem The list item we want to know if is in the list.</span></div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment"> * @return pdTRUE if the list item is in the list, otherwise pdFALSE.</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="list_8h.html#a60302b468d21f8c53d13987372acb8fa"> 318</a></span>&#160;<span class="preprocessor">#define listIS_CONTAINED_WITHIN( pxList, pxListItem ) ( ( BaseType_t ) ( ( pxListItem )-&gt;pvContainer == ( void * ) ( pxList ) ) )</span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; </div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="comment"> * Return the list a list item is contained within (referenced from).</span></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="comment"> * @param pxListItem The list item being queried.</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment"> * @return A pointer to the List_t object that references the pxListItem</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="list_8h.html#a7c4dff11380cd843ed0b6a8dc065916b"> 326</a></span>&#160;<span class="preprocessor">#define listLIST_ITEM_CONTAINER( pxListItem ) ( ( pxListItem )-&gt;pvContainer )</span></div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; </div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"> * This provides a crude means of knowing if a list has been initialised, as</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment"> * pxList-&gt;xListEnd.xItemValue is set to portMAX_DELAY by the vListInitialise()</span></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="comment"> * function.</span></div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="list_8h.html#a7e17f81438dd0bd705714267a611ff28"> 333</a></span>&#160;<span class="preprocessor">#define listLIST_IS_INITIALISED( pxList ) ( ( pxList )-&gt;xListEnd.xItemValue == portMAX_DELAY )</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; </div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment"> * Must be called before a list is used! This initialises all the members</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment"> * of the list structure and inserts the xListEnd item into the list as a</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment"> * marker to the back of the list.</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment"> * @param pxList Pointer to the list being initialised.</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="comment"> * \page vListInitialise vListInitialise</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="keywordtype">void</span> <a class="code" href="list_8h.html#adeef7734d7d6d9a3eea642a70c106919">vListInitialise</a>( <a class="code" href="structx_l_i_s_t.html">List_t</a> * <span class="keyword">const</span> pxList ) <a class="code" href="mpu__wrappers_8h.html#a4785c4f4a8c04b835139dcc2a6682078">PRIVILEGED_FUNCTION</a>;</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; </div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment"> * Must be called before a list item is used. This sets the list container to</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment"> * null so the item does not think that it is already contained in a list.</span></div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment"> * @param pxItem Pointer to the list item being initialised.</span></div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment"> * \page vListInitialiseItem vListInitialiseItem</span></div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="keywordtype">void</span> <a class="code" href="list_8h.html#ab91611baae53be209a05d211f55f5395">vListInitialiseItem</a>( <a class="code" href="structx_l_i_s_t___i_t_e_m.html">ListItem_t</a> * <span class="keyword">const</span> pxItem ) <a class="code" href="mpu__wrappers_8h.html#a4785c4f4a8c04b835139dcc2a6682078">PRIVILEGED_FUNCTION</a>;</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; </div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment"> * Insert a list item into a list. The item will be inserted into the list in</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment"> * a position determined by its item value (descending item value order).</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"> * @param pxList The list into which the item is to be inserted.</span></div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment"> * @param pxNewListItem The item that is to be placed in the list.</span></div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment"> * \page vListInsert vListInsert</span></div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="keywordtype">void</span> <a class="code" href="list_8h.html#aa129290da5cbda47dffb7bf877b2f02a">vListInsert</a>( <a class="code" href="structx_l_i_s_t.html">List_t</a> * <span class="keyword">const</span> pxList, <a class="code" href="structx_l_i_s_t___i_t_e_m.html">ListItem_t</a> * <span class="keyword">const</span> pxNewListItem ) <a class="code" href="mpu__wrappers_8h.html#a4785c4f4a8c04b835139dcc2a6682078">PRIVILEGED_FUNCTION</a>;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; </div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment"> * Insert a list item into a list. The item will be inserted in a position</span></div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment"> * such that it will be the last item within the list returned by multiple</span></div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment"> * calls to listGET_OWNER_OF_NEXT_ENTRY.</span></div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="comment"> * The list member pxIndex is used to walk through a list. Calling</span></div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="comment"> * listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list.</span></div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="comment"> * Placing an item in a list using vListInsertEnd effectively places the item</span></div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="comment"> * in the list position pointed to by pxIndex. This means that every other</span></div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="comment"> * item within the list will be returned by listGET_OWNER_OF_NEXT_ENTRY before</span></div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="comment"> * the pxIndex parameter again points to the item being inserted.</span></div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="comment"> * @param pxList The list into which the item is to be inserted.</span></div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment"> * @param pxNewListItem The list item to be inserted into the list.</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="comment"> * \page vListInsertEnd vListInsertEnd</span></div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="keywordtype">void</span> <a class="code" href="list_8h.html#a71a6a6099b3cbd8f90539aabe5c9e572">vListInsertEnd</a>( <a class="code" href="structx_l_i_s_t.html">List_t</a> * <span class="keyword">const</span> pxList, <a class="code" href="structx_l_i_s_t___i_t_e_m.html">ListItem_t</a> * <span class="keyword">const</span> pxNewListItem ) <a class="code" href="mpu__wrappers_8h.html#a4785c4f4a8c04b835139dcc2a6682078">PRIVILEGED_FUNCTION</a>;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; </div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="comment"> * Remove an item from a list. The list item has a pointer to the list that</span></div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"> * it is in, so only the list item need be passed into the function.</span></div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment"> * @param uxListRemove The item to be removed. The item will remove itself from</span></div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"> * the list pointed to by it&#39;s pxContainer parameter.</span></div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="comment"> * @return The number of items that remain in the list after the list item has</span></div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="comment"> * been removed.</span></div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="comment"> * \page uxListRemove uxListRemove</span></div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="comment"> * \ingroup LinkedList</span></div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<a class="code" href="portmacro_8h.html#a646f89d4298e4f5afd522202b11cb2e6">UBaseType_t</a> <a class="code" href="list_8h.html#a2eb1558482076fff8cafc63419c2d34a">uxListRemove</a>( <a class="code" href="structx_l_i_s_t___i_t_e_m.html">ListItem_t</a> * <span class="keyword">const</span> pxItemToRemove ) <a class="code" href="mpu__wrappers_8h.html#a4785c4f4a8c04b835139dcc2a6682078">PRIVILEGED_FUNCTION</a>;</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; </div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;}</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; </div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; </div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="a_hei_o_s___thread_8c_html_a1168a5ee1302d25a570b5849f005711c"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a1168a5ee1302d25a570b5849f005711c">Thread_ready</a></div><div class="ttdeci">Thread_t * Thread_ready</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:22</div></div>
<div class="ttc" id="alist_8h_html_ac8b9d912bdcfdb5544f373d2a94268b2"><div class="ttname"><a href="list_8h.html#ac8b9d912bdcfdb5544f373d2a94268b2">listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE</a></div><div class="ttdeci">#define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE(pxItem)</div><div class="ttdef"><b>Definition:</b> list.h:112</div></div>
<div class="ttc" id="alist_8h_html_a95b994725c299cdc81c74efc16210cc6"><div class="ttname"><a href="list_8h.html#a95b994725c299cdc81c74efc16210cc6">listTEST_LIST_ITEM_INTEGRITY</a></div><div class="ttdeci">#define listTEST_LIST_ITEM_INTEGRITY(pxItem)</div><div class="ttdef"><b>Definition:</b> list.h:115</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_adb098ee17a421881935bece55c70311e"><div class="ttname"><a href="_hei_o_s___thread_8c.html#adb098ee17a421881935bece55c70311e">thread_resume</a></div><div class="ttdeci">void thread_resume(Thread_t *Thread)</div><div class="ttdoc">Diese Funktion f<>gt den <20>bergebenen Thread zur Ready-Liste hinzu.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:282</div></div>
<div class="ttc" id="astructx_l_i_s_t_html_ae8639154918acc3f75d718480322aa82"><div class="ttname"><a href="structx_l_i_s_t.html#ae8639154918acc3f75d718480322aa82">xLIST::pxIndex</a></div><div class="ttdeci">ListItem_t *configLIST_VOLATILE pxIndex</div><div class="ttdef"><b>Definition:</b> list.h:168</div></div>
<div class="ttc" id="astructx_l_i_s_t___i_t_e_m_html_aeb54d184fbcccb5748e66cb2426e3b3f"><div class="ttname"><a href="structx_l_i_s_t___i_t_e_m.html#aeb54d184fbcccb5748e66cb2426e3b3f">xLIST_ITEM::pvOwner</a></div><div class="ttdeci">void * pvOwner</div><div class="ttdef"><b>Definition:</b> list.h:146</div></div>
<div class="ttc" id="aportmacro_8h_html_a72723ba1e4a85ca14f25c2b9e066613d"><div class="ttname"><a href="portmacro_8h.html#a72723ba1e4a85ca14f25c2b9e066613d">portMAX_DELAY</a></div><div class="ttdeci">#define portMAX_DELAY</div><div class="ttdef"><b>Definition:</b> portmacro.h:65</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a380c8a2fe968f86005d132a7e6cdbee4"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a380c8a2fe968f86005d132a7e6cdbee4">Thread_run</a></div><div class="ttdeci">Thread_t * Thread_run</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:26</div></div>
<div class="ttc" id="atask_8h_html"><div class="ttname"><a href="task_8h.html">task.h</a></div></div>
<div class="ttc" id="astructx_l_i_s_t_html"><div class="ttname"><a href="structx_l_i_s_t.html">xLIST</a></div><div class="ttdef"><b>Definition:</b> list.h:165</div></div>
<div class="ttc" id="a_app_board2_buttons_8h_html_aa6437d6d77fb2ef436f6dd33561974cc"><div class="ttname"><a href="_app_board2_buttons_8h.html#aa6437d6d77fb2ef436f6dd33561974cc">BUTTON_T6</a></div><div class="ttdeci">#define BUTTON_T6</div><div class="ttdef"><b>Definition:</b> AppBoard2Buttons.h:29</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a68469423a46b5ee543b5ee42cbbd1249"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a68469423a46b5ee543b5ee42cbbd1249">thread_suspend</a></div><div class="ttdeci">void thread_suspend(Thread_t *Thread)</div><div class="ttdoc">Diese Funktion entfernt einen Thread von der Ready-Liste und l<>st gegebenenfalls einen Kontextwechsel au...</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:264</div></div>
<div class="ttc" id="a_free_r_t_o_s_config_8h_html_a9f213227674effff0122a75d94d87938"><div class="ttname"><a href="_free_r_t_o_s_config_8h.html#a9f213227674effff0122a75d94d87938">configTOTAL_HEAP_SIZE</a></div><div class="ttdeci">#define configTOTAL_HEAP_SIZE</div><div class="ttdef"><b>Definition:</b> FreeRTOSConfig.h:33</div></div>
<div class="ttc" id="a_app_board2_buttons_8h_html_a12e1aaac7834f96cfaa89db256e07a0f"><div class="ttname"><a href="_app_board2_buttons_8h.html#a12e1aaac7834f96cfaa89db256e07a0f">BUTTON_T3</a></div><div class="ttdeci">#define BUTTON_T3</div><div class="ttdef"><b>Definition:</b> AppBoard2Buttons.h:26</div></div>
<div class="ttc" id="aheap__1_8c_html_a1e7cea2fd1bc894ea3b5f5e8179d259b"><div class="ttname"><a href="heap__1_8c.html#a1e7cea2fd1bc894ea3b5f5e8179d259b">vPortFree</a></div><div class="ttdeci">void vPortFree(void *pv)</div><div class="ttdef"><b>Definition:</b> heap_1.c:123</div></div>
<div class="ttc" id="aportable_8h_html_a92f6cfc08bf7459db3227a18ae8b6b59"><div class="ttname"><a href="portable_8h.html#a92f6cfc08bf7459db3227a18ae8b6b59">portBYTE_ALIGNMENT_MASK</a></div><div class="ttdeci">#define portBYTE_ALIGNMENT_MASK</div><div class="ttdef"><b>Definition:</b> portable.h:65</div></div>
<div class="ttc" id="alist_8c_html_aa0831d347bba16bfbe524f4faa790b9d"><div class="ttname"><a href="list_8c.html#aa0831d347bba16bfbe524f4faa790b9d">vListInitialise</a></div><div class="ttdeci">void vListInitialise(List_t *const pxList)</div><div class="ttdef"><b>Definition:</b> list.c:38</div></div>
<div class="ttc" id="a_e_s2___v4__app_8h_html"><div class="ttname"><a href="_e_s2___v4__app_8h.html">ES2_V4_app.h</a></div><div class="ttdoc">global header file for project</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a37a51408555bf2a31f8e00a7ec229b7a"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a37a51408555bf2a31f8e00a7ec229b7a">SVC_Handler</a></div><div class="ttdeci">__asm void SVC_Handler(void)</div><div class="ttdoc">Diese Funktion ermittelt mithile von embedded Assembler den verwendeten Stackpointer.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:317</div></div>
<div class="ttc" id="astructx_m_i_n_i___l_i_s_t___i_t_e_m_html_a0294e93ecc18bcdb723038af1027505d"><div class="ttname"><a href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html#a0294e93ecc18bcdb723038af1027505d">xMINI_LIST_ITEM::pxPrevious</a></div><div class="ttdeci">struct xLIST_ITEM *configLIST_VOLATILE pxPrevious</div><div class="ttdef"><b>Definition:</b> list.h:157</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_afb25be23cd6e0612928e16af882d7cc9"><div class="ttname"><a href="_hei_o_s___thread_8c.html#afb25be23cd6e0612928e16af882d7cc9">IdleThread</a></div><div class="ttdeci">void IdleThread(void)</div><div class="ttdoc">Diese Funktion durchl<68>uft eine Endlosschleife und sorgt f<>r einen definierten Zustand, falls kein Thread f<>r die...</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:562</div></div>
<div class="ttc" id="astructx_l_i_s_t___i_t_e_m_html"><div class="ttname"><a href="structx_l_i_s_t___i_t_e_m.html">xLIST_ITEM</a></div><div class="ttdef"><b>Definition:</b> list.h:141</div></div>
<div class="ttc" id="astructx_m_i_n_i___l_i_s_t___i_t_e_m_html"><div class="ttname"><a href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html">xMINI_LIST_ITEM</a></div><div class="ttdef"><b>Definition:</b> list.h:153</div></div>
<div class="ttc" id="a_globals_8c_html_a2c76ce2bbb04e4e06768e2315d6119f9"><div class="ttname"><a href="_globals_8c.html#a2c76ce2bbb04e4e06768e2315d6119f9">xQueueDisplay</a></div><div class="ttdeci">QueueHandle_t xQueueDisplay</div><div class="ttdef"><b>Definition:</b> Globals.c:15</div></div>
<div class="ttc" id="a_globals_8c_html_adf399c79970559d542d2713ba04ca583"><div class="ttname"><a href="_globals_8c.html#adf399c79970559d542d2713ba04ca583">xQueueTape</a></div><div class="ttdeci">QueueHandle_t xQueueTape</div><div class="ttdef"><b>Definition:</b> Globals.c:14</div></div>
<div class="ttc" id="alist_8c_html_a274fdced76bbdd9d8a4c4840ded2920c"><div class="ttname"><a href="list_8c.html#a274fdced76bbdd9d8a4c4840ded2920c">uxListRemove</a></div><div class="ttdeci">UBaseType_t uxListRemove(ListItem_t *const pxItemToRemove)</div><div class="ttdef"><b>Definition:</b> list.c:171</div></div>
<div class="ttc" id="a_globals_8c_html_af29403ba13329d558e6e15eda33eeb6e"><div class="ttname"><a href="_globals_8c.html#af29403ba13329d558e6e15eda33eeb6e">xQueueVCR</a></div><div class="ttdeci">QueueHandle_t xQueueVCR</div><div class="ttdef"><b>Definition:</b> Globals.c:13</div></div>
<div class="ttc" id="a_free_r_t_o_s_8h_html_af326afe922ffa6da245c98dc227a3293"><div class="ttname"><a href="_free_r_t_o_s_8h.html#af326afe922ffa6da245c98dc227a3293">traceMALLOC</a></div><div class="ttdeci">#define traceMALLOC(pvAddress, uiSize)</div><div class="ttdef"><b>Definition:</b> FreeRTOS.h:549</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a25d06518671a8ff47a4ce9a397ba2a49"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a25d06518671a8ff47a4ce9a397ba2a49">fpoutputidle</a></div><div class="ttdeci">void(* fpoutputidle)(void)</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:14</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_ad543ed6571a6cf7986fc3c588fe0876e"><div class="ttname"><a href="_hei_o_s___thread_8c.html#ad543ed6571a6cf7986fc3c588fe0876e">SVC_Handler_service</a></div><div class="ttdeci">void SVC_Handler_service(uint32_t *svc_args)</div><div class="ttdoc">Diese Funktion dient als API, um Funktionen im priviligierten Modus ausf<73>hren zu k<>nnen. Diese Funktion bes...</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:337</div></div>
<div class="ttc" id="atask_8h_html_a366b302eba79d10b5ee2a3756f0fcc43"><div class="ttname"><a href="task_8h.html#a366b302eba79d10b5ee2a3756f0fcc43">vTaskSuspendAll</a></div><div class="ttdeci">void vTaskSuspendAll(void) PRIVILEGED_FUNCTION</div><div class="ttdef"><b>Definition:</b> tasks.c:2031</div></div>
<div class="ttc" id="a_app_board2_buttons_8h_html_a65c0e8f96abf1884f4c55dae4e7663df"><div class="ttname"><a href="_app_board2_buttons_8h.html#a65c0e8f96abf1884f4c55dae4e7663df">BUTTON_T7</a></div><div class="ttdeci">#define BUTTON_T7</div><div class="ttdef"><b>Definition:</b> AppBoard2Buttons.h:30</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a6303e1f258cbdc1f970ce579cc015623"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a6303e1f258cbdc1f970ce579cc015623">PendSV_Handler</a></div><div class="ttdeci">void PendSV_Handler(void)</div><div class="ttdoc">Diese Funktion f<>hrt den Kontextwechsel aus.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:411</div></div>
<div class="ttc" id="astructx_m_i_n_i___l_i_s_t___i_t_e_m_html_a77927cd93dda0c59b3855aca58881ca1"><div class="ttname"><a href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html#a77927cd93dda0c59b3855aca58881ca1">xMINI_LIST_ITEM::pxNext</a></div><div class="ttdeci">struct xLIST_ITEM *configLIST_VOLATILE pxNext</div><div class="ttdef"><b>Definition:</b> list.h:156</div></div>
<div class="ttc" id="astructx_m_i_n_i___l_i_s_t___i_t_e_m_html_aa6f3caf3e73107fb0da6fede4b06f104"><div class="ttname"><a href="structx_m_i_n_i___l_i_s_t___i_t_e_m.html#aa6f3caf3e73107fb0da6fede4b06f104">xMINI_LIST_ITEM::xItemValue</a></div><div class="ttdeci">listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE configLIST_VOLATILE TickType_t xItemValue</div><div class="ttdef"><b>Definition:</b> list.h:155</div></div>
<div class="ttc" id="ampu__wrappers_8h_html_a4785c4f4a8c04b835139dcc2a6682078"><div class="ttname"><a href="mpu__wrappers_8h.html#a4785c4f4a8c04b835139dcc2a6682078">PRIVILEGED_FUNCTION</a></div><div class="ttdeci">#define PRIVILEGED_FUNCTION</div><div class="ttdef"><b>Definition:</b> mpu_wrappers.h:174</div></div>
<div class="ttc" id="aportmacro_8h_html_aa69c48c6e902ce54f70886e6573c92a9"><div class="ttname"><a href="portmacro_8h.html#aa69c48c6e902ce54f70886e6573c92a9">TickType_t</a></div><div class="ttdeci">uint32_t TickType_t</div><div class="ttdef"><b>Definition:</b> portmacro.h:64</div></div>
<div class="ttc" id="astructx_l_i_s_t___i_t_e_m_html_a0a7b95bc338d7d9df18e10607893d103"><div class="ttname"><a href="structx_l_i_s_t___i_t_e_m.html#a0a7b95bc338d7d9df18e10607893d103">xLIST_ITEM::pvContainer</a></div><div class="ttdeci">void *configLIST_VOLATILE pvContainer</div><div class="ttdef"><b>Definition:</b> list.h:147</div></div>
<div class="ttc" id="alist_8h_html_aa129290da5cbda47dffb7bf877b2f02a"><div class="ttname"><a href="list_8h.html#aa129290da5cbda47dffb7bf877b2f02a">vListInsert</a></div><div class="ttdeci">void vListInsert(List_t *const pxList, ListItem_t *const pxNewListItem) PRIVILEGED_FUNCTION</div><div class="ttdef"><b>Definition:</b> list.c:104</div></div>
<div class="ttc" id="a_app_board2_buttons_8h_html_a3006b6a93c5206f1b83d2f45bc2babf9"><div class="ttname"><a href="_app_board2_buttons_8h.html#a3006b6a93c5206f1b83d2f45bc2babf9">BUTTON_T5</a></div><div class="ttdeci">#define BUTTON_T5</div><div class="ttdef"><b>Definition:</b> AppBoard2Buttons.h:28</div></div>
<div class="ttc" id="aportmacro_8h_html_ab9091ce3940d8bd93ec850122a2c6a1c"><div class="ttname"><a href="portmacro_8h.html#ab9091ce3940d8bd93ec850122a2c6a1c">portBYTE_ALIGNMENT</a></div><div class="ttdeci">#define portBYTE_ALIGNMENT</div><div class="ttdef"><b>Definition:</b> portmacro.h:76</div></div>
<div class="ttc" id="alist_8c_html_a3240bc0f43fcf755be02bfc6de7dc6ef"><div class="ttname"><a href="list_8c.html#a3240bc0f43fcf755be02bfc6de7dc6ef">vListInsertEnd</a></div><div class="ttdeci">void vListInsertEnd(List_t *const pxList, ListItem_t *const pxNewListItem)</div><div class="ttdef"><b>Definition:</b> list.c:75</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a3f615e25424a59ed3fa352c08b4eecc7"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a3f615e25424a59ed3fa352c08b4eecc7">load_R4toR11</a></div><div class="ttdeci">__asm void load_R4toR11(void)</div><div class="ttdoc">Diese Funktion ladet die Register R4-R8 mit Inline-Assembler.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:491</div></div>
<div class="ttc" id="aportmacro_8h_html_a646f89d4298e4f5afd522202b11cb2e6"><div class="ttname"><a href="portmacro_8h.html#a646f89d4298e4f5afd522202b11cb2e6">UBaseType_t</a></div><div class="ttdeci">unsigned long UBaseType_t</div><div class="ttdef"><b>Definition:</b> portmacro.h:58</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_adf19f82560160de5dcccadc09bb9c255"><div class="ttname"><a href="_hei_o_s___thread_8c.html#adf19f82560160de5dcccadc09bb9c255">setfpoutoutidle</a></div><div class="ttdeci">void setfpoutoutidle(void(*fp)(void))</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:29</div></div>
<div class="ttc" id="alist_8h_html_a2eb1558482076fff8cafc63419c2d34a"><div class="ttname"><a href="list_8h.html#a2eb1558482076fff8cafc63419c2d34a">uxListRemove</a></div><div class="ttdeci">UBaseType_t uxListRemove(ListItem_t *const pxItemToRemove) PRIVILEGED_FUNCTION</div><div class="ttdef"><b>Definition:</b> list.c:171</div></div>
<div class="ttc" id="aheap__1_8c_html_a8bf103ce32ce8473574e9920af8b4eec"><div class="ttname"><a href="heap__1_8c.html#a8bf103ce32ce8473574e9920af8b4eec">vPortInitialiseBlocks</a></div><div class="ttdeci">void vPortInitialiseBlocks(void)</div><div class="ttdef"><b>Definition:</b> heap_1.c:135</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a5ac3911e312ded66f379f1a3082662e8"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a5ac3911e312ded66f379f1a3082662e8">IDLE_Thread</a></div><div class="ttdeci">Thread_IDLE_t IDLE_Thread</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:19</div></div>
<div class="ttc" id="alist_8h_html_a87dc70c22e3ff0eba560d6f357472634"><div class="ttname"><a href="list_8h.html#a87dc70c22e3ff0eba560d6f357472634">listSECOND_LIST_INTEGRITY_CHECK_VALUE</a></div><div class="ttdeci">#define listSECOND_LIST_INTEGRITY_CHECK_VALUE</div><div class="ttdef"><b>Definition:</b> list.h:110</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a6f8dcd8fc1b8d6b5ea4fd9b73d33a013"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a6f8dcd8fc1b8d6b5ea4fd9b73d33a013">Thread_init</a></div><div class="ttdeci">void Thread_init(Thread_t *Thread, void *stack, uint32_t stack_size, char name[], void(*pfunc)(), uint32_t executiontime, uint8_t priority)</div><div class="ttdoc">Diese Funktion initialisert einen Thread und f<>gt ihn der Ready-Liste hinzu.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:51</div></div>
<div class="ttc" id="aheap__1_8c_html_a286aa29b13471f0d9f5a7ce688682694"><div class="ttname"><a href="heap__1_8c.html#a286aa29b13471f0d9f5a7ce688682694">ucHeap</a></div><div class="ttdeci">static uint8_t ucHeap[configTOTAL_HEAP_SIZE]</div><div class="ttdef"><b>Definition:</b> heap_1.c:63</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_aaa4627e36ecdeac95fd1e5b563bd5777"><div class="ttname"><a href="_hei_o_s___thread_8c.html#aaa4627e36ecdeac95fd1e5b563bd5777">thread_delay</a></div><div class="ttdeci">void thread_delay(uint32_t tick)</div><div class="ttdoc">Diese Funktion entfernt den <20>bergebenen Thread von der Ready-Liste und f<>gt ihn der Sleep-Liste hinzu....</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:300</div></div>
<div class="ttc" id="a_free_r_t_o_s_8h_html_a53bae25f223b7156dce0fc6e6b1b2295"><div class="ttname"><a href="_free_r_t_o_s_8h.html#a53bae25f223b7156dce0fc6e6b1b2295">portPOINTER_SIZE_TYPE</a></div><div class="ttdeci">#define portPOINTER_SIZE_TYPE</div><div class="ttdef"><b>Definition:</b> FreeRTOS.h:289</div></div>
<div class="ttc" id="alist_8c_html_a28faa70d3ec4b4f39e53b0fc52d62ecf"><div class="ttname"><a href="list_8c.html#a28faa70d3ec4b4f39e53b0fc52d62ecf">vListInsert</a></div><div class="ttdeci">void vListInsert(List_t *const pxList, ListItem_t *const pxNewListItem)</div><div class="ttdef"><b>Definition:</b> list.c:104</div></div>
<div class="ttc" id="a_app_board2_buttons_8h_html_af9081305bda7fff38a848815876b175d"><div class="ttname"><a href="_app_board2_buttons_8h.html#af9081305bda7fff38a848815876b175d">BUTTON_T4</a></div><div class="ttdeci">#define BUTTON_T4</div><div class="ttdef"><b>Definition:</b> AppBoard2Buttons.h:27</div></div>
<div class="ttc" id="a_app_board2_buttons_8h_html_a7fd8c2d5b26bcda8f9c613668bca9c9f"><div class="ttname"><a href="_app_board2_buttons_8h.html#a7fd8c2d5b26bcda8f9c613668bca9c9f">BUTTON_T2</a></div><div class="ttdeci">#define BUTTON_T2</div><div class="ttdef"><b>Definition:</b> AppBoard2Buttons.h:25</div></div>
<div class="ttc" id="a_free_r_t_o_s_8h_html"><div class="ttname"><a href="_free_r_t_o_s_8h.html">FreeRTOS.h</a></div></div>
<div class="ttc" id="alist_8h_html_a2d5de557c5561c8980d1bf51d87d8cba"><div class="ttname"><a href="list_8h.html#a2d5de557c5561c8980d1bf51d87d8cba">configLIST_VOLATILE</a></div><div class="ttdeci">#define configLIST_VOLATILE</div><div class="ttdef"><b>Definition:</b> list.h:93</div></div>
<div class="ttc" id="aheap__1_8c_html_a9f84d71523e492ed69679829b2d827c4"><div class="ttname"><a href="heap__1_8c.html#a9f84d71523e492ed69679829b2d827c4">xNextFreeByte</a></div><div class="ttdeci">static size_t xNextFreeByte</div><div class="ttdef"><b>Definition:</b> heap_1.c:67</div></div>
<div class="ttc" id="alist_8h_html_adeef7734d7d6d9a3eea642a70c106919"><div class="ttname"><a href="list_8h.html#adeef7734d7d6d9a3eea642a70c106919">vListInitialise</a></div><div class="ttdeci">void vListInitialise(List_t *const pxList) PRIVILEGED_FUNCTION</div><div class="ttdef"><b>Definition:</b> list.c:38</div></div>
<div class="ttc" id="a_app_board2_buttons_8c_html_acbd982e9017fcc7828f6ada51d02bcbe"><div class="ttname"><a href="_app_board2_buttons_8c.html#acbd982e9017fcc7828f6ada51d02bcbe">u32AppBoard2ButtonsGetState</a></div><div class="ttdeci">uint32_t u32AppBoard2ButtonsGetState(void)</div><div class="ttdoc">Returns the pressed Buttons (bit coded see AppBoard2Buttons.h)</div><div class="ttdef"><b>Definition:</b> AppBoard2Buttons.c:85</div></div>
<div class="ttc" id="alist_8h_html_ab91611baae53be209a05d211f55f5395"><div class="ttname"><a href="list_8h.html#ab91611baae53be209a05d211f55f5395">vListInitialiseItem</a></div><div class="ttdeci">void vListInitialiseItem(ListItem_t *const pxItem) PRIVILEGED_FUNCTION</div><div class="ttdef"><b>Definition:</b> list.c:63</div></div>
<div class="ttc" id="alist_8h_html_a337d6137e0a4d37321efc5c2f31dba22"><div class="ttname"><a href="list_8h.html#a337d6137e0a4d37321efc5c2f31dba22">listTEST_LIST_INTEGRITY</a></div><div class="ttdeci">#define listTEST_LIST_INTEGRITY(pxList)</div><div class="ttdef"><b>Definition:</b> list.h:116</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a53ebffa94d01fd8dd641bb0520878da2"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a53ebffa94d01fd8dd641bb0520878da2">update_Thread_slp</a></div><div class="ttdeci">void update_Thread_slp(void)</div><div class="ttdoc">Diese Funktion aktualisiert die Verz<72>gerungszeit der Threads.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:578</div></div>
<div class="ttc" id="a_app_board2_buttons_8h_html_abba529cebd73b2efa6e4c02b099fb5e2"><div class="ttname"><a href="_app_board2_buttons_8h.html#abba529cebd73b2efa6e4c02b099fb5e2">BUTTON_T1</a></div><div class="ttdeci">#define BUTTON_T1</div><div class="ttdef"><b>Definition:</b> AppBoard2Buttons.h:24</div></div>
<div class="ttc" id="a_app_board2_buttons_8h_html_a426d4ddecb7b1a182500019df7ccb854"><div class="ttname"><a href="_app_board2_buttons_8h.html#a426d4ddecb7b1a182500019df7ccb854">BUTTON_T0</a></div><div class="ttdeci">#define BUTTON_T0</div><div class="ttdef"><b>Definition:</b> AppBoard2Buttons.h:23</div></div>
<div class="ttc" id="astructx_l_i_s_t_html_a8fa392ba5e75883d007713e1e6c83a76"><div class="ttname"><a href="structx_l_i_s_t.html#a8fa392ba5e75883d007713e1e6c83a76">xLIST::uxNumberOfItems</a></div><div class="ttdeci">listFIRST_LIST_INTEGRITY_CHECK_VALUE volatile UBaseType_t uxNumberOfItems</div><div class="ttdef"><b>Definition:</b> list.h:167</div></div>
<div class="ttc" id="asystem___l_p_c17xx_8c_html_aa3cd3e43291e81e795d642b79b6088e6"><div class="ttname"><a href="system___l_p_c17xx_8c.html#aa3cd3e43291e81e795d642b79b6088e6">SystemCoreClock</a></div><div class="ttdeci">uint32_t SystemCoreClock</div><div class="ttdef"><b>Definition:</b> system_LPC17xx.c:431</div></div>
<div class="ttc" id="aqueue_8h_html_aaf19d499892a4ce1409326ece00f5264"><div class="ttname"><a href="queue_8h.html#aaf19d499892a4ce1409326ece00f5264">QueueHandle_t</a></div><div class="ttdeci">void * QueueHandle_t</div><div class="ttdef"><b>Definition:</b> queue.h:47</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_aca9398be120ae354ca40dbfd02fa1e40"><div class="ttname"><a href="_hei_o_s___thread_8c.html#aca9398be120ae354ca40dbfd02fa1e40">Thread_slp</a></div><div class="ttdeci">Thread_t * Thread_slp</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:24</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_ada1847fa45175177f66831eb1c706efa"><div class="ttname"><a href="_hei_o_s___thread_8c.html#ada1847fa45175177f66831eb1c706efa">priv_thread_remove</a></div><div class="ttdeci">uint8_t priv_thread_remove(Thread_t **root, Thread_t *Thread)</div><div class="ttdoc">Diese Funktion entfernt das Threadobjekt aus der Liste.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:230</div></div>
<div class="ttc" id="aheap__1_8c_html_a0c28a12b313bc248be0cb7a37ed81bb7"><div class="ttname"><a href="heap__1_8c.html#a0c28a12b313bc248be0cb7a37ed81bb7">xPortGetFreeHeapSize</a></div><div class="ttdeci">size_t xPortGetFreeHeapSize(void)</div><div class="ttdef"><b>Definition:</b> heap_1.c:142</div></div>
<div class="ttc" id="astructx_l_i_s_t_html_a83a65be4e3a2bb70855742896126bf63"><div class="ttname"><a href="structx_l_i_s_t.html#a83a65be4e3a2bb70855742896126bf63">xLIST::xListEnd</a></div><div class="ttdeci">MiniListItem_t xListEnd</div><div class="ttdef"><b>Definition:</b> list.h:169</div></div>
<div class="ttc" id="alist_8h_html_a0e65118e1baa7ab805cdfb37e580501d"><div class="ttname"><a href="list_8h.html#a0e65118e1baa7ab805cdfb37e580501d">listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE</a></div><div class="ttdeci">#define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE(pxItem)</div><div class="ttdef"><b>Definition:</b> list.h:111</div></div>
<div class="ttc" id="a_interrupt_8c_html_a5f89e5f7418d3a10f49b2faeab3711dd"><div class="ttname"><a href="_interrupt_8c.html#a5f89e5f7418d3a10f49b2faeab3711dd">TIMER0_IRQHandler</a></div><div class="ttdeci">void TIMER0_IRQHandler(void)</div><div class="ttdoc">ISR of timer0, called every 20 millisecond.</div><div class="ttdef"><b>Definition:</b> Interrupt.c:21</div></div>
<div class="ttc" id="alist_8h_html_a71a6a6099b3cbd8f90539aabe5c9e572"><div class="ttname"><a href="list_8h.html#a71a6a6099b3cbd8f90539aabe5c9e572">vListInsertEnd</a></div><div class="ttdeci">void vListInsertEnd(List_t *const pxList, ListItem_t *const pxNewListItem) PRIVILEGED_FUNCTION</div><div class="ttdef"><b>Definition:</b> list.c:75</div></div>
<div class="ttc" id="alist_8h_html_a5d68b1187d09c64d6ee329786cb0289b"><div class="ttname"><a href="list_8h.html#a5d68b1187d09c64d6ee329786cb0289b">listSET_LIST_INTEGRITY_CHECK_1_VALUE</a></div><div class="ttdeci">#define listSET_LIST_INTEGRITY_CHECK_1_VALUE(pxList)</div><div class="ttdef"><b>Definition:</b> list.h:113</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a3768f963f2493ef1961b6d2857c213e4"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a3768f963f2493ef1961b6d2857c213e4">save_R4toR11</a></div><div class="ttdeci">__asm void save_R4toR11(void)</div><div class="ttdoc">Diese Funktion sichert die Register R4-R8 mit Inline-Assembler.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:473</div></div>
<div class="ttc" id="alist_8h_html_a3611bd5d5d87cb26ac1dc7a4852b94a0"><div class="ttname"><a href="list_8h.html#a3611bd5d5d87cb26ac1dc7a4852b94a0">listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE</a></div><div class="ttdeci">#define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE</div><div class="ttdef"><b>Definition:</b> list.h:107</div></div>
<div class="ttc" id="a_free_r_t_o_s_8h_html_a2ddaee9013b02cfbfe2773ec4257375c"><div class="ttname"><a href="_free_r_t_o_s_8h.html#a2ddaee9013b02cfbfe2773ec4257375c">mtCOVERAGE_TEST_DELAY</a></div><div class="ttdeci">#define mtCOVERAGE_TEST_DELAY()</div><div class="ttdef"><b>Definition:</b> FreeRTOS.h:791</div></div>
<div class="ttc" id="alist_8h_html_abf45f853974db484cd7df434bd006e98"><div class="ttname"><a href="list_8h.html#abf45f853974db484cd7df434bd006e98">listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE</a></div><div class="ttdeci">#define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE</div><div class="ttdef"><b>Definition:</b> list.h:108</div></div>
<div class="ttc" id="astructx_l_i_s_t___i_t_e_m_html_aa6f3caf3e73107fb0da6fede4b06f104"><div class="ttname"><a href="structx_l_i_s_t___i_t_e_m.html#aa6f3caf3e73107fb0da6fede4b06f104">xLIST_ITEM::xItemValue</a></div><div class="ttdeci">listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE configLIST_VOLATILE TickType_t xItemValue</div><div class="ttdef"><b>Definition:</b> list.h:143</div></div>
<div class="ttc" id="atask_8h_html_a003f8ae6d649225abd030cc76e1c7d0e"><div class="ttname"><a href="task_8h.html#a003f8ae6d649225abd030cc76e1c7d0e">xTaskResumeAll</a></div><div class="ttdeci">BaseType_t xTaskResumeAll(void) PRIVILEGED_FUNCTION</div><div class="ttdef"><b>Definition:</b> tasks.c:2104</div></div>
<div class="ttc" id="a_free_r_t_o_s_8h_html_a228c70cd48927d6ab730ed1a6dfbe35f"><div class="ttname"><a href="_free_r_t_o_s_8h.html#a228c70cd48927d6ab730ed1a6dfbe35f">configASSERT</a></div><div class="ttdeci">#define configASSERT(x)</div><div class="ttdef"><b>Definition:</b> FreeRTOS.h:235</div></div>
<div class="ttc" id="alist_8h_html"><div class="ttname"><a href="list_8h.html">list.h</a></div></div>
<div class="ttc" id="aheap__1_8c_html_a3e68bebe7509a99550e1358cbca8e23f"><div class="ttname"><a href="heap__1_8c.html#a3e68bebe7509a99550e1358cbca8e23f">configADJUSTED_HEAP_SIZE</a></div><div class="ttdeci">#define configADJUSTED_HEAP_SIZE</div><div class="ttdef"><b>Definition:</b> heap_1.c:54</div></div>
<div class="ttc" id="astructx_l_i_s_t___i_t_e_m_html_a0294e93ecc18bcdb723038af1027505d"><div class="ttname"><a href="structx_l_i_s_t___i_t_e_m.html#a0294e93ecc18bcdb723038af1027505d">xLIST_ITEM::pxPrevious</a></div><div class="ttdeci">struct xLIST_ITEM *configLIST_VOLATILE pxPrevious</div><div class="ttdef"><b>Definition:</b> list.h:145</div></div>
<div class="ttc" id="alist_8h_html_ad14d7e3de1350e459c7c23c6f59c902a"><div class="ttname"><a href="list_8h.html#ad14d7e3de1350e459c7c23c6f59c902a">List_t</a></div><div class="ttdeci">struct xLIST List_t</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a16c7ec7d54a769f4aa36c23d3d35eced"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a16c7ec7d54a769f4aa36c23d3d35eced">OS_Start_Scheduler</a></div><div class="ttdeci">void OS_Start_Scheduler(void)</div><div class="ttdoc">Diese Funktion initialisiert das OS und sorgt anschlie<69>end f<>r den Wechsel in den Idlethread.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:513</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_afb86102d12bfbfbda217500415dfbc2a"><div class="ttname"><a href="_hei_o_s___thread_8c.html#afb86102d12bfbfbda217500415dfbc2a">update_executiontime</a></div><div class="ttdeci">void update_executiontime(void)</div><div class="ttdoc">Diese Funktion aktualisiert die Ausf<73>hrungszeit der Threads.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:613</div></div>
<div class="ttc" id="astructx_l_i_s_t___i_t_e_m_html_a77927cd93dda0c59b3855aca58881ca1"><div class="ttname"><a href="structx_l_i_s_t___i_t_e_m.html#a77927cd93dda0c59b3855aca58881ca1">xLIST_ITEM::pxNext</a></div><div class="ttdeci">struct xLIST_ITEM *configLIST_VOLATILE pxNext</div><div class="ttdef"><b>Definition:</b> list.h:144</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_ac1b95c9591274d32fe312d3c3a7c765d"><div class="ttname"><a href="_hei_o_s___thread_8c.html#ac1b95c9591274d32fe312d3c3a7c765d">priv_thread_sort_add</a></div><div class="ttdeci">uint8_t priv_thread_sort_add(Thread_t **root, Thread_t *Thread)</div><div class="ttdoc">Mithilfe der Funktion werden die Thread-Objekte in einer einfach verketteten Liste angeordnet....</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:180</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_ab5e09814056d617c521549e542639b7e"><div class="ttname"><a href="_hei_o_s___thread_8c.html#ab5e09814056d617c521549e542639b7e">SysTick_Handler</a></div><div class="ttdeci">void SysTick_Handler(void)</div><div class="ttdoc">Diese Funktion wird in regelm<6C><6D>igen Abst<73>nden ausgef<65>hrt.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:380</div></div>
<div class="ttc" id="alist_8h_html_a3a52b5a4f70d3a07e37a5814a23ba880"><div class="ttname"><a href="list_8h.html#a3a52b5a4f70d3a07e37a5814a23ba880">listFIRST_LIST_INTEGRITY_CHECK_VALUE</a></div><div class="ttdeci">#define listFIRST_LIST_INTEGRITY_CHECK_VALUE</div><div class="ttdef"><b>Definition:</b> list.h:109</div></div>
<div class="ttc" id="alist_8h_html_a83b40c6e61534ef41229bd912dacab48"><div class="ttname"><a href="list_8h.html#a83b40c6e61534ef41229bd912dacab48">listSET_LIST_INTEGRITY_CHECK_2_VALUE</a></div><div class="ttdeci">#define listSET_LIST_INTEGRITY_CHECK_2_VALUE(pxList)</div><div class="ttdef"><b>Definition:</b> list.h:114</div></div>
<div class="ttc" id="alist_8c_html_a43e37223a86f5d0688ac4470d3106e87"><div class="ttname"><a href="list_8c.html#a43e37223a86f5d0688ac4470d3106e87">vListInitialiseItem</a></div><div class="ttdeci">void vListInitialiseItem(ListItem_t *const pxItem)</div><div class="ttdef"><b>Definition:</b> list.c:63</div></div>
<div class="ttc" id="a_free_r_t_o_s_8h_html_ac77e2af1a6b0d38fbab36cf2aa96f1a8"><div class="ttname"><a href="_free_r_t_o_s_8h.html#ac77e2af1a6b0d38fbab36cf2aa96f1a8">mtCOVERAGE_TEST_MARKER</a></div><div class="ttdeci">#define mtCOVERAGE_TEST_MARKER()</div><div class="ttdef"><b>Definition:</b> FreeRTOS.h:787</div></div>
<div class="ttc" id="aheap__1_8c_html_a0379669d07d76cc81e3028123113b271"><div class="ttname"><a href="heap__1_8c.html#a0379669d07d76cc81e3028123113b271">pvPortMalloc</a></div><div class="ttdeci">void * pvPortMalloc(size_t xWantedSize)</div><div class="ttdef"><b>Definition:</b> heap_1.c:71</div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="list_8h.html">list.h</a></li>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>