Allow overwriting code to start helper thread.
authordrepper <drepper>
Thu, 3 Aug 2006 08:01:53 +0000 (08:01 +0000)
committerdrepper <drepper>
Thu, 3 Aug 2006 08:01:53 +0000 (08:01 +0000)
resolv/gai_misc.c

index b3334f3..2eec0f5 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
 
 #include <stdlib.h>
 #include <sys/time.h>
 
-#include "gai_misc.h"
+#include <gai_misc.h>
 
 
 
+#ifndef gai_create_helper_thread
+# define gai_create_helper_thread __gai_create_helper_thread
+
+extern inline int
+__gai_create_helper_thread (pthread_t *threadp, void *(*tf) (void *),
+                           void *arg)
+{
+  pthread_attr_t attr;
+
+  /* Make sure the thread is created detached.  */
+  pthread_attr_init (&attr);
+  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+
+  int ret = pthread_create (threadp, &attr, tf, arg);
+
+  (void) pthread_attr_destroy (&attr);
+  return ret;
+}
+#endif
+
+
 /* Pool of request list entries.  */
 static struct requestlist **pool;
 
@@ -229,16 +250,11 @@ __gai_enqueue_request (struct gaicb *gaicbp)
   if (nthreads < optim.gai_threads && idle_thread_count == 0)
     {
       pthread_t thid;
-      pthread_attr_t attr;
 
       newp->running = 1;
 
-      /* Make sure the thread is created detached.  */
-      pthread_attr_init (&attr);
-      pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
-
       /* Now try to start a thread.  */
-      if (pthread_create (&thid, &attr, handle_requests, newp) == 0)
+      if (gai_create_helper_thread (&thid, handle_requests, newp) == 0)
        /* We managed to enqueue the request.  All errors which can
           happen now can be recognized by calls to `gai_error'.  */
        ++nthreads;