title: what does "static int function(...) __acquires(..) __releases(...){" mean?
body: <p>I recently got a snippet of code in Linux kernel:</p>
  <pre><code>static int
  fb_mmap(struct file *file, struct vm_area_struct * vma)
  __acquires(&amp;info-&gt;lock)
  __releases(&amp;info-&gt;lock)
  {
  ...
  }
  </code></pre>
  <p>What confused me is the two __functions following <code>static int fb_mmap()</code> right before <code>&quot;{&quot;</code>,</p>
  <p><code>a).</code>What is the purpose of the two __funtions?</p>
  <p><code>b).</code>Why in that position?</p>
  <p><code>c).</code>Why do they have the prefix <code>&quot;__&quot;</code>?</p>
  <p><code>d).</code>Are there other examples similar to this?</p>