Provided by: linux-doc-2.6.15_2.6.15-23.39_all bug


       list_del_rcu - deletes entry from list without re-initialization


       void list_del_rcu  (struct list_head * entry);


       entry  the element to delete from the list.


       list_empty on entry does not return true after this, the entry is in an
       undefined state. It is useful for RCU based lockfree traversal.

       In particular, it means that we can not  poison  the  forward  pointers
       that may still be used for walking the list.

       The  caller  must  take  whatever  precautions  are  necessary (such as
       holding appropriate locks) to avoid racing with  another  list-mutation
       primitive,  such  as list_del_rcu or list_add_rcu, running on this same
       list. However, it is perfectly legal to run concurrently with the  _rcu
       list-traversal primitives, such as list_for_each_entry_rcu.

       Note  that  the  caller  is not permitted to immediately free the newly
       deleted entry. Instead, either synchronize_rcu or call_rcu must be used
       to defer freeing until an RCU grace period has elapsed.