1<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>drm_vma_offset_lookup_locked</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Linux GPU Driver Developer's Guide"><link rel="up" href="drm-memory-management.html#id-1.3.4.6.7" title="VMA Offset Manager"><link rel="prev" href="API-drm-vma-offset-manager-destroy.html" title="drm_vma_offset_manager_destroy"><link rel="next" href="API-drm-vma-offset-add.html" title="drm_vma_offset_add"></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">drm_vma_offset_lookup_locked</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-drm-vma-offset-manager-destroy.html">Prev</a> </td><th width="60%" align="center">VMA Offset Manager</th><td width="20%" align="right"> <a accesskey="n" href="API-drm-vma-offset-add.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-drm-vma-offset-lookup-locked"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>drm_vma_offset_lookup_locked — 
2     Find node in offset space
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">struct drm_vma_offset_node * <b class="fsfunc">drm_vma_offset_lookup_locked </b>(</code></td><td>struct drm_vma_offset_manager * <var class="pdparam">mgr</var>, </td></tr><tr><td> </td><td>unsigned long <var class="pdparam">start</var>, </td></tr><tr><td> </td><td>unsigned long <var class="pdparam">pages</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="id-1.3.4.6.7.10.5"></a><h2>Arguments</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>mgr</code></em></span></dt><dd><p>
4     Manager object
5    </p></dd><dt><span class="term"><em class="parameter"><code>start</code></em></span></dt><dd><p>
6     Start address for object (page-based)
7    </p></dd><dt><span class="term"><em class="parameter"><code>pages</code></em></span></dt><dd><p>
8     Size of object (page-based)
9    </p></dd></dl></div></div><div class="refsect1"><a name="id-1.3.4.6.7.10.6"></a><h2>Description</h2><p>
10   Find a node given a start address and object size. This returns the _best_
11   match for the given node. That is, <em class="parameter"><code>start</code></em> may point somewhere into a valid
12   region and the given node will be returned, as long as the node spans the
13   whole requested area (given the size in number of pages as <em class="parameter"><code>pages</code></em>).
14   </p><p>
15
16   Note that before lookup the vma offset manager lookup lock must be acquired
17   with <code class="function"><a class="link" href="API-drm-vma-offset-lock-lookup.html" title="drm_vma_offset_lock_lookup">drm_vma_offset_lock_lookup</a></code>. See there for an example. This can then be
18   used to implement weakly referenced lookups using <code class="function">kref_get_unless_zero</code>.
19</p></div><div class="refsect1"><a name="id-1.3.4.6.7.10.7"></a><h2>Example</h2><div class="informalexample"><pre class="programlisting">
20       drm_vma_offset_lock_lookup(mgr);
21       node = drm_vma_offset_lookup_locked(mgr);
22       if (node)
23           kref_get_unless_zero(container_of(node, sth, entr));
24       drm_vma_offset_unlock_lookup(mgr);
25</pre></div></div><div class="refsect1"><a name="id-1.3.4.6.7.10.8"></a><h2>RETURNS</h2><p>
26   Returns NULL if no suitable node can be found. Otherwise, the best match
27   is returned. It's the caller's responsibility to make sure the node doesn't
28   get destroyed before the caller can access it.
29</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-drm-vma-offset-manager-destroy.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="drm-memory-management.html#id-1.3.4.6.7">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="API-drm-vma-offset-add.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">drm_vma_offset_manager_destroy</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span class="phrase">drm_vma_offset_add</span></td></tr></table></div></body></html>
30