From 6ad48d88328331f9bbae60cc483218d7ef729476 Mon Sep 17 00:00:00 2001 From: cristy Date: Tue, 21 Jan 2014 01:57:10 +0000 Subject: [PATCH] --- MagickCore/semaphore-private.h | 13 ++++++++++--- MagickCore/semaphore.c | 16 ++++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/MagickCore/semaphore-private.h b/MagickCore/semaphore-private.h index 5daa2153b..71558f30c 100644 --- a/MagickCore/semaphore-private.h +++ b/MagickCore/semaphore-private.h @@ -28,7 +28,10 @@ extern MagickPrivate MagickBooleanType extern MagickPrivate void SemaphoreComponentTerminus(void); -#if defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_OPENMP_SUPPORT) +static omp_lock_t + semaphore_mutex; +#elif defined(MAGICKCORE_THREAD_SUPPORT) static pthread_mutex_t semaphore_mutex = PTHREAD_MUTEX_INITIALIZER; #elif defined(MAGICKCORE_HAVE_WINTHREADS) @@ -41,7 +44,9 @@ static ssize_t static inline void LockMagickMutex(void) { -#if defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_OPENMP_SUPPORT) + omp_set_lock(&semaphore_mutex); +#elif defined(MAGICKCORE_THREAD_SUPPORT) { int status; @@ -61,7 +66,9 @@ static inline void LockMagickMutex(void) static inline void UnlockMagickMutex(void) { -#if defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_OPENMP_SUPPORT) + omp_unset_lock(&semaphore_mutex); +#elif defined(MAGICKCORE_THREAD_SUPPORT) { int status; diff --git a/MagickCore/semaphore.c b/MagickCore/semaphore.c index 02968ad80..c25d294aa 100644 --- a/MagickCore/semaphore.c +++ b/MagickCore/semaphore.c @@ -202,7 +202,9 @@ MagickExport SemaphoreInfo *AllocateSemaphoreInfo(void) /* Initialize the semaphore. */ -#if defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_OPENMP_SUPPORT) + omp_init_lock((omp_lock_t *) &semaphore_info->mutex); +#elif defined(MAGICKCORE_THREAD_SUPPORT) { int status; @@ -291,7 +293,9 @@ MagickExport void DestroySemaphoreInfo(SemaphoreInfo **semaphore_info) assert((*semaphore_info) != (SemaphoreInfo *) NULL); assert((*semaphore_info)->signature == MagickSignature); LockMagickMutex(); -#if defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_OPENMP_SUPPORT) + omp_destroy_lock((omp_lock_t *) &(*semaphore_info)->mutex); +#elif defined(MAGICKCORE_THREAD_SUPPORT) { int status; @@ -338,7 +342,9 @@ MagickExport void LockSemaphoreInfo(SemaphoreInfo *semaphore_info) { assert(semaphore_info != (SemaphoreInfo *) NULL); assert(semaphore_info->signature == MagickSignature); -#if defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_OPENMP_SUPPORT) + omp_set_lock((omp_lock_t *) &semaphore_info->mutex); +#elif defined(MAGICKCORE_THREAD_SUPPORT) { int status; @@ -479,7 +485,9 @@ MagickExport void UnlockSemaphoreInfo(SemaphoreInfo *semaphore_info) } semaphore_info->reference_count--; #endif -#if defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_OPENMP_SUPPORT) + omp_unset_lock((omp_lock_t *) &semaphore_info->mutex); +#elif defined(MAGICKCORE_THREAD_SUPPORT) { int status; -- 2.50.1