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