title: list_entry in Linux
body: <pre><code>user/include/linux/list.h
  </code></pre>
  
  <p>this declaration:</p>
  
  <pre><code>#define list_entry(ptr, type, member) \
  ((type *)((char *)(ptr) – (unsigned long)(&amp;((type *)0)-&gt;member)))
  </code></pre>
  
  <p>can somebody please explain what is this and how does it work, thanks in advance</p>
  
  <p>P.S. please simplify your answer as much as possible, I know about threads, processes in Linux, now I'm exploring possibilities and I'm a little bit stuck with this one.</p>