mirror of
https://github.com/ChronosX88/netsukuku.git
synced 2024-11-22 18:22:18 +00:00
f97a6e4a6f
missvaleska@missvaleska-GA-970A-D3:~/Documents/Netsukuku/NtkDoc/html$ git status# On branch gh-pages Doxygen generated Documentation
2449 lines
147 KiB
HTML
2449 lines
147 KiB
HTML
<!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"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.6"/>
|
|
<title>The Netsukuku Project: src/libiptc/linux_list.h File Reference</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="../../navtree.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(initResizable);
|
|
$(window).load(resizeHeight);
|
|
</script>
|
|
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="../../search/search.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() { searchBox.OnSelectItem(0); });
|
|
</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 style="padding-left: 0.5em;">
|
|
<div id="projectname">The Netsukuku Project
|
|
 <span id="projectnumber">0.0.9</span>
|
|
</div>
|
|
<div id="projectbrief">An Alternative routing method</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.6 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
|
|
</script>
|
|
<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>
|
|
<li>
|
|
<div id="MSearchBox" class="MSearchBoxInactive">
|
|
<span class="left">
|
|
<img id="MSearchSelect" src="../../search/mag_sel.png"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
alt=""/>
|
|
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
|
onfocus="searchBox.OnSearchFieldFocus(true)"
|
|
onblur="searchBox.OnSearchFieldFocus(false)"
|
|
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
|
</span><span class="right">
|
|
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
|
|
</span>
|
|
</div>
|
|
</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><!-- 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">
|
|
$(document).ready(function(){initNavTree('da/d00/linux__list_8h.html','../../');});
|
|
</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)">
|
|
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Macros</a></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="summary">
|
|
<a href="#nested-classes">Data Structures</a> |
|
|
<a href="#define-members">Macros</a> |
|
|
<a href="#func-members">Functions</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">linux_list.h File Reference</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="textblock"><div class="dynheader">
|
|
This graph shows which files directly or indirectly include this file:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../de/d5e/linux__list_8h__dep__incl.png" border="0" usemap="#src_2libiptc_2linux__list_8hdep" alt=""/></div>
|
|
<map name="src_2libiptc_2linux__list_8hdep" id="src_2libiptc_2linux__list_8hdep">
|
|
<area shape="rect" id="node3" href="../../d6/dd7/libiptc_8c.html" title="src/libiptc/libiptc.c" alt="" coords="15,83,140,112"/><area shape="rect" id="node5" href="../../d7/d61/libip4tc_8c.html" title="src/libiptc/libip4tc.c" alt="" coords="11,160,144,189"/></map>
|
|
</div>
|
|
</div>
|
|
<p><a href="../../da/d00/linux__list_8h_source.html">Go to the source code of this file.</a></p>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
|
|
Data Structures</h2></td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d93/structlist__head.html">list_head</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d4d/structhlist__head.html">hlist_head</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
|
|
Macros</h2></td></tr>
|
|
<tr class="memitem:a276e8a32e0bbf024aadd9420b8f2d3b3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a276e8a32e0bbf024aadd9420b8f2d3b3">offsetof</a>(TYPE, MEMBER)   ((size_t) &((TYPE *)0)->MEMBER)</td></tr>
|
|
<tr class="separator:a276e8a32e0bbf024aadd9420b8f2d3b3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af8c317a42292b61c93aae91e59118a46"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#af8c317a42292b61c93aae91e59118a46">container_of</a>(ptr, <a class="el" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>, member)</td></tr>
|
|
<tr class="separator:af8c317a42292b61c93aae91e59118a46"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8b644e688b339331a7c1f93a39c379ad"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a8b644e688b339331a7c1f93a39c379ad">typecheck</a>(<a class="el" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>, x)</td></tr>
|
|
<tr class="separator:a8b644e688b339331a7c1f93a39c379ad"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a004692feb1f91896c21a6d1644b54f2b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(x)   1</td></tr>
|
|
<tr class="separator:a004692feb1f91896c21a6d1644b54f2b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af5af5daeacc75c413fb9a3f910e9fb32"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#af5af5daeacc75c413fb9a3f910e9fb32">smp_wmb</a>()</td></tr>
|
|
<tr class="separator:af5af5daeacc75c413fb9a3f910e9fb32"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a96b8b53821aa079fc5acc2ecac6a309f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a96b8b53821aa079fc5acc2ecac6a309f">LIST_POISON1</a>   ((void *) 0x00100100)</td></tr>
|
|
<tr class="separator:a96b8b53821aa079fc5acc2ecac6a309f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a32e88152ac3cebc4352f9f6254e786ff"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a32e88152ac3cebc4352f9f6254e786ff">LIST_POISON2</a>   ((void *) 0x00200200)</td></tr>
|
|
<tr class="separator:a32e88152ac3cebc4352f9f6254e786ff"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a4642d4b7df28478bb762fe43c85b5c63"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a4642d4b7df28478bb762fe43c85b5c63">LIST_HEAD_INIT</a>(name)   { &(name), &(name) }</td></tr>
|
|
<tr class="separator:a4642d4b7df28478bb762fe43c85b5c63"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a42f0e72af970a790b60a740af8c9ecd0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a42f0e72af970a790b60a740af8c9ecd0">LIST_HEAD</a>(name)   struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> name = <a class="el" href="../../da/d00/linux__list_8h.html#a4642d4b7df28478bb762fe43c85b5c63">LIST_HEAD_INIT</a>(name)</td></tr>
|
|
<tr class="separator:a42f0e72af970a790b60a740af8c9ecd0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a0ffe9d28c36d7b018a9cfae33bae45c0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a0ffe9d28c36d7b018a9cfae33bae45c0">INIT_LIST_HEAD</a>(ptr)</td></tr>
|
|
<tr class="separator:a0ffe9d28c36d7b018a9cfae33bae45c0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a26c976b7f654e70df318c1843e5094de"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>(ptr, <a class="el" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>, member)   <a class="el" href="../../da/d00/linux__list_8h.html#af8c317a42292b61c93aae91e59118a46">container_of</a>(ptr, <a class="el" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>, member)</td></tr>
|
|
<tr class="separator:a26c976b7f654e70df318c1843e5094de"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ab8b24e6660ab3760c923e4b4db3fa502"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#ab8b24e6660ab3760c923e4b4db3fa502">list_for_each</a>(pos, head)</td></tr>
|
|
<tr class="separator:ab8b24e6660ab3760c923e4b4db3fa502"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:abfd5aa736021dace98d07ff2518a698d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#abfd5aa736021dace98d07ff2518a698d">__list_for_each</a>(pos, head)   for (pos = (head)->next; pos != (head); pos = pos->next)</td></tr>
|
|
<tr class="separator:abfd5aa736021dace98d07ff2518a698d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a19fc06b83f3502a83ce566b8887e6aec"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a19fc06b83f3502a83ce566b8887e6aec">list_for_each_prev</a>(pos, head)</td></tr>
|
|
<tr class="separator:a19fc06b83f3502a83ce566b8887e6aec"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9e4b9328744994b9d3878f5dad75c09f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a9e4b9328744994b9d3878f5dad75c09f">list_for_each_safe</a>(pos, n, head)</td></tr>
|
|
<tr class="separator:a9e4b9328744994b9d3878f5dad75c09f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9b782fefb5ab71ce9762182e45a615e1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a9b782fefb5ab71ce9762182e45a615e1">list_for_each_entry</a>(pos, head, member)</td></tr>
|
|
<tr class="separator:a9b782fefb5ab71ce9762182e45a615e1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:accc8d8e6c8ffe8ce964c5a1b59732cf3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#accc8d8e6c8ffe8ce964c5a1b59732cf3">list_for_each_entry_reverse</a>(pos, head, member)</td></tr>
|
|
<tr class="separator:accc8d8e6c8ffe8ce964c5a1b59732cf3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af6fc8bdd3ce7ee375e35baf9d2b2e62a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#af6fc8bdd3ce7ee375e35baf9d2b2e62a">list_prepare_entry</a>(pos, head, member)   ((pos) ? : <a class="el" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>(head, typeof(*pos), member))</td></tr>
|
|
<tr class="separator:af6fc8bdd3ce7ee375e35baf9d2b2e62a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a91b31084b4ece72dbd75d2bb1f01d9ff"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a91b31084b4ece72dbd75d2bb1f01d9ff">list_for_each_entry_continue</a>(pos, head, member)</td></tr>
|
|
<tr class="separator:a91b31084b4ece72dbd75d2bb1f01d9ff"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac3f72d6bd5144c7970824813810d2da1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#ac3f72d6bd5144c7970824813810d2da1">list_for_each_entry_safe</a>(pos, n, head, member)</td></tr>
|
|
<tr class="separator:ac3f72d6bd5144c7970824813810d2da1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a01f08b212e62fb15eb21a3806fa7590c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a01f08b212e62fb15eb21a3806fa7590c">list_for_each_rcu</a>(pos, head)</td></tr>
|
|
<tr class="separator:a01f08b212e62fb15eb21a3806fa7590c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:abbf51eb5fa935cfe15fae7a37dd983fc"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#abbf51eb5fa935cfe15fae7a37dd983fc">__list_for_each_rcu</a>(pos, head)</td></tr>
|
|
<tr class="separator:abbf51eb5fa935cfe15fae7a37dd983fc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5d11673db9368e449f5cd52416fa1cf7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a5d11673db9368e449f5cd52416fa1cf7">list_for_each_safe_rcu</a>(pos, n, head)</td></tr>
|
|
<tr class="separator:a5d11673db9368e449f5cd52416fa1cf7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8f594017c381faadd03ff91037ef3490"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a8f594017c381faadd03ff91037ef3490">list_for_each_entry_rcu</a>(pos, head, member)</td></tr>
|
|
<tr class="separator:a8f594017c381faadd03ff91037ef3490"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3cd271ad1585a041358502377e8ae891"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a3cd271ad1585a041358502377e8ae891">list_for_each_continue_rcu</a>(pos, head)</td></tr>
|
|
<tr class="separator:a3cd271ad1585a041358502377e8ae891"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a68283f4abad271853d5b25ad697b1b06"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a68283f4abad271853d5b25ad697b1b06">HLIST_HEAD_INIT</a>   { .first = NULL }</td></tr>
|
|
<tr class="separator:a68283f4abad271853d5b25ad697b1b06"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5110612fedc3e1b54fce4c2143c4c788"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a5110612fedc3e1b54fce4c2143c4c788">HLIST_HEAD</a>(name)   struct <a class="el" href="../../df/d4d/structhlist__head.html">hlist_head</a> name = { .first = NULL }</td></tr>
|
|
<tr class="separator:a5110612fedc3e1b54fce4c2143c4c788"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a502bdfb9a4a5a0d922363ea1708bf081"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a502bdfb9a4a5a0d922363ea1708bf081">INIT_HLIST_HEAD</a>(ptr)   ((ptr)->first = NULL)</td></tr>
|
|
<tr class="separator:a502bdfb9a4a5a0d922363ea1708bf081"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9d36ad2cdc5a41b254c71b707760bcce"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a9d36ad2cdc5a41b254c71b707760bcce">INIT_HLIST_NODE</a>(ptr)   ((ptr)->next = NULL, (ptr)->pprev = NULL)</td></tr>
|
|
<tr class="separator:a9d36ad2cdc5a41b254c71b707760bcce"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a57c06f2da305f4a6e16d6a40b196b72e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a57c06f2da305f4a6e16d6a40b196b72e">hlist_del_rcu_init</a>   <a class="el" href="../../da/d00/linux__list_8h.html#a2e00d6f98de0c25c46a7645a0b6f4d5f">hlist_del_init</a></td></tr>
|
|
<tr class="separator:a57c06f2da305f4a6e16d6a40b196b72e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae6c5fc3a7207aad6b8ea756eaa8bb043"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#ae6c5fc3a7207aad6b8ea756eaa8bb043">hlist_entry</a>(ptr, <a class="el" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>, member)   <a class="el" href="../../da/d00/linux__list_8h.html#af8c317a42292b61c93aae91e59118a46">container_of</a>(ptr,<a class="el" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>,member)</td></tr>
|
|
<tr class="separator:ae6c5fc3a7207aad6b8ea756eaa8bb043"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac971440486bd1084a2b110f53a9ad3b7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#ac971440486bd1084a2b110f53a9ad3b7">hlist_for_each</a>(pos, head)</td></tr>
|
|
<tr class="separator:ac971440486bd1084a2b110f53a9ad3b7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a0ac51eeb1d38e770546acbe88d566211"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a0ac51eeb1d38e770546acbe88d566211">hlist_for_each_safe</a>(pos, n, head)</td></tr>
|
|
<tr class="separator:a0ac51eeb1d38e770546acbe88d566211"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3758c38c0697ac740d62f4d4db56abb4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a3758c38c0697ac740d62f4d4db56abb4">hlist_for_each_entry</a>(tpos, pos, head, member)</td></tr>
|
|
<tr class="separator:a3758c38c0697ac740d62f4d4db56abb4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a28c9946e110bc7830cfaeef96e1306b4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a28c9946e110bc7830cfaeef96e1306b4">hlist_for_each_entry_continue</a>(tpos, pos, member)</td></tr>
|
|
<tr class="separator:a28c9946e110bc7830cfaeef96e1306b4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a587cf22c9b7f20e8a9e47f82dd1bc7bb"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a587cf22c9b7f20e8a9e47f82dd1bc7bb">hlist_for_each_entry_from</a>(tpos, pos, member)</td></tr>
|
|
<tr class="separator:a587cf22c9b7f20e8a9e47f82dd1bc7bb"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5c24f2d2ef4edd718fc7553bbdd22cb6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a5c24f2d2ef4edd718fc7553bbdd22cb6">hlist_for_each_entry_safe</a>(tpos, pos, n, head, member)</td></tr>
|
|
<tr class="separator:a5c24f2d2ef4edd718fc7553bbdd22cb6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad4b9f81ad2c6b8d09c79a23ccd9771fe"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#ad4b9f81ad2c6b8d09c79a23ccd9771fe">hlist_for_each_entry_rcu</a>(tpos, pos, head, member)</td></tr>
|
|
<tr class="separator:ad4b9f81ad2c6b8d09c79a23ccd9771fe"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:a8a28f150a191624bf6923a48cdace7e3"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a8a28f150a191624bf6923a48cdace7e3">__list_add</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *new, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *prev, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *next)</td></tr>
|
|
<tr class="separator:a8a28f150a191624bf6923a48cdace7e3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a0373c4b3c8ce51a451a569ad978b32e1"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a0373c4b3c8ce51a451a569ad978b32e1">list_add</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *new, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *head)</td></tr>
|
|
<tr class="separator:a0373c4b3c8ce51a451a569ad978b32e1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a588bec046f1e9797b33a5c5ab250f447"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a588bec046f1e9797b33a5c5ab250f447">list_add_tail</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *new, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *head)</td></tr>
|
|
<tr class="separator:a588bec046f1e9797b33a5c5ab250f447"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5f5c28e8a54fd6bfbe9a9419aefddb88"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a5f5c28e8a54fd6bfbe9a9419aefddb88">__list_add_rcu</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *new, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *prev, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *next)</td></tr>
|
|
<tr class="separator:a5f5c28e8a54fd6bfbe9a9419aefddb88"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a087d5457d659b54dafff3b729c867192"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a087d5457d659b54dafff3b729c867192">list_add_rcu</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *new, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *head)</td></tr>
|
|
<tr class="separator:a087d5457d659b54dafff3b729c867192"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9c0a5060da14beb9e5aac0333a0162e1"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a9c0a5060da14beb9e5aac0333a0162e1">list_add_tail_rcu</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *new, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *head)</td></tr>
|
|
<tr class="separator:a9c0a5060da14beb9e5aac0333a0162e1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a24b474717d65a296695e8b79b4adefda"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a24b474717d65a296695e8b79b4adefda">__list_del</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *prev, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *next)</td></tr>
|
|
<tr class="separator:a24b474717d65a296695e8b79b4adefda"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ab1708206f0f7e0a56550b35372203ba5"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#ab1708206f0f7e0a56550b35372203ba5">list_del</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *entry)</td></tr>
|
|
<tr class="separator:ab1708206f0f7e0a56550b35372203ba5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3495fef4758575d5f7524d1585043ff0"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a3495fef4758575d5f7524d1585043ff0">list_del_rcu</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *entry)</td></tr>
|
|
<tr class="separator:a3495fef4758575d5f7524d1585043ff0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae1cde0f50b85945cfff23be4fc1586f4"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#ae1cde0f50b85945cfff23be4fc1586f4">list_del_init</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *entry)</td></tr>
|
|
<tr class="separator:ae1cde0f50b85945cfff23be4fc1586f4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aee8df43e41969c2272acfd6ed6e75d4c"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#aee8df43e41969c2272acfd6ed6e75d4c">list_move</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *list, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *head)</td></tr>
|
|
<tr class="separator:aee8df43e41969c2272acfd6ed6e75d4c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a1c5ac6a6b04a03f5782e818daacf96e9"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a1c5ac6a6b04a03f5782e818daacf96e9">list_move_tail</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *list, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *head)</td></tr>
|
|
<tr class="separator:a1c5ac6a6b04a03f5782e818daacf96e9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6601e54d8f27ab290ee6819f7e2127b7"><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a6601e54d8f27ab290ee6819f7e2127b7">list_empty</a> (const struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *head)</td></tr>
|
|
<tr class="separator:a6601e54d8f27ab290ee6819f7e2127b7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aba7d3f2ac5d41b9040e7341cab21591b"><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#aba7d3f2ac5d41b9040e7341cab21591b">list_empty_careful</a> (const struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *head)</td></tr>
|
|
<tr class="separator:aba7d3f2ac5d41b9040e7341cab21591b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a25979c80a2d71dd02ada121a46c71a59"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a25979c80a2d71dd02ada121a46c71a59">__list_splice</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *list, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *head)</td></tr>
|
|
<tr class="separator:a25979c80a2d71dd02ada121a46c71a59"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a2c4399cfbde5e5d5eddf2e13c97bd5d5"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a2c4399cfbde5e5d5eddf2e13c97bd5d5">list_splice</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *list, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *head)</td></tr>
|
|
<tr class="separator:a2c4399cfbde5e5d5eddf2e13c97bd5d5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a948b15519bb72e3d42f3e56975580d30"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a948b15519bb72e3d42f3e56975580d30">list_splice_init</a> (struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *list, struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> *head)</td></tr>
|
|
<tr class="separator:a948b15519bb72e3d42f3e56975580d30"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a7f946d296ab41ce808e96d529a4106d6"><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a7f946d296ab41ce808e96d529a4106d6">hlist_unhashed</a> (const struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> *h)</td></tr>
|
|
<tr class="separator:a7f946d296ab41ce808e96d529a4106d6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af610dde21167bf116937c81c393a229f"><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#af610dde21167bf116937c81c393a229f">hlist_empty</a> (const struct <a class="el" href="../../df/d4d/structhlist__head.html">hlist_head</a> *h)</td></tr>
|
|
<tr class="separator:af610dde21167bf116937c81c393a229f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a167c5c3fe3b88a3e499210033585c6d8"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a167c5c3fe3b88a3e499210033585c6d8">__hlist_del</a> (struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> *n)</td></tr>
|
|
<tr class="separator:a167c5c3fe3b88a3e499210033585c6d8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa7bb9806633e74fad4c0f4ba8d3ac850"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#aa7bb9806633e74fad4c0f4ba8d3ac850">hlist_del</a> (struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> *n)</td></tr>
|
|
<tr class="separator:aa7bb9806633e74fad4c0f4ba8d3ac850"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a0f031846dfd044009602871bd965561c"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a0f031846dfd044009602871bd965561c">hlist_del_rcu</a> (struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> *n)</td></tr>
|
|
<tr class="separator:a0f031846dfd044009602871bd965561c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a2e00d6f98de0c25c46a7645a0b6f4d5f"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a2e00d6f98de0c25c46a7645a0b6f4d5f">hlist_del_init</a> (struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> *n)</td></tr>
|
|
<tr class="separator:a2e00d6f98de0c25c46a7645a0b6f4d5f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad7a242949abf03ff2ae417686a4451cd"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#ad7a242949abf03ff2ae417686a4451cd">hlist_add_head</a> (struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> *n, struct <a class="el" href="../../df/d4d/structhlist__head.html">hlist_head</a> *h)</td></tr>
|
|
<tr class="separator:ad7a242949abf03ff2ae417686a4451cd"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad16ef5ef2d6e154c3e770176d8a6b5fd"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#ad16ef5ef2d6e154c3e770176d8a6b5fd">hlist_add_head_rcu</a> (struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> *n, struct <a class="el" href="../../df/d4d/structhlist__head.html">hlist_head</a> *h)</td></tr>
|
|
<tr class="separator:ad16ef5ef2d6e154c3e770176d8a6b5fd"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a254a79dcc8e7dd5662a4e67fcd04ed10"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a254a79dcc8e7dd5662a4e67fcd04ed10">hlist_add_before</a> (struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> *n, struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> *next)</td></tr>
|
|
<tr class="separator:a254a79dcc8e7dd5662a4e67fcd04ed10"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a15ceaf3edb7fab6f0b2289cb8c0771c4"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d00/linux__list_8h.html#a15ceaf3edb7fab6f0b2289cb8c0771c4">hlist_add_after</a> (struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> *n, struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> *next)</td></tr>
|
|
<tr class="separator:a15ceaf3edb7fab6f0b2289cb8c0771c4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<h2 class="groupheader">Macro Definition Documentation</h2>
|
|
<a class="anchor" id="abfd5aa736021dace98d07ff2518a698d"></a>
|
|
<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>   for (pos = (head)->next; pos != (head); pos = pos->next)</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>__list_for_each - iterate over a list : the &struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> to use as a loop counter. : the head for your list.</p>
|
|
<p>This variant differs from <a class="el" href="../../da/d00/linux__list_8h.html#ab8b24e6660ab3760c923e4b4db3fa502">list_for_each()</a> in that it's the simplest possible list iteration code, no prefetching is done. Use this for code that knows the list to be very short (empty or 1 entry) most of the time. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="abbf51eb5fa935cfe15fae7a37dd983fc"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define __list_for_each_rcu</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"><div class="line"><span class="keywordflow">for</span> (pos = (head)->next; pos != (head); \</div>
|
|
<div class="line"> pos = pos->next, ({ smp_read_barrier_depends(); 0;}))</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="af8c317a42292b61c93aae91e59118a46"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define container_of</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"><a class="el" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>, </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"><div class="line">({ \</div>
|
|
<div class="line"> const typeof( ((<a class="code" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a> *)0)->member ) *__mptr = (ptr); \</div>
|
|
<div class="line"> (<a class="code" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a> *)( (<span class="keywordtype">char</span> *)__mptr - <a class="code" href="../../da/d00/linux__list_8h.html#a276e8a32e0bbf024aadd9420b8f2d3b3">offsetof</a>(<a class="code" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>,member) );})</div>
|
|
<div class="ttc" id="krnl__route_8c_html_ac765329451135abec74c45e1897abf26"><div class="ttname"><a href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a></div><div class="ttdeci">int type</div><div class="ttdef"><b>Definition:</b> krnl_route.c:49</div></div>
|
|
<div class="ttc" id="linux__list_8h_html_a276e8a32e0bbf024aadd9420b8f2d3b3"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a276e8a32e0bbf024aadd9420b8f2d3b3">offsetof</a></div><div class="ttdeci">#define offsetof(TYPE, MEMBER)</div><div class="ttdef"><b>Definition:</b> linux_list.h:5</div></div>
|
|
</div><!-- fragment --><p>container_of - cast a member of a structure out to the containing structure</p>
|
|
<p>: the pointer to the member. : the type of the container struct this is embedded in. : the name of the member within the struct. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a57c06f2da305f4a6e16d6a40b196b72e"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define hlist_del_rcu_init   <a class="el" href="../../da/d00/linux__list_8h.html#a2e00d6f98de0c25c46a7645a0b6f4d5f">hlist_del_init</a></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ae6c5fc3a7207aad6b8ea756eaa8bb043"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define hlist_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"><a class="el" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>, </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>   <a class="el" href="../../da/d00/linux__list_8h.html#af8c317a42292b61c93aae91e59118a46">container_of</a>(ptr,<a class="el" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>,member)</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ac971440486bd1084a2b110f53a9ad3b7"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define hlist_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"><div class="line"><span class="keywordflow">for</span> (pos = (head)->first; pos && ({ <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->next); 1; }); \</div>
|
|
<div class="line"> pos = pos->next)</div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a3758c38c0697ac740d62f4d4db56abb4"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define hlist_for_each_entry</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">tpos, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></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"><div class="line"><span class="keywordflow">for</span> (pos = (head)->first; \</div>
|
|
<div class="line"> pos && ({ <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->next); 1;}) && \</div>
|
|
<div class="line"> ({ tpos = <a class="code" href="../../da/d00/linux__list_8h.html#ae6c5fc3a7207aad6b8ea756eaa8bb043">hlist_entry</a>(pos, typeof(*tpos), member); 1;}); \</div>
|
|
<div class="line"> pos = pos->next)</div>
|
|
<div class="ttc" id="linux__list_8h_html_ae6c5fc3a7207aad6b8ea756eaa8bb043"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#ae6c5fc3a7207aad6b8ea756eaa8bb043">hlist_entry</a></div><div class="ttdeci">#define hlist_entry(ptr, type, member)</div><div class="ttdef"><b>Definition:</b> linux_list.h:646</div></div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
</div><!-- fragment --><p>hlist_for_each_entry - iterate over list of given type : the type * to use as a loop counter. : the &struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> to use as a loop counter. : the head for your list. : the name of the <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> within the struct. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a28c9946e110bc7830cfaeef96e1306b4"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define hlist_for_each_entry_continue</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">tpos, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></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">member </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">for</span> (pos = (pos)->next; \</div>
|
|
<div class="line"> pos && ({ <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->next); 1;}) && \</div>
|
|
<div class="line"> ({ tpos = <a class="code" href="../../da/d00/linux__list_8h.html#ae6c5fc3a7207aad6b8ea756eaa8bb043">hlist_entry</a>(pos, typeof(*tpos), member); 1;}); \</div>
|
|
<div class="line"> pos = pos->next)</div>
|
|
<div class="ttc" id="linux__list_8h_html_ae6c5fc3a7207aad6b8ea756eaa8bb043"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#ae6c5fc3a7207aad6b8ea756eaa8bb043">hlist_entry</a></div><div class="ttdeci">#define hlist_entry(ptr, type, member)</div><div class="ttdef"><b>Definition:</b> linux_list.h:646</div></div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
</div><!-- fragment --><p>hlist_for_each_entry_continue - iterate over a hlist continuing after existing point : the type * to use as a loop counter. : the &struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> to use as a loop counter. : the name of the <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> within the struct. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a587cf22c9b7f20e8a9e47f82dd1bc7bb"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define hlist_for_each_entry_from</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">tpos, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></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">member </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">for</span> (; pos && ({ <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->next); 1;}) && \</div>
|
|
<div class="line"> ({ tpos = <a class="code" href="../../da/d00/linux__list_8h.html#ae6c5fc3a7207aad6b8ea756eaa8bb043">hlist_entry</a>(pos, typeof(*tpos), member); 1;}); \</div>
|
|
<div class="line"> pos = pos->next)</div>
|
|
<div class="ttc" id="linux__list_8h_html_ae6c5fc3a7207aad6b8ea756eaa8bb043"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#ae6c5fc3a7207aad6b8ea756eaa8bb043">hlist_entry</a></div><div class="ttdeci">#define hlist_entry(ptr, type, member)</div><div class="ttdef"><b>Definition:</b> linux_list.h:646</div></div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
</div><!-- fragment --><p>hlist_for_each_entry_from - iterate over a hlist continuing from existing point : the type * to use as a loop counter. : the &struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> to use as a loop counter. : the name of the <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> within the struct. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ad4b9f81ad2c6b8d09c79a23ccd9771fe"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define hlist_for_each_entry_rcu</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">tpos, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></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"><div class="line"><span class="keywordflow">for</span> (pos = (head)->first; \</div>
|
|
<div class="line"> pos && ({ <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->next); 1;}) && \</div>
|
|
<div class="line"> ({ tpos = <a class="code" href="../../da/d00/linux__list_8h.html#ae6c5fc3a7207aad6b8ea756eaa8bb043">hlist_entry</a>(pos, typeof(*tpos), member); 1;}); \</div>
|
|
<div class="line"> pos = pos->next, ({ smp_read_barrier_depends(); 0; }) )</div>
|
|
<div class="ttc" id="linux__list_8h_html_ae6c5fc3a7207aad6b8ea756eaa8bb043"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#ae6c5fc3a7207aad6b8ea756eaa8bb043">hlist_entry</a></div><div class="ttdeci">#define hlist_entry(ptr, type, member)</div><div class="ttdef"><b>Definition:</b> linux_list.h:646</div></div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
</div><!-- fragment --><p>hlist_for_each_entry_rcu - iterate over rcu list of given type : the type * to use as a loop counter. : the &struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> to use as a loop counter. : the head for your list. : the name of the <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> within the struct.</p>
|
|
<p>This list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as hlist_add_rcu() as long as the traversal is guarded by rcu_read_lock(). </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a5c24f2d2ef4edd718fc7553bbdd22cb6"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define hlist_for_each_entry_safe</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">tpos, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></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"><div class="line"><span class="keywordflow">for</span> (pos = (head)->first; \</div>
|
|
<div class="line"> pos && ({ n = pos->next; 1; }) && \</div>
|
|
<div class="line"> ({ tpos = <a class="code" href="../../da/d00/linux__list_8h.html#ae6c5fc3a7207aad6b8ea756eaa8bb043">hlist_entry</a>(pos, typeof(*tpos), member); 1;}); \</div>
|
|
<div class="line"> pos = n)</div>
|
|
<div class="ttc" id="linux__list_8h_html_ae6c5fc3a7207aad6b8ea756eaa8bb043"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#ae6c5fc3a7207aad6b8ea756eaa8bb043">hlist_entry</a></div><div class="ttdeci">#define hlist_entry(ptr, type, member)</div><div class="ttdef"><b>Definition:</b> linux_list.h:646</div></div>
|
|
</div><!-- fragment --><p>hlist_for_each_entry_safe - iterate over list of given type safe against removal of list entry : the type * to use as a loop counter. : the &struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> to use as a loop counter. <br/>
|
|
: another &struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> to use as temporary storage : the head for your list. : the name of the <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> within the struct. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a0ac51eeb1d38e770546acbe88d566211"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define hlist_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"><div class="line"><span class="keywordflow">for</span> (pos = (head)->first; pos && ({ n = pos->next; 1; }); \</div>
|
|
<div class="line"> pos = n)</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a5110612fedc3e1b54fce4c2143c4c788"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define HLIST_HEAD</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">name</td><td>)</td>
|
|
<td>   struct <a class="el" href="../../df/d4d/structhlist__head.html">hlist_head</a> name = { .first = NULL }</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a68283f4abad271853d5b25ad697b1b06"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define HLIST_HEAD_INIT   { .first = NULL }</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a502bdfb9a4a5a0d922363ea1708bf081"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define INIT_HLIST_HEAD</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">ptr</td><td>)</td>
|
|
<td>   ((ptr)->first = NULL)</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a9d36ad2cdc5a41b254c71b707760bcce"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define INIT_HLIST_NODE</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">ptr</td><td>)</td>
|
|
<td>   ((ptr)->next = NULL, (ptr)->pprev = NULL)</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a0ffe9d28c36d7b018a9cfae33bae45c0"></a>
|
|
<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"><div class="line"><span class="keywordflow">do</span> { \</div>
|
|
<div class="line"> (ptr)->next = (ptr); (ptr)->prev = (ptr); \</div>
|
|
<div class="line">} <span class="keywordflow">while</span> (0)</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a26c976b7f654e70df318c1843e5094de"></a>
|
|
<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"><a class="el" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>, </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>   <a class="el" href="../../da/d00/linux__list_8h.html#af8c317a42292b61c93aae91e59118a46">container_of</a>(ptr, <a class="el" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>, member)</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_entry - get the struct for this entry : the &struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> pointer. : 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>
|
|
<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"><div class="line"><span class="keywordflow">for</span> (pos = (head)->next, <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->next); pos != (head); \</div>
|
|
<div class="line"> pos = pos->next, <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->next))</div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
</div><!-- fragment --><p>list_for_each - iterate over a list : the &struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> to use as a loop counter. : the head for your list. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a3cd271ad1585a041358502377e8ae891"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define list_for_each_continue_rcu</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"><div class="line"><span class="keywordflow">for</span> ((pos) = (pos)->next, <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>((pos)->next); (pos) != (head); \</div>
|
|
<div class="line"> (pos) = (pos)->next, ({ smp_read_barrier_depends(); 0;}), <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>((pos)->next))</div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
</div><!-- fragment --><p>list_for_each_continue_rcu - iterate over an rcu-protected list continuing after existing point. : the &struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> to use as a loop counter. : the head for your list.</p>
|
|
<p>This list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as <a class="el" href="../../da/d00/linux__list_8h.html#a087d5457d659b54dafff3b729c867192">list_add_rcu()</a> as long as the traversal is guarded by rcu_read_lock(). </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a9b782fefb5ab71ce9762182e45a615e1"></a>
|
|
<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"><div class="line"><span class="keywordflow">for</span> (pos = <a class="code" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>((head)->next, typeof(*pos), member), \</div>
|
|
<div class="line"> <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->member.next); \</div>
|
|
<div class="line"> &pos->member != (head); \</div>
|
|
<div class="line"> pos = <a class="code" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>(pos->member.next, typeof(*pos), member), \</div>
|
|
<div class="line"> <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->member.next))</div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
<div class="ttc" id="linux__list_8h_html_a26c976b7f654e70df318c1843e5094de"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a></div><div class="ttdeci">#define list_entry(ptr, type, member)</div><div class="ttdef"><b>Definition:</b> linux_list.h:330</div></div>
|
|
</div><!-- fragment --><p>list_for_each_entry - iterate over list of given type : the type * to use as a loop counter. : the head for your list. : the name of the list_struct within the struct. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a91b31084b4ece72dbd75d2bb1f01d9ff"></a>
|
|
<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"><div class="line"><span class="keywordflow">for</span> (pos = <a class="code" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>(pos->member.next, typeof(*pos), member), \</div>
|
|
<div class="line"> <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->member.next); \</div>
|
|
<div class="line"> &pos->member != (head); \</div>
|
|
<div class="line"> pos = <a class="code" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>(pos->member.next, typeof(*pos), member), \</div>
|
|
<div class="line"> <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->member.next))</div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
<div class="ttc" id="linux__list_8h_html_a26c976b7f654e70df318c1843e5094de"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a></div><div class="ttdeci">#define list_entry(ptr, type, member)</div><div class="ttdef"><b>Definition:</b> linux_list.h:330</div></div>
|
|
</div><!-- fragment --><p>list_for_each_entry_continue - iterate over list of given type continuing after existing point : the type * to use as a loop counter. : the head for your list. : the name of the list_struct within the struct. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a8f594017c381faadd03ff91037ef3490"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define list_for_each_entry_rcu</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"><div class="line"><span class="keywordflow">for</span> (pos = <a class="code" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>((head)->next, typeof(*pos), member), \</div>
|
|
<div class="line"> <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->member.next); \</div>
|
|
<div class="line"> &pos->member != (head); \</div>
|
|
<div class="line"> pos = <a class="code" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>(pos->member.next, typeof(*pos), member), \</div>
|
|
<div class="line"> ({ smp_read_barrier_depends(); 0;}), \</div>
|
|
<div class="line"> <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->member.next))</div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
<div class="ttc" id="linux__list_8h_html_a26c976b7f654e70df318c1843e5094de"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a></div><div class="ttdeci">#define list_entry(ptr, type, member)</div><div class="ttdef"><b>Definition:</b> linux_list.h:330</div></div>
|
|
</div><!-- fragment --><p>list_for_each_entry_rcu - iterate over rcu list of given type : the type * to use as a loop counter. : the head for your list. : the name of the list_struct within the struct.</p>
|
|
<p>This list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as <a class="el" href="../../da/d00/linux__list_8h.html#a087d5457d659b54dafff3b729c867192">list_add_rcu()</a> as long as the traversal is guarded by rcu_read_lock(). </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="accc8d8e6c8ffe8ce964c5a1b59732cf3"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define list_for_each_entry_reverse</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"><div class="line"><span class="keywordflow">for</span> (pos = <a class="code" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>((head)->prev, typeof(*pos), member), \</div>
|
|
<div class="line"> <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->member.prev); \</div>
|
|
<div class="line"> &pos->member != (head); \</div>
|
|
<div class="line"> pos = <a class="code" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>(pos->member.prev, typeof(*pos), member), \</div>
|
|
<div class="line"> <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->member.prev))</div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
<div class="ttc" id="linux__list_8h_html_a26c976b7f654e70df318c1843e5094de"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a></div><div class="ttdeci">#define list_entry(ptr, type, member)</div><div class="ttdef"><b>Definition:</b> linux_list.h:330</div></div>
|
|
</div><!-- fragment --><p>list_for_each_entry_reverse - iterate backwards over list of given type. : the type * to use as a loop counter. : the head for your list. : the name of the list_struct within the struct. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ac3f72d6bd5144c7970824813810d2da1"></a>
|
|
<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"><div class="line"><span class="keywordflow">for</span> (pos = <a class="code" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>((head)->next, typeof(*pos), member), \</div>
|
|
<div class="line"> n = <a class="code" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>(pos->member.next, typeof(*pos), member); \</div>
|
|
<div class="line"> &pos->member != (head); \</div>
|
|
<div class="line"> pos = n, n = <a class="code" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>(n->member.next, typeof(*n), member))</div>
|
|
<div class="ttc" id="linux__list_8h_html_a26c976b7f654e70df318c1843e5094de"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a></div><div class="ttdeci">#define list_entry(ptr, type, member)</div><div class="ttdef"><b>Definition:</b> linux_list.h:330</div></div>
|
|
</div><!-- fragment --><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. <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>
|
|
<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"><div class="line"><span class="keywordflow">for</span> (pos = (head)->prev, <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->prev); pos != (head); \</div>
|
|
<div class="line"> pos = pos->prev, <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->prev))</div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
</div><!-- fragment --><p>list_for_each_prev - iterate over a list backwards : the &struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> to use as a loop counter. : the head for your list. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a01f08b212e62fb15eb21a3806fa7590c"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define list_for_each_rcu</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"><div class="line"><span class="keywordflow">for</span> (pos = (head)->next, <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->next); pos != (head); \</div>
|
|
<div class="line"> pos = pos->next, ({ smp_read_barrier_depends(); 0;}), <a class="code" href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a>(pos->next))</div>
|
|
<div class="ttc" id="linux__list_8h_html_a004692feb1f91896c21a6d1644b54f2b"><div class="ttname"><a href="../../da/d00/linux__list_8h.html#a004692feb1f91896c21a6d1644b54f2b">prefetch</a></div><div class="ttdeci">#define prefetch(x)</div><div class="ttdef"><b>Definition:</b> linux_list.h:30</div></div>
|
|
</div><!-- fragment --><p>list_for_each_rcu - iterate over an rcu-protected list : the &struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> to use as a loop counter. : the head for your list.</p>
|
|
<p>This list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as <a class="el" href="../../da/d00/linux__list_8h.html#a087d5457d659b54dafff3b729c867192">list_add_rcu()</a> as long as the traversal is guarded by rcu_read_lock(). </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a9e4b9328744994b9d3878f5dad75c09f"></a>
|
|
<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"><div class="line"><span class="keywordflow">for</span> (pos = (head)->next, n = pos->next; pos != (head); \</div>
|
|
<div class="line"> pos = n, n = pos->next)</div>
|
|
</div><!-- fragment --><p>list_for_each_safe - iterate over a list safe against removal of list entry : the &struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> to use as a loop counter. <br/>
|
|
: another &struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> to use as temporary storage : the head for your list. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a5d11673db9368e449f5cd52416fa1cf7"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define list_for_each_safe_rcu</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"><div class="line"><span class="keywordflow">for</span> (pos = (head)->next, n = pos->next; pos != (head); \</div>
|
|
<div class="line"> pos = n, ({ smp_read_barrier_depends(); 0;}), n = pos->next)</div>
|
|
</div><!-- fragment --><p>list_for_each_safe_rcu - iterate over an rcu-protected list safe against removal of list entry : the &struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> to use as a loop counter. <br/>
|
|
: another &struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> to use as temporary storage : the head for your list.</p>
|
|
<p>This list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as <a class="el" href="../../da/d00/linux__list_8h.html#a087d5457d659b54dafff3b729c867192">list_add_rcu()</a> as long as the traversal is guarded by rcu_read_lock(). </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a42f0e72af970a790b60a740af8c9ecd0"></a>
|
|
<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="../../d9/d93/structlist__head.html">list_head</a> name = <a class="el" href="../../da/d00/linux__list_8h.html#a4642d4b7df28478bb762fe43c85b5c63">LIST_HEAD_INIT</a>(name)</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a4642d4b7df28478bb762fe43c85b5c63"></a>
|
|
<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>
|
|
<a class="anchor" id="a96b8b53821aa079fc5acc2ecac6a309f"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define LIST_POISON1   ((void *) 0x00100100)</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a32e88152ac3cebc4352f9f6254e786ff"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define LIST_POISON2   ((void *) 0x00200200)</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="af6fc8bdd3ce7ee375e35baf9d2b2e62a"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define list_prepare_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>   ((pos) ? : <a class="el" href="../../da/d00/linux__list_8h.html#a26c976b7f654e70df318c1843e5094de">list_entry</a>(head, typeof(*pos), member))</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_prepare_entry - prepare a pos entry for use as a start point in list_for_each_entry_continue : the type * to use as a start point : the head of the list : the name of the list_struct within the struct. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a276e8a32e0bbf024aadd9420b8f2d3b3"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define offsetof</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>   ((size_t) &((TYPE *)0)->MEMBER)</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a004692feb1f91896c21a6d1644b54f2b"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define prefetch</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">x</td><td>)</td>
|
|
<td>   1</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="af5af5daeacc75c413fb9a3f910e9fb32"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define smp_wmb</td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a8b644e688b339331a7c1f93a39c379ad"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define typecheck</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname"><a class="el" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">x </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line">({ <a class="code" href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a> __dummy; \</div>
|
|
<div class="line"> typeof(x) __dummy2; \</div>
|
|
<div class="line"> (<span class="keywordtype">void</span>)(&__dummy == &__dummy2); \</div>
|
|
<div class="line"> 1; \</div>
|
|
<div class="line">})</div>
|
|
<div class="ttc" id="krnl__route_8c_html_ac765329451135abec74c45e1897abf26"><div class="ttname"><a href="../../d8/d91/krnl__route_8c.html#ac765329451135abec74c45e1897abf26">type</a></div><div class="ttdeci">int type</div><div class="ttdef"><b>Definition:</b> krnl_route.c:49</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a class="anchor" id="a167c5c3fe3b88a3e499210033585c6d8"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void __hlist_del </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> * </td>
|
|
<td class="paramname"><em>n</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p><div class="dynheader">
|
|
Here is the caller graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a167c5c3fe3b88a3e499210033585c6d8_icgraph.png" border="0" usemap="#da/d00/linux__list_8h_a167c5c3fe3b88a3e499210033585c6d8_icgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a167c5c3fe3b88a3e499210033585c6d8_icgraph" id="da/d00/linux__list_8h_a167c5c3fe3b88a3e499210033585c6d8_icgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#aa7bb9806633e74fad4c0f4ba8d3ac850" title="hlist_del" alt="" coords="152,5,221,35"/><area shape="rect" id="node5" href="../../da/d00/linux__list_8h.html#a0f031846dfd044009602871bd965561c" title="hlist_del_rcu" alt="" coords="140,59,233,88"/><area shape="rect" id="node7" href="../../da/d00/linux__list_8h.html#a2e00d6f98de0c25c46a7645a0b6f4d5f" title="hlist_del_init" alt="" coords="140,112,233,141"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a8a28f150a191624bf6923a48cdace7e3"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void __list_add </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>new</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>prev</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>next</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p><div class="dynheader">
|
|
Here is the caller graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a8a28f150a191624bf6923a48cdace7e3_icgraph.png" border="0" usemap="#da/d00/linux__list_8h_a8a28f150a191624bf6923a48cdace7e3_icgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a8a28f150a191624bf6923a48cdace7e3_icgraph" id="da/d00/linux__list_8h_a8a28f150a191624bf6923a48cdace7e3_icgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a0373c4b3c8ce51a451a569ad978b32e1" title="list_add" alt="" coords="148,57,215,87"/><area shape="rect" id="node7" href="../../da/d00/linux__list_8h.html#a588bec046f1e9797b33a5c5ab250f447" title="list_add_tail" alt="" coords="136,161,227,191"/><area shape="rect" id="node5" href="../../da/d00/linux__list_8h.html#aee8df43e41969c2272acfd6ed6e75d4c" title="list_move" alt="" coords="315,5,392,35"/><area shape="rect" id="node9" href="../../d6/dd7/libiptc_8c.html#af130614ad67e104ad214525f45dacc8f" title="iptc_insert_chain" alt="" coords="293,59,413,88"/><area shape="rect" id="node13" href="../../d6/dd7/libiptc_8c.html#a7d354e9d7ffb0e9c1dd2da8dee8825a5" title="cache_add_entry" alt="" coords="696,111,816,140"/><area shape="rect" id="node22" href="../../d6/dd7/libiptc_8c.html#aa9fc5848183e96cd3d8ccdbf7427750c" title="TC_INSERT_ENTRY" alt="" coords="481,163,631,192"/><area shape="rect" id="node25" href="../../d6/dd7/libiptc_8c.html#a18298788b51418c936d6557e047951f9" title="TC_APPEND_ENTRY" alt="" coords="276,213,431,243"/><area shape="rect" id="node27" href="../../d6/dd7/libiptc_8c.html#aa6d69e796c7f333c9b8906bf904cd85e" title="TC_CREATE_CHAIN" alt="" coords="680,240,832,269"/><area shape="rect" id="node30" href="../../da/d00/linux__list_8h.html#a1c5ac6a6b04a03f5782e818daacf96e9" title="list_move_tail" alt="" coords="303,317,404,347"/><area shape="rect" id="node11" href="../../d6/dd7/libiptc_8c.html#a027b4f4be877fb5fac76780fffd10416" title="__iptcc_p_add_chain" alt="" coords="484,59,628,88"/><area shape="rect" id="node15" href="../../d6/dd7/libiptc_8c.html#a88b01c8f1765564781d4edc11a79ef02" title="parse_table" alt="" coords="881,111,969,140"/><area shape="rect" id="node17" href="../../d6/dd7/libiptc_8c.html#afd58eb6a5f1ed0495ffdf844c35864b7" title="TC_INIT" alt="" coords="1020,111,1092,140"/><area shape="rect" id="node19" href="../../d6/dd7/libiptc_8c.html#a62e972b7995de2ebbda29fcde37042da" title="TC_STRERROR" alt="" coords="1141,163,1264,192"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a5f5c28e8a54fd6bfbe9a9419aefddb88"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void __list_add_rcu </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>new</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>prev</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>next</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p><div class="dynheader">
|
|
Here is the caller graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a5f5c28e8a54fd6bfbe9a9419aefddb88_icgraph.png" border="0" usemap="#da/d00/linux__list_8h_a5f5c28e8a54fd6bfbe9a9419aefddb88_icgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a5f5c28e8a54fd6bfbe9a9419aefddb88_icgraph" id="da/d00/linux__list_8h_a5f5c28e8a54fd6bfbe9a9419aefddb88_icgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a087d5457d659b54dafff3b729c867192" title="list_add_rcu" alt="" coords="173,5,264,35"/><area shape="rect" id="node5" href="../../da/d00/linux__list_8h.html#a9c0a5060da14beb9e5aac0333a0162e1" title="list_add_tail_rcu" alt="" coords="161,59,276,88"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a24b474717d65a296695e8b79b4adefda"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void __list_del </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>prev</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>next</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p><div class="dynheader">
|
|
Here is the caller graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a24b474717d65a296695e8b79b4adefda_icgraph.png" border="0" usemap="#da/d00/linux__list_8h_a24b474717d65a296695e8b79b4adefda_icgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a24b474717d65a296695e8b79b4adefda_icgraph" id="da/d00/linux__list_8h_a24b474717d65a296695e8b79b4adefda_icgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#ab1708206f0f7e0a56550b35372203ba5" title="list_del" alt="" coords="152,5,213,35"/><area shape="rect" id="node5" href="../../da/d00/linux__list_8h.html#a3495fef4758575d5f7524d1585043ff0" title="list_del_rcu" alt="" coords="139,59,227,88"/><area shape="rect" id="node7" href="../../da/d00/linux__list_8h.html#ae1cde0f50b85945cfff23be4fc1586f4" title="list_del_init" alt="" coords="140,112,225,141"/><area shape="rect" id="node9" href="../../da/d00/linux__list_8h.html#aee8df43e41969c2272acfd6ed6e75d4c" title="list_move" alt="" coords="144,165,221,195"/><area shape="rect" id="node11" href="../../da/d00/linux__list_8h.html#a1c5ac6a6b04a03f5782e818daacf96e9" title="list_move_tail" alt="" coords="132,219,233,248"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a25979c80a2d71dd02ada121a46c71a59"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void __list_splice </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>list</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>head</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p><div class="dynheader">
|
|
Here is the caller graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a25979c80a2d71dd02ada121a46c71a59_icgraph.png" border="0" usemap="#da/d00/linux__list_8h_a25979c80a2d71dd02ada121a46c71a59_icgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a25979c80a2d71dd02ada121a46c71a59_icgraph" id="da/d00/linux__list_8h_a25979c80a2d71dd02ada121a46c71a59_icgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a2c4399cfbde5e5d5eddf2e13c97bd5d5" title="list_splice" alt="" coords="161,5,241,35"/><area shape="rect" id="node5" href="../../da/d00/linux__list_8h.html#a948b15519bb72e3d42f3e56975580d30" title="list_splice_init" alt="" coords="149,59,253,88"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a15ceaf3edb7fab6f0b2289cb8c0771c4"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void hlist_add_after </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> * </td>
|
|
<td class="paramname"><em>n</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> * </td>
|
|
<td class="paramname"><em>next</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a254a79dcc8e7dd5662a4e67fcd04ed10"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void hlist_add_before </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> * </td>
|
|
<td class="paramname"><em>n</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> * </td>
|
|
<td class="paramname"><em>next</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ad7a242949abf03ff2ae417686a4451cd"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void hlist_add_head </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> * </td>
|
|
<td class="paramname"><em>n</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../df/d4d/structhlist__head.html">hlist_head</a> * </td>
|
|
<td class="paramname"><em>h</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ad16ef5ef2d6e154c3e770176d8a6b5fd"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void hlist_add_head_rcu </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> * </td>
|
|
<td class="paramname"><em>n</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../df/d4d/structhlist__head.html">hlist_head</a> * </td>
|
|
<td class="paramname"><em>h</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>hlist_add_head_rcu - adds the specified element to the specified hlist, while permitting racing traversals. <br/>
|
|
: the element to add to the hash list. : the list to add to.</p>
|
|
<p>The caller must take whatever precautions are necessary (such as holding appropriate locks) to avoid racing with another list-mutation primitive, such as <a class="el" href="../../da/d00/linux__list_8h.html#ad16ef5ef2d6e154c3e770176d8a6b5fd">hlist_add_head_rcu()</a> or <a class="el" href="../../da/d00/linux__list_8h.html#a0f031846dfd044009602871bd965561c">hlist_del_rcu()</a>, running on this same list. However, it is perfectly legal to run concurrently with the _rcu list-traversal primitives, such as <a class="el" href="../../da/d00/linux__list_8h.html#a3758c38c0697ac740d62f4d4db56abb4">hlist_for_each_entry()</a>, but only if smp_read_barrier_depends() is used to prevent memory-consistency problems on Alpha CPUs. Regardless of the type of CPU, the list-traversal primitive must be guarded by rcu_read_lock().</p>
|
|
<p>OK, so why don't we have an <a class="el" href="../../da/d00/linux__list_8h.html#ad4b9f81ad2c6b8d09c79a23ccd9771fe">hlist_for_each_entry_rcu()</a>??? </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="aa7bb9806633e74fad4c0f4ba8d3ac850"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void hlist_del </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> * </td>
|
|
<td class="paramname"><em>n</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_aa7bb9806633e74fad4c0f4ba8d3ac850_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_aa7bb9806633e74fad4c0f4ba8d3ac850_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_aa7bb9806633e74fad4c0f4ba8d3ac850_cgraph" id="da/d00/linux__list_8h_aa7bb9806633e74fad4c0f4ba8d3ac850_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a167c5c3fe3b88a3e499210033585c6d8" title="__hlist_del" alt="" coords="127,5,209,35"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a2e00d6f98de0c25c46a7645a0b6f4d5f"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void hlist_del_init </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> * </td>
|
|
<td class="paramname"><em>n</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a2e00d6f98de0c25c46a7645a0b6f4d5f_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_a2e00d6f98de0c25c46a7645a0b6f4d5f_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a2e00d6f98de0c25c46a7645a0b6f4d5f_cgraph" id="da/d00/linux__list_8h_a2e00d6f98de0c25c46a7645a0b6f4d5f_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a167c5c3fe3b88a3e499210033585c6d8" title="__hlist_del" alt="" coords="151,5,233,35"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a0f031846dfd044009602871bd965561c"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void hlist_del_rcu </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> * </td>
|
|
<td class="paramname"><em>n</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>hlist_del_rcu - deletes entry from hash list without re-initialization <br/>
|
|
: the element to delete from the hash list.</p>
|
|
<p>Note: list_unhashed() on entry does not return true after this, the entry is in an undefined state. It is useful for RCU based lockfree traversal.</p>
|
|
<p>In particular, it means that we can not poison the forward pointers that may still be used for walking the hash list.</p>
|
|
<p>The caller must take whatever precautions are necessary (such as holding appropriate locks) to avoid racing with another list-mutation primitive, such as <a class="el" href="../../da/d00/linux__list_8h.html#ad16ef5ef2d6e154c3e770176d8a6b5fd">hlist_add_head_rcu()</a> or <a class="el" href="../../da/d00/linux__list_8h.html#a0f031846dfd044009602871bd965561c">hlist_del_rcu()</a>, running on this same list. However, it is perfectly legal to run concurrently with the _rcu list-traversal primitives, such as <a class="el" href="../../da/d00/linux__list_8h.html#a3758c38c0697ac740d62f4d4db56abb4">hlist_for_each_entry()</a>. </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a0f031846dfd044009602871bd965561c_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_a0f031846dfd044009602871bd965561c_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a0f031846dfd044009602871bd965561c_cgraph" id="da/d00/linux__list_8h_a0f031846dfd044009602871bd965561c_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a167c5c3fe3b88a3e499210033585c6d8" title="__hlist_del" alt="" coords="151,5,233,35"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="af610dde21167bf116937c81c393a229f"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static int hlist_empty </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const struct <a class="el" href="../../df/d4d/structhlist__head.html">hlist_head</a> * </td>
|
|
<td class="paramname"><em>h</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a7f946d296ab41ce808e96d529a4106d6"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static int hlist_unhashed </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const struct <a class="el" href="../../da/d12/structhlist__node.html">hlist_node</a> * </td>
|
|
<td class="paramname"><em>h</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a0373c4b3c8ce51a451a569ad978b32e1"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void list_add </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>new</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>head</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_add - add a new entry : new entry to be added : list head to add it after</p>
|
|
<p>Insert a new entry after the specified head. This is good for implementing stacks. </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a0373c4b3c8ce51a451a569ad978b32e1_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_a0373c4b3c8ce51a451a569ad978b32e1_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a0373c4b3c8ce51a451a569ad978b32e1_cgraph" id="da/d00/linux__list_8h_a0373c4b3c8ce51a451a569ad978b32e1_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a8a28f150a191624bf6923a48cdace7e3" title="__list_add" alt="" coords="121,5,201,35"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the caller graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a0373c4b3c8ce51a451a569ad978b32e1_icgraph.png" border="0" usemap="#da/d00/linux__list_8h_a0373c4b3c8ce51a451a569ad978b32e1_icgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a0373c4b3c8ce51a451a569ad978b32e1_icgraph" id="da/d00/linux__list_8h_a0373c4b3c8ce51a451a569ad978b32e1_icgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#aee8df43e41969c2272acfd6ed6e75d4c" title="list_move" alt="" coords="121,5,199,35"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a087d5457d659b54dafff3b729c867192"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void list_add_rcu </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>new</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>head</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_add_rcu - add a new entry to rcu-protected list : new entry to be added : list head to add it after</p>
|
|
<p>Insert a new entry after the specified head. This is good for implementing stacks.</p>
|
|
<p>The caller must take whatever precautions are necessary (such as holding appropriate locks) to avoid racing with another list-mutation primitive, such as <a class="el" href="../../da/d00/linux__list_8h.html#a087d5457d659b54dafff3b729c867192">list_add_rcu()</a> or <a class="el" href="../../da/d00/linux__list_8h.html#a3495fef4758575d5f7524d1585043ff0">list_del_rcu()</a>, running on this same list. However, it is perfectly legal to run concurrently with the _rcu list-traversal primitives, such as <a class="el" href="../../da/d00/linux__list_8h.html#a8f594017c381faadd03ff91037ef3490">list_for_each_entry_rcu()</a>. </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a087d5457d659b54dafff3b729c867192_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_a087d5457d659b54dafff3b729c867192_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a087d5457d659b54dafff3b729c867192_cgraph" id="da/d00/linux__list_8h_a087d5457d659b54dafff3b729c867192_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a5f5c28e8a54fd6bfbe9a9419aefddb88" title="__list_add_rcu" alt="" coords="147,5,253,35"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a588bec046f1e9797b33a5c5ab250f447"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void list_add_tail </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>new</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>head</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_add_tail - add a new entry : new entry to be added : list head to add it before</p>
|
|
<p>Insert a new entry before the specified head. This is useful for implementing queues. </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a588bec046f1e9797b33a5c5ab250f447_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_a588bec046f1e9797b33a5c5ab250f447_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a588bec046f1e9797b33a5c5ab250f447_cgraph" id="da/d00/linux__list_8h_a588bec046f1e9797b33a5c5ab250f447_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a8a28f150a191624bf6923a48cdace7e3" title="__list_add" alt="" coords="145,5,225,35"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the caller graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a588bec046f1e9797b33a5c5ab250f447_icgraph.png" border="0" usemap="#da/d00/linux__list_8h_a588bec046f1e9797b33a5c5ab250f447_icgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a588bec046f1e9797b33a5c5ab250f447_icgraph" id="da/d00/linux__list_8h_a588bec046f1e9797b33a5c5ab250f447_icgraph">
|
|
<area shape="rect" id="node3" href="../../d6/dd7/libiptc_8c.html#af130614ad67e104ad214525f45dacc8f" title="iptc_insert_chain" alt="" coords="163,5,283,35"/><area shape="rect" id="node7" href="../../d6/dd7/libiptc_8c.html#a7d354e9d7ffb0e9c1dd2da8dee8825a5" title="cache_add_entry" alt="" coords="565,57,685,87"/><area shape="rect" id="node16" href="../../d6/dd7/libiptc_8c.html#aa9fc5848183e96cd3d8ccdbf7427750c" title="TC_INSERT_ENTRY" alt="" coords="351,109,500,139"/><area shape="rect" id="node19" href="../../d6/dd7/libiptc_8c.html#a18298788b51418c936d6557e047951f9" title="TC_APPEND_ENTRY" alt="" coords="145,160,300,189"/><area shape="rect" id="node21" href="../../d6/dd7/libiptc_8c.html#aa6d69e796c7f333c9b8906bf904cd85e" title="TC_CREATE_CHAIN" alt="" coords="549,187,701,216"/><area shape="rect" id="node24" href="../../da/d00/linux__list_8h.html#a1c5ac6a6b04a03f5782e818daacf96e9" title="list_move_tail" alt="" coords="172,264,273,293"/><area shape="rect" id="node5" href="../../d6/dd7/libiptc_8c.html#a027b4f4be877fb5fac76780fffd10416" title="__iptcc_p_add_chain" alt="" coords="353,5,497,35"/><area shape="rect" id="node9" href="../../d6/dd7/libiptc_8c.html#a88b01c8f1765564781d4edc11a79ef02" title="parse_table" alt="" coords="751,57,839,87"/><area shape="rect" id="node11" href="../../d6/dd7/libiptc_8c.html#afd58eb6a5f1ed0495ffdf844c35864b7" title="TC_INIT" alt="" coords="889,57,961,87"/><area shape="rect" id="node13" href="../../d6/dd7/libiptc_8c.html#a62e972b7995de2ebbda29fcde37042da" title="TC_STRERROR" alt="" coords="1011,109,1133,139"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a9c0a5060da14beb9e5aac0333a0162e1"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void list_add_tail_rcu </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>new</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>head</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_add_tail_rcu - add a new entry to rcu-protected list : new entry to be added : list head to add it before</p>
|
|
<p>Insert a new entry before the specified head. This is useful for implementing queues.</p>
|
|
<p>The caller must take whatever precautions are necessary (such as holding appropriate locks) to avoid racing with another list-mutation primitive, such as <a class="el" href="../../da/d00/linux__list_8h.html#a9c0a5060da14beb9e5aac0333a0162e1">list_add_tail_rcu()</a> or <a class="el" href="../../da/d00/linux__list_8h.html#a3495fef4758575d5f7524d1585043ff0">list_del_rcu()</a>, running on this same list. However, it is perfectly legal to run concurrently with the _rcu list-traversal primitives, such as <a class="el" href="../../da/d00/linux__list_8h.html#a8f594017c381faadd03ff91037ef3490">list_for_each_entry_rcu()</a>. </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a9c0a5060da14beb9e5aac0333a0162e1_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_a9c0a5060da14beb9e5aac0333a0162e1_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a9c0a5060da14beb9e5aac0333a0162e1_cgraph" id="da/d00/linux__list_8h_a9c0a5060da14beb9e5aac0333a0162e1_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a5f5c28e8a54fd6bfbe9a9419aefddb88" title="__list_add_rcu" alt="" coords="171,5,277,35"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ab1708206f0f7e0a56550b35372203ba5"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void list_del </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>entry</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_del - deletes entry from list. : the element to delete from the list. Note: list_empty on entry does not return true after this, the entry is in an undefined state. </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_ab1708206f0f7e0a56550b35372203ba5_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_ab1708206f0f7e0a56550b35372203ba5_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_ab1708206f0f7e0a56550b35372203ba5_cgraph" id="da/d00/linux__list_8h_ab1708206f0f7e0a56550b35372203ba5_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a24b474717d65a296695e8b79b4adefda" title="__list_del" alt="" coords="117,5,195,35"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ae1cde0f50b85945cfff23be4fc1586f4"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void list_del_init </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>entry</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_del_init - deletes entry from list and reinitialize it. : the element to delete from the list. </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_ae1cde0f50b85945cfff23be4fc1586f4_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_ae1cde0f50b85945cfff23be4fc1586f4_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_ae1cde0f50b85945cfff23be4fc1586f4_cgraph" id="da/d00/linux__list_8h_ae1cde0f50b85945cfff23be4fc1586f4_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a24b474717d65a296695e8b79b4adefda" title="__list_del" alt="" coords="141,5,219,35"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a3495fef4758575d5f7524d1585043ff0"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void list_del_rcu </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>entry</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_del_rcu - deletes entry from list without re-initialization : the element to delete from the list.</p>
|
|
<p>Note: list_empty on entry does not return true after this, the entry is in an undefined state. It is useful for RCU based lockfree traversal.</p>
|
|
<p>In particular, it means that we can not poison the forward pointers that may still be used for walking the list.</p>
|
|
<p>The caller must take whatever precautions are necessary (such as holding appropriate locks) to avoid racing with another list-mutation primitive, such as <a class="el" href="../../da/d00/linux__list_8h.html#a3495fef4758575d5f7524d1585043ff0">list_del_rcu()</a> or <a class="el" href="../../da/d00/linux__list_8h.html#a087d5457d659b54dafff3b729c867192">list_add_rcu()</a>, running on this same list. However, it is perfectly legal to run concurrently with the _rcu list-traversal primitives, such as <a class="el" href="../../da/d00/linux__list_8h.html#a8f594017c381faadd03ff91037ef3490">list_for_each_entry_rcu()</a>.</p>
|
|
<p>Note that the caller is not permitted to immediately free the newly deleted entry. Instead, either synchronize_kernel() or call_rcu() must be used to defer freeing until an RCU grace period has elapsed. </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a3495fef4758575d5f7524d1585043ff0_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_a3495fef4758575d5f7524d1585043ff0_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a3495fef4758575d5f7524d1585043ff0_cgraph" id="da/d00/linux__list_8h_a3495fef4758575d5f7524d1585043ff0_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a24b474717d65a296695e8b79b4adefda" title="__list_del" alt="" coords="141,5,219,35"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a6601e54d8f27ab290ee6819f7e2127b7"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static int list_empty </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>head</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_empty - tests whether a list is empty : the list to test. </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the caller graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a6601e54d8f27ab290ee6819f7e2127b7_icgraph.png" border="0" usemap="#da/d00/linux__list_8h_a6601e54d8f27ab290ee6819f7e2127b7_icgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a6601e54d8f27ab290ee6819f7e2127b7_icgraph" id="da/d00/linux__list_8h_a6601e54d8f27ab290ee6819f7e2127b7_icgraph">
|
|
<area shape="rect" id="node3" href="../../d6/dd7/libiptc_8c.html#a38af0a178e8c71ee018028ef407ed4ff" title="iptcc_find_chain_by\l_offset" alt="" coords="137,87,273,134"/><area shape="rect" id="node11" href="../../d6/dd7/libiptc_8c.html#a537585c708e6440a6b4c76b0b72ce68e" title="iptcc_find_label" alt="" coords="149,555,261,584"/><area shape="rect" id="node15" href="../../d6/dd7/libiptc_8c.html#a8aeefea6be57fb34e0113768d7eb43e3" title="TC_FIRST_RULE" alt="" coords="347,59,475,88"/><area shape="rect" id="node74" href="../../d6/dd7/libiptc_8c.html#a821ea52a8a8e750fdc4d671b63079eab" title="TC_FIRST_CHAIN" alt="" coords="137,608,273,637"/><area shape="rect" id="node77" href="../../da/d00/linux__list_8h.html#a2c4399cfbde5e5d5eddf2e13c97bd5d5" title="list_splice" alt="" coords="165,661,245,691"/><area shape="rect" id="node79" href="../../da/d00/linux__list_8h.html#a948b15519bb72e3d42f3e56975580d30" title="list_splice_init" alt="" coords="153,715,257,744"/><area shape="rect" id="node5" href="../../d6/dd7/libiptc_8c.html#a88b01c8f1765564781d4edc11a79ef02" title="parse_table" alt="" coords="367,5,455,35"/><area shape="rect" id="node7" href="../../d6/dd7/libiptc_8c.html#afd58eb6a5f1ed0495ffdf844c35864b7" title="TC_INIT" alt="" coords="607,59,679,88"/><area shape="rect" id="node9" href="../../d6/dd7/libiptc_8c.html#a62e972b7995de2ebbda29fcde37042da" title="TC_STRERROR" alt="" coords="997,544,1120,573"/><area shape="rect" id="node13" href="../../d6/dd7/libiptc_8c.html#aaff5540b4263e466f559e566df6fa378" title="TC_IS_CHAIN" alt="" coords="356,317,465,347"/><area shape="rect" id="node17" href="../../d6/dd7/libiptc_8c.html#a77212d99884f4e4586c7876cdc1a0589" title="TC_NUM_RULES" alt="" coords="345,371,476,400"/><area shape="rect" id="node19" href="../../d6/dd7/libiptc_8c.html#a8226780614e4deca0a5ce9e95137fa74" title="TC_GET_RULE" alt="" coords="352,424,469,453"/><area shape="rect" id="node21" href="../../d6/dd7/libiptc_8c.html#a4333074027c3913b1d64ea4173759658" title="TC_BUILTIN" alt="" coords="361,632,460,661"/><area shape="rect" id="node23" href="../../d6/dd7/libiptc_8c.html#a91e987eb3d50439f529daa293072abae" title="iptcc_map_target" alt="" coords="581,784,704,813"/><area shape="rect" id="node25" href="../../d6/dd7/libiptc_8c.html#aa9fc5848183e96cd3d8ccdbf7427750c" title="TC_INSERT_ENTRY" alt="" coords="793,731,943,760"/><area shape="rect" id="node28" href="../../d6/dd7/libiptc_8c.html#ade0a6c01e729491188f70078cef806a3" title="TC_REPLACE_ENTRY" alt="" coords="787,837,949,867"/><area shape="rect" id="node31" href="../../d6/dd7/libiptc_8c.html#a18298788b51418c936d6557e047951f9" title="TC_APPEND_ENTRY" alt="" coords="791,784,945,813"/><area shape="rect" id="node33" href="../../d6/dd7/libiptc_8c.html#aebe11c9e250fe9cc800e331dde41f6d5" title="TC_DELETE_ENTRY" alt="" coords="792,891,944,920"/><area shape="rect" id="node36" href="../../d6/dd7/libiptc_8c.html#a1d8401d070e298356e246974baa96a84" title="TC_DELETE_CHAIN" alt="" coords="568,575,717,604"/><area shape="rect" id="node39" href="../../d6/dd7/libiptc_8c.html#ab9d1b99e0007fc1e8cdd1ce401e1f93e" title="TC_RENAME_CHAIN" alt="" coords="565,651,720,680"/><area shape="rect" id="node41" href="../../d6/dd7/libiptc_8c.html#a2df96f156004ca01a55e776904426ec6" title="TC_GET_POLICY" alt="" coords="345,888,476,917"/><area shape="rect" id="node48" href="../../d6/dd7/libiptc_8c.html#a272decda58f7f0b063934de1480a7006" title="TC_DELETE_NUM_ENTRY" alt="" coords="548,1149,737,1179"/><area shape="rect" id="node51" href="../../d6/dd7/libiptc_8c.html#a9d8a4fce8561fd4d3ac9e3fa569c713c" title="TC_FLUSH_ENTRIES" alt="" coords="332,992,489,1021"/><area shape="rect" id="node53" href="../../d6/dd7/libiptc_8c.html#ad51cc689978226dc859e567d8169f594" title="TC_ZERO_ENTRIES" alt="" coords="336,1045,485,1075"/><area shape="rect" id="node55" href="../../d6/dd7/libiptc_8c.html#ababa17afed20e1cc5aeba658b7f97263" title="TC_READ_COUNTER" alt="" coords="789,177,947,207"/><area shape="rect" id="node58" href="../../d6/dd7/libiptc_8c.html#a04fcf00be186cb2a9987f41ef75ea17f" title="TC_ZERO_COUNTER" alt="" coords="564,216,721,245"/><area shape="rect" id="node61" href="../../d6/dd7/libiptc_8c.html#a4a9b984de637ba61cbfb7f33a0be6f5e" title="TC_SET_COUNTER" alt="" coords="337,112,484,141"/><area shape="rect" id="node63" href="../../d6/dd7/libiptc_8c.html#aa6d69e796c7f333c9b8906bf904cd85e" title="TC_CREATE_CHAIN" alt="" coords="792,349,944,379"/><area shape="rect" id="node66" href="../../d6/dd7/libiptc_8c.html#abf85ac3ce575666e4f4203845790f4ad" title="TC_GET_REFERENCES" alt="" coords="324,528,497,557"/><area shape="rect" id="node71" href="../../d6/dd7/libiptc_8c.html#a4a5a14d5e3d4141a7b471170f3c0817c" title="TC_SET_POLICY" alt="" coords="579,487,707,516"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="aba7d3f2ac5d41b9040e7341cab21591b"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static int list_empty_careful </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>head</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_empty_careful - tests whether a list is empty <em>and</em> checks that no other CPU might be in the process of still modifying either member</p>
|
|
<p>NOTE: using <a class="el" href="../../da/d00/linux__list_8h.html#aba7d3f2ac5d41b9040e7341cab21591b">list_empty_careful()</a> without synchronization can only be safe if the only activity that can happen to the list entry is <a class="el" href="../../da/d00/linux__list_8h.html#ae1cde0f50b85945cfff23be4fc1586f4">list_del_init()</a>. Eg. it cannot be used if another CPU could re-list_add() it.</p>
|
|
<p>: the list to test. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="aee8df43e41969c2272acfd6ed6e75d4c"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void list_move </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>list</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>head</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_move - delete from one list and add as another's head : the entry to move : the head that will precede our entry </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_aee8df43e41969c2272acfd6ed6e75d4c_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_aee8df43e41969c2272acfd6ed6e75d4c_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_aee8df43e41969c2272acfd6ed6e75d4c_cgraph" id="da/d00/linux__list_8h_aee8df43e41969c2272acfd6ed6e75d4c_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a24b474717d65a296695e8b79b4adefda" title="__list_del" alt="" coords="133,5,211,35"/><area shape="rect" id="node5" href="../../da/d00/linux__list_8h.html#a0373c4b3c8ce51a451a569ad978b32e1" title="list_add" alt="" coords="139,59,205,88"/><area shape="rect" id="node7" href="../../da/d00/linux__list_8h.html#a8a28f150a191624bf6923a48cdace7e3" title="__list_add" alt="" coords="260,59,340,88"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a1c5ac6a6b04a03f5782e818daacf96e9"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void list_move_tail </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>list</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>head</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_move_tail - delete from one list and add as another's tail : the entry to move : the head that will follow our entry </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a1c5ac6a6b04a03f5782e818daacf96e9_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_a1c5ac6a6b04a03f5782e818daacf96e9_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a1c5ac6a6b04a03f5782e818daacf96e9_cgraph" id="da/d00/linux__list_8h_a1c5ac6a6b04a03f5782e818daacf96e9_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a24b474717d65a296695e8b79b4adefda" title="__list_del" alt="" coords="164,5,241,35"/><area shape="rect" id="node5" href="../../da/d00/linux__list_8h.html#a588bec046f1e9797b33a5c5ab250f447" title="list_add_tail" alt="" coords="157,59,248,88"/><area shape="rect" id="node7" href="../../da/d00/linux__list_8h.html#a8a28f150a191624bf6923a48cdace7e3" title="__list_add" alt="" coords="297,59,377,88"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a2c4399cfbde5e5d5eddf2e13c97bd5d5"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void list_splice </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>list</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>head</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_splice - join two lists : the new list to add. : the place to add it in the first list. </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a2c4399cfbde5e5d5eddf2e13c97bd5d5_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_a2c4399cfbde5e5d5eddf2e13c97bd5d5_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a2c4399cfbde5e5d5eddf2e13c97bd5d5_cgraph" id="da/d00/linux__list_8h_a2c4399cfbde5e5d5eddf2e13c97bd5d5_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a6601e54d8f27ab290ee6819f7e2127b7" title="list_empty" alt="" coords="140,5,223,35"/><area shape="rect" id="node5" href="../../da/d00/linux__list_8h.html#a25979c80a2d71dd02ada121a46c71a59" title="__list_splice" alt="" coords="135,59,228,88"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a948b15519bb72e3d42f3e56975580d30"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void list_splice_init </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>list</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">struct <a class="el" href="../../d9/d93/structlist__head.html">list_head</a> * </td>
|
|
<td class="paramname"><em>head</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list_splice_init - join two lists and reinitialise the emptied list. : the new list to add. : the place to add it in the first list.</p>
|
|
<p>The list at is reinitialised </p>
|
|
|
|
<p><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="../../da/d00/linux__list_8h_a948b15519bb72e3d42f3e56975580d30_cgraph.png" border="0" usemap="#da/d00/linux__list_8h_a948b15519bb72e3d42f3e56975580d30_cgraph" alt=""/></div>
|
|
<map name="da/d00/linux__list_8h_a948b15519bb72e3d42f3e56975580d30_cgraph" id="da/d00/linux__list_8h_a948b15519bb72e3d42f3e56975580d30_cgraph">
|
|
<area shape="rect" id="node3" href="../../da/d00/linux__list_8h.html#a6601e54d8f27ab290ee6819f7e2127b7" title="list_empty" alt="" coords="164,5,247,35"/><area shape="rect" id="node5" href="../../da/d00/linux__list_8h.html#a25979c80a2d71dd02ada121a46c71a59" title="__list_splice" alt="" coords="159,59,252,88"/></map>
|
|
</div>
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="../../dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="../../dir_8bc5913a01a98b5812fe0bc47a8f5b87.html">libiptc</a></li><li class="navelem"><a class="el" href="../../da/d00/linux__list_8h.html">linux_list.h</a></li>
|
|
<li class="footer">Generated on Wed Feb 19 2014 14:19:13 for The Netsukuku Project by
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|