Reduce code duplication in atfork
[kopensolaris-gnu/glibc.git] / nptl / sysdeps / unix / sysv / linux / unregister-atfork.c
index bc5b753..d9a7436 100644 (file)
@@ -21,6 +21,7 @@
 #include <stdlib.h>
 #include <fork.h>
 #include <atomic.h>
+#include <pthreadP.h>
 
 
 void
@@ -54,7 +55,7 @@ __unregister_atfork (dso_handle)
      that there couldn't have been another thread deleting something.
      The __unregister_atfork function is only called from the
      dlclose() code which itself serializes the operations.  */
-  lll_lock (__fork_lock);
+  lll_lock (__fork_lock, LLL_PRIVATE);
 
   /* We have to create a new list with all the entries we don't remove.  */
   struct deleted_handler
@@ -89,7 +90,7 @@ __unregister_atfork (dso_handle)
   while (runp != NULL);
 
   /* Release the lock.  */
-  lll_unlock (__fork_lock);
+  lll_unlock (__fork_lock, LLL_PRIVATE);
 
   /* Walk the list of all entries which have to be deleted.  */
   while (deleted != NULL)
@@ -104,7 +105,10 @@ __unregister_atfork (dso_handle)
       atomic_decrement (&deleted->handler->refcntr);
       unsigned int val;
       while ((val = deleted->handler->refcntr) != 0)
+        ; // TODO
+#if 0 // TODO
        lll_futex_wait (&deleted->handler->refcntr, val, LLL_PRIVATE);
+#endif
 
       deleted = deleted->next;
     }