1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>wait_on_bit_lock</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Linux Device Drivers"><link rel="up" href="ch01s04.html" title="Wait queues and Wake events"><link rel="prev" href="API-wait-on-bit-action.html" title="wait_on_bit_action"><link rel="next" href="API-wait-on-bit-lock-io.html" title="wait_on_bit_lock_io"></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">wait_on_bit_lock</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-wait-on-bit-action.html">Prev</a>&#160;</td><th width="60%" align="center">Wait queues and Wake events</th><td width="20%" align="right">&#160;<a accesskey="n" href="API-wait-on-bit-lock-io.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-wait-on-bit-lock"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>wait_on_bit_lock &#8212; 
2     wait for a bit to be cleared, when wanting to set it
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">wait_on_bit_lock </b>(</code></td><td>void * <var class="pdparam">word</var>, </td></tr><tr><td>&#160;</td><td>int <var class="pdparam">bit</var>, </td></tr><tr><td>&#160;</td><td>unsigned <var class="pdparam">mode</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer">&#160;</div></div></div><div class="refsect1"><a name="idp1107381484"></a><h2>Arguments</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>word</code></em></span></dt><dd><p>
4     the word being waited on, a kernel virtual address
5    </p></dd><dt><span class="term"><em class="parameter"><code>bit</code></em></span></dt><dd><p>
6     the bit of the word being waited on
7    </p></dd><dt><span class="term"><em class="parameter"><code>mode</code></em></span></dt><dd><p>
8     the task state to sleep in
9    </p></dd></dl></div></div><div class="refsect1"><a name="idp1107385092"></a><h2>Description</h2><p>
10   There is a standard hashed waitqueue table for generic use. This
11   is the part of the hashtable's accessor API that waits on a bit
12   when one intends to set it, for instance, trying to lock bitflags.
13   For instance, if one were to have waiters trying to set bitflag
14   and waiting for it to clear before setting it, one would call
15   <code class="function">wait_on_bit</code> in threads waiting to be able to set the bit.
16   One uses <code class="function">wait_on_bit_lock</code> where one is waiting for the bit to
17   clear with the intention of setting it, and when done, clearing it.
18   </p><p>
19
20   Returns zero if the bit was (eventually) found to be clear and was
21   set.  Returns non-zero if a signal was delivered to the process and
22   the <em class="parameter"><code>mode</code></em> allows that signal to wake the process.
23</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-wait-on-bit-action.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="ch01s04.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="API-wait-on-bit-lock-io.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">wait_on_bit_action</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">wait_on_bit_lock_io</span></td></tr></table></div></body></html>
24