<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/> <title>CLD: include/elist.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">CLD  <span id="projectnumber">0.1git</span> </div> </td> </tr> </tbody> </table> </div> <!-- Generated by Doxygen 1.7.5 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#nested-classes">Data Structures</a> | <a href="#define-members">Defines</a> </div> <div class="headertitle"> <div class="title">include/elist.h File Reference</div> </div> </div> <div class="contents"> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="nested-classes"></a> Data Structures</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structlist__head.html">list_head</a></td></tr> <tr><td colspan="2"><h2><a name="define-members"></a> Defines</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="elist_8h.html#a4642d4b7df28478bb762fe43c85b5c63">LIST_HEAD_INIT</a>(name)   { &(name), &(name) }</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="elist_8h.html#a42f0e72af970a790b60a740af8c9ecd0">LIST_HEAD</a>(name)   struct <a class="el" href="structlist__head.html">list_head</a> name = LIST_HEAD_INIT(name)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="elist_8h.html#a0ffe9d28c36d7b018a9cfae33bae45c0">INIT_LIST_HEAD</a>(ptr)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="elist_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>(ptr, type, member)   ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">list_entry - get the struct for this entry : the &struct <a class="el" href="structlist__head.html">list_head</a> pointer. <a href="#a26c976b7f654e70df318c1843e5094de"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="elist_8h.html#ab8b24e6660ab3760c923e4b4db3fa502">list_for_each</a>(pos, head)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">list_for_each - iterate over a list : the &struct <a class="el" href="structlist__head.html">list_head</a> to use as a loop counter. <a href="#ab8b24e6660ab3760c923e4b4db3fa502"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="elist_8h.html#a19fc06b83f3502a83ce566b8887e6aec">list_for_each_prev</a>(pos, head)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">list_for_each_prev - iterate over a list backwards : the &struct <a class="el" href="structlist__head.html">list_head</a> to use as a loop counter. <a href="#a19fc06b83f3502a83ce566b8887e6aec"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="elist_8h.html#a9e4b9328744994b9d3878f5dad75c09f">list_for_each_safe</a>(pos, n, head)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">list_for_each_safe - iterate over a list safe against removal of list entry : the &struct <a class="el" href="structlist__head.html">list_head</a> to use as a loop counter. <a href="#a9e4b9328744994b9d3878f5dad75c09f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="elist_8h.html#a9b782fefb5ab71ce9762182e45a615e1">list_for_each_entry</a>(pos, head, member)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">list_for_each_entry - iterate over list of given type : the type * to use as a loop counter. <a href="#a9b782fefb5ab71ce9762182e45a615e1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="elist_8h.html#ac3f72d6bd5144c7970824813810d2da1">list_for_each_entry_safe</a>(pos, n, head, member)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">list_for_each_entry_safe - iterate over list of given type safe against removal of list entry : the type * to use as a loop counter. <a href="#ac3f72d6bd5144c7970824813810d2da1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="elist_8h.html#a91b31084b4ece72dbd75d2bb1f01d9ff">list_for_each_entry_continue</a>(pos, head, member)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">list_for_each_entry_continue - iterate over list of given type continuing after existing point : the type * to use as a loop counter. <a href="#a91b31084b4ece72dbd75d2bb1f01d9ff"></a><br/></td></tr> </table> <hr/><h2>Define Documentation</h2> <a class="anchor" id="a0ffe9d28c36d7b018a9cfae33bae45c0"></a><!-- doxytag: member="elist.h::INIT_LIST_HEAD" ref="a0ffe9d28c36d7b018a9cfae33bae45c0" args="(ptr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define INIT_LIST_HEAD</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">ptr</td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { \ (ptr)->next = (ptr); (ptr)->prev = (ptr); \ } <span class="keywordflow">while</span> (0) </pre></div> </div> </div> <a class="anchor" id="a26c976b7f654e70df318c1843e5094de"></a><!-- doxytag: member="elist.h::list_entry" ref="a26c976b7f654e70df318c1843e5094de" args="(ptr, type, member)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define list_entry</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">ptr, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">type, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">member </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))</td> </tr> </table> </div> <div class="memdoc"> <p>list_entry - get the struct for this entry : the &struct <a class="el" href="structlist__head.html">list_head</a> pointer. </p> <p>: the type of the struct this is embedded in. : the name of the list_struct within the struct. </p> </div> </div> <a class="anchor" id="ab8b24e6660ab3760c923e4b4db3fa502"></a><!-- doxytag: member="elist.h::list_for_each" ref="ab8b24e6660ab3760c923e4b4db3fa502" args="(pos, head)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define list_for_each</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">pos, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">head </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">for</span> (pos = (head)->next; pos != (head); \ pos = pos->next) </pre></div> <p>list_for_each - iterate over a list : the &struct <a class="el" href="structlist__head.html">list_head</a> to use as a loop counter. </p> <p>: the head for your list. </p> </div> </div> <a class="anchor" id="a9b782fefb5ab71ce9762182e45a615e1"></a><!-- doxytag: member="elist.h::list_for_each_entry" ref="a9b782fefb5ab71ce9762182e45a615e1" args="(pos, head, member)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define list_for_each_entry</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">pos, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">head, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">member </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">for</span> (pos = <a class="code" href="elist_8h.html#a26c976b7f654e70df318c1843e5094de" title="list_entry - get the struct for this entry : the &struct list_head pointer.">list_entry</a>((head)->next, typeof(*pos), member); \ &pos->member != (head); \ pos = <a class="code" href="elist_8h.html#a26c976b7f654e70df318c1843e5094de" title="list_entry - get the struct for this entry : the &struct list_head pointer.">list_entry</a>(pos->member.next, typeof(*pos), member)) </pre></div> <p>list_for_each_entry - iterate over list of given type : the type * to use as a loop counter. </p> <p>: the head for your list. : the name of the list_struct within the struct. </p> </div> </div> <a class="anchor" id="a91b31084b4ece72dbd75d2bb1f01d9ff"></a><!-- doxytag: member="elist.h::list_for_each_entry_continue" ref="a91b31084b4ece72dbd75d2bb1f01d9ff" args="(pos, head, member)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define list_for_each_entry_continue</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">pos, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">head, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">member </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">for</span> (pos = <a class="code" href="elist_8h.html#a26c976b7f654e70df318c1843e5094de" title="list_entry - get the struct for this entry : the &struct list_head pointer.">list_entry</a>(pos->member.next, typeof(*pos), member), \ prefetch(pos->member.next); \ &pos->member != (head); \ pos = <a class="code" href="elist_8h.html#a26c976b7f654e70df318c1843e5094de" title="list_entry - get the struct for this entry : the &struct list_head pointer.">list_entry</a>(pos->member.next, typeof(*pos), member), \ prefetch(pos->member.next)) </pre></div> <p>list_for_each_entry_continue - iterate over list of given type continuing after existing point : the type * to use as a loop counter. </p> <p>: the head for your list. : the name of the list_struct within the struct. </p> </div> </div> <a class="anchor" id="ac3f72d6bd5144c7970824813810d2da1"></a><!-- doxytag: member="elist.h::list_for_each_entry_safe" ref="ac3f72d6bd5144c7970824813810d2da1" args="(pos, n, head, member)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define list_for_each_entry_safe</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">pos, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">n, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">head, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">member </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">for</span> (pos = <a class="code" href="elist_8h.html#a26c976b7f654e70df318c1843e5094de" title="list_entry - get the struct for this entry : the &struct list_head pointer.">list_entry</a>((head)->next, typeof(*pos), member), \ n = <a class="code" href="elist_8h.html#a26c976b7f654e70df318c1843e5094de" title="list_entry - get the struct for this entry : the &struct list_head pointer.">list_entry</a>(pos->member.next, typeof(*pos), member); \ &pos->member != (head); \ pos = n, n = <a class="code" href="elist_8h.html#a26c976b7f654e70df318c1843e5094de" title="list_entry - get the struct for this entry : the &struct list_head pointer.">list_entry</a>(n->member.next, typeof(*n), member)) </pre></div> <p>list_for_each_entry_safe - iterate over list of given type safe against removal of list entry : the type * to use as a loop counter. </p> <p><br/> : another type * to use as temporary storage : the head for your list. : the name of the list_struct within the struct. </p> </div> </div> <a class="anchor" id="a19fc06b83f3502a83ce566b8887e6aec"></a><!-- doxytag: member="elist.h::list_for_each_prev" ref="a19fc06b83f3502a83ce566b8887e6aec" args="(pos, head)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define list_for_each_prev</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">pos, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">head </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">for</span> (pos = (head)->prev; pos != (head); \ pos = pos->prev) </pre></div> <p>list_for_each_prev - iterate over a list backwards : the &struct <a class="el" href="structlist__head.html">list_head</a> to use as a loop counter. </p> <p>: the head for your list. </p> </div> </div> <a class="anchor" id="a9e4b9328744994b9d3878f5dad75c09f"></a><!-- doxytag: member="elist.h::list_for_each_safe" ref="a9e4b9328744994b9d3878f5dad75c09f" args="(pos, n, head)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define list_for_each_safe</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">pos, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">n, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">head </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">for</span> (pos = (head)->next, n = pos->next; pos != (head); \ pos = n, n = pos->next) </pre></div> <p>list_for_each_safe - iterate over a list safe against removal of list entry : the &struct <a class="el" href="structlist__head.html">list_head</a> to use as a loop counter. </p> <p><br/> : another &struct <a class="el" href="structlist__head.html">list_head</a> to use as temporary storage : the head for your list. </p> </div> </div> <a class="anchor" id="a42f0e72af970a790b60a740af8c9ecd0"></a><!-- doxytag: member="elist.h::LIST_HEAD" ref="a42f0e72af970a790b60a740af8c9ecd0" args="(name)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LIST_HEAD</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">name</td><td>)</td> <td>   struct <a class="el" href="structlist__head.html">list_head</a> name = LIST_HEAD_INIT(name)</td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a4642d4b7df28478bb762fe43c85b5c63"></a><!-- doxytag: member="elist.h::LIST_HEAD_INIT" ref="a4642d4b7df28478bb762fe43c85b5c63" args="(name)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LIST_HEAD_INIT</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">name</td><td>)</td> <td>   { &(name), &(name) }</td> </tr> </table> </div> <div class="memdoc"> </div> </div> </div> <hr class="footer"/><address class="footer"><small> Generated on Sat Jan 28 2012 05:53:01 for CLD by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.7.5 </small></address> </body> </html>