title: Indirection from func() to __func()
body: <p>Quoting a code snippet :</p>
  
  <pre><code>/**
   * list_add - add a new entry
  
   * @new: new entry to be added
   * @head: list head to add it after
   *
   * Insert a new entry after the specified head.
   * This is good for implementing stacks.
   */
  
  static inline void list_add(struct list_head *new, struct list_head *head)
  {
      __list_add(new, head, head-&gt;next);
  }
  </code></pre>
  
  <p>I have seen similar code in several different programs, especially those manipulating data structures. What is the usual intention in adding this extra level of indirection - why can't the code inside __list_add be put inside list_add ?</p>