+2010-08-14 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ Revert:
+ 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-11 Richard Guenther <rguenther@suse.de>
PR c/44555
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;
- size_t __s;
+ pthread_t t;
+ pthread_attr_t a;
+ int result;
__gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
if (__gthread_active < 0)
{
- pthread_default_stacksize_np (0, &__s);
- __gthread_active = __s ? 1 : 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);
}
__gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
}
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;
- size_t __s;
+ pthread_t t;
+ pthread_attr_t a;
+ int result;
__gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
if (__gthread_active < 0)
{
- pthread_default_stacksize_np (0, &__s);
- __gthread_active = __s ? 1 : 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);
}
__gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
}