1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>idr_for_each</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="The Linux Kernel API"><link rel="up" href="idr.html" title="idr/ida Functions"><link rel="prev" href="API-idr-destroy.html" title="idr_destroy"><link rel="next" href="API-idr-get-next.html" title="idr_get_next"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="phrase">idr_for_each</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-idr-destroy.html">Prev</a>&#160;</td><th width="60%" align="center">idr/ida Functions</th><td width="20%" align="right">&#160;<a accesskey="n" href="API-idr-get-next.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-idr-for-each"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>idr_for_each &#8212; 
2     iterate through all stored pointers
3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">idr_for_each </b>(</code></td><td>struct idr * <var class="pdparam">idp</var>, </td></tr><tr><td>&#160;</td><td>int (*<var class="pdparam">fn</var>)
4     <code>(</code>int id, void *p, void *data<code>)</code>, </td></tr><tr><td>&#160;</td><td>void * <var class="pdparam">data</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer">&#160;</div></div></div><div class="refsect1"><a name="idp1123626132"></a><h2>Arguments</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>idp</code></em></span></dt><dd><p>
5     idr handle
6    </p></dd><dt><span class="term"><em class="parameter"><code>fn</code></em></span></dt><dd><p>
7     function to be called for each pointer
8    </p></dd><dt><span class="term"><em class="parameter"><code>data</code></em></span></dt><dd><p>
9     data passed back to callback function
10    </p></dd></dl></div></div><div class="refsect1"><a name="idp1123629788"></a><h2>Description</h2><p>
11   Iterate over the pointers registered with the given idr.  The
12   callback function will be called for each pointer currently
13   registered, passing the id, the pointer and the data pointer passed
14   to this function.  It is not safe to modify the idr tree while in
15   the callback, so functions such as idr_get_new and idr_remove are
16   not allowed.
17   </p><p>
18
19   We check the return of <em class="parameter"><code>fn</code></em> each time. If it returns anything other
20   than <code class="constant">0</code>, we break out and return that value.
21   </p><p>
22
23   The caller must serialize <code class="function">idr_for_each</code> vs <code class="function">idr_get_new</code> and <code class="function">idr_remove</code>.
24</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-idr-destroy.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="idr.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="API-idr-get-next.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">idr_destroy</span>&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;<span class="phrase">idr_get_next</span></td></tr></table></div></body></html>
25