[RTEMS] Fix libgomp for nthreads == 1
libgomp/ * config/rtems/pool.h (gomp_get_thread_pool): Return proper thread pool in case nthreads == 1. From-SVN: r243179
This commit is contained in:
parent
310a7f9699
commit
d313d52cd5
@ -1,3 +1,8 @@
|
||||
2016-12-02 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||
|
||||
* config/rtems/pool.h (gomp_get_thread_pool): Return proper
|
||||
thread pool in case nthreads == 1.
|
||||
|
||||
2016-11-30 Alexander Monakov <amonakov@ispras.ru>
|
||||
|
||||
* config/nvptx/env.c: Delete.
|
||||
|
@ -87,28 +87,24 @@ static inline struct gomp_thread_pool *
|
||||
gomp_get_thread_pool (struct gomp_thread *thr, unsigned nthreads)
|
||||
{
|
||||
struct gomp_thread_pool *pool;
|
||||
struct gomp_thread_pool_reservoir *res;
|
||||
|
||||
if (__builtin_expect (thr->thread_pool == NULL, 0))
|
||||
pthread_setspecific (gomp_thread_destructor, thr);
|
||||
|
||||
if (nthreads != 1)
|
||||
res = gomp_get_thread_pool_reservoir ();
|
||||
if (res != NULL)
|
||||
{
|
||||
struct gomp_thread_pool_reservoir *res =
|
||||
gomp_get_thread_pool_reservoir ();
|
||||
if (res != NULL)
|
||||
{
|
||||
gomp_sem_wait (&res->available);
|
||||
gomp_mutex_lock (&res->lock);
|
||||
pool = res->pools[--res->index];
|
||||
gomp_mutex_unlock (&res->lock);
|
||||
pool->threads_busy = nthreads;
|
||||
thr->thread_pool = pool;
|
||||
}
|
||||
else
|
||||
pool = gomp_get_own_thread_pool (thr, nthreads);
|
||||
gomp_sem_wait (&res->available);
|
||||
gomp_mutex_lock (&res->lock);
|
||||
pool = res->pools[--res->index];
|
||||
gomp_mutex_unlock (&res->lock);
|
||||
pool->threads_busy = nthreads;
|
||||
thr->thread_pool = pool;
|
||||
}
|
||||
else
|
||||
pool = NULL;
|
||||
pool = gomp_get_own_thread_pool (thr, nthreads);
|
||||
|
||||
return pool;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user