re PR boehm-gc/34544 (pthread_default_stacksize_np failed.)

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: r163005
This commit is contained in:
John David Anglin 2010-08-08 15:11:20 +00:00 committed by John David Anglin
parent f7a86e8eb9
commit 2c02e37e62
3 changed files with 15 additions and 34 deletions

View File

@ -1,3 +1,12 @@
2010-08-08 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-06 Eric Botcazou <ebotcazou@adacore.com>
PR target/44942

View File

@ -263,32 +263,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);
}

View File

@ -197,32 +197,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);
}