]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR boehm-gc/34544 (pthread_default_stacksize_np failed.)
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Tue, 10 Aug 2010 15:23:07 +0000 (15:23 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Tue, 10 Aug 2010 15:23:07 +0000 (15:23 +0000)
PR boehm-gc/34544
* gthr-posix.h (__gthread_start): Delete.
(__gthread_active_init): Use pthread_default_stacksize_np instead of
pthread_create to determine if hpux pthreads are active.
* gthr-posix95.h (__gthread_start): Delete.
(__gthread_active_init): Likewise use pthread_default_stacksize_np.

From-SVN: r163071

gcc/ChangeLog
gcc/gthr-posix.h
gcc/gthr-posix95.h

index c412dbf14f274d67f01dd82a9873323b18caf37e..48cb95ea00a7c47af8d171d033c1e49c83ead4fe 100644 (file)
@@ -1,3 +1,12 @@
+2010-08-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR boehm-gc/34544
+       * gthr-posix.h (__gthread_start): Delete.
+       (__gthread_active_init): Use pthread_default_stacksize_np instead of
+       pthread_create to determine if hpux pthreads are active.
+       * gthr-posix95.h (__gthread_start): Delete.
+       (__gthread_active_init): Likewise use pthread_default_stacksize_np.
+
 2010-08-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        * config/pa/pa.c (override_options): Fix warning.
index a90dc11e6394b6af52c78d8c7d2f5361141ab2b8..3bf4f06c4908ea8d7df470e9c0ce536188771f56 100644 (file)
@@ -237,32 +237,18 @@ __gthread_active_p (void)
 
 static volatile int __gthread_active = -1;
 
-static void *
-__gthread_start (void *arg __attribute__((unused)))
-{
-  return NULL;
-}
-
 static void __gthread_active_init (void) __attribute__((noinline));
 static void
 __gthread_active_init (void)
 {
   static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
-  pthread_t t;
-  pthread_attr_t a;
-  int result;
+  size_t __s;
 
   __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
   if (__gthread_active < 0)
     {
-      __gthrw_(pthread_attr_init) (&a);
-      __gthrw_(pthread_attr_setdetachstate) (&a, PTHREAD_CREATE_DETACHED);
-      result = __gthrw_(pthread_create) (&t, &a, __gthread_start, NULL);
-      if (result != ENOSYS)
-       __gthread_active = 1;
-      else
-       __gthread_active = 0;
-      __gthrw_(pthread_attr_destroy) (&a);
+      pthread_default_stacksize_np (0, &__s);
+      __gthread_active = __s ? 1 : 0;
     }
   __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
 }
index 9d6939eaf9167863bf2e522f41734f9772ee00a2..68712eba352654c8760fa6fe632597ab72e0d822 100644 (file)
@@ -200,32 +200,18 @@ __gthread_active_p (void)
 
 static volatile int __gthread_active = -1;
 
-static void *
-__gthread_start (void *arg __attribute__((unused)))
-{
-  return NULL;
-}
-
 static void __gthread_active_init (void) __attribute__((noinline));
 static void
 __gthread_active_init (void)
 {
   static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
-  pthread_t t;
-  pthread_attr_t a;
-  int result;
+  size_t __s;
 
   __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
   if (__gthread_active < 0)
     {
-      __gthrw_(pthread_attr_init) (&a);
-      __gthrw_(pthread_attr_setdetachstate) (&a, PTHREAD_CREATE_DETACHED);
-      result = __gthrw_(pthread_create) (&t, &a, __gthread_start, NULL);
-      if (result != ENOSYS)
-       __gthread_active = 1;
-      else
-       __gthread_active = 0;
-      __gthrw_(pthread_attr_destroy) (&a);
+      pthread_default_stacksize_np (0, &__s);
+      __gthread_active = __s ? 1 : 0;
     }
   __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
 }