title: Linux: wake_up and sleep_on functions
body: <p>I am trying to learn how to program loadable kernel modules for linux. I was wondering if anyone could tell me what the functions <code>sleep_on</code> and <code>wake_up</code> do?</p>
  
  <p>In examples I am looking at <code>&amp;WaitQ</code> is always passed into them and </p>
  
  <pre><code>static DECLARE_WAIT_QUEUE_HEAD(WaitQ);
  </code></pre>
  
  <p>is declared at the top of the module.</p>