From: cristy Date: Sun, 26 Jan 2014 13:19:55 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~2783 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4378fb125de49bab3818d8dcae2d1f2651090534;p=imagemagick --- diff --git a/MagickCore/semaphore-private.h b/MagickCore/semaphore-private.h index 91ffb962c..82bbdd64b 100644 --- a/MagickCore/semaphore-private.h +++ b/MagickCore/semaphore-private.h @@ -28,15 +28,15 @@ 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) static LONG semaphore_mutex = 0; -#elif defined(MAGICKCORE_OPENMP_SUPPORT) -static omp_lock_t - semaphore_mutex; #else static ssize_t semaphore_mutex = 0; @@ -49,12 +49,12 @@ static inline void DestroyMagickMutex(void) { if (active_mutex != MagickFalse) { -#if defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_OPENMP_SUPPORT) + omp_destroy_lock(&semaphore_mutex); +#elif defined(MAGICKCORE_THREAD_SUPPORT) ; #elif defined(MAGICKCORE_HAVE_WINTHREADS) DeleteCriticalSection(&semaphore_mutex); -#elif defined(MAGICKCORE_OPENMP_SUPPORT) - omp_destroy_lock(&semaphore_mutex); #endif } active_mutex=MagickFalse; @@ -64,12 +64,12 @@ static inline void InitializeMagickMutex(void) { if (active_mutex == MagickFalse) { -#if defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_OPENMP_SUPPORT) + omp_init_lock(&semaphore_mutex); +#elif defined(MAGICKCORE_THREAD_SUPPORT) ; #elif defined(MAGICKCORE_HAVE_WINTHREADS) InitializeCriticalSection(&semaphore_mutex); -#elif defined(MAGICKCORE_OPENMP_SUPPORT) - omp_init_lock(&semaphore_mutex); #endif } active_mutex=MagickTrue; @@ -77,7 +77,9 @@ static inline void InitializeMagickMutex(void) 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; @@ -92,14 +94,14 @@ static inline void LockMagickMutex(void) #elif defined(MAGICKCORE_HAVE_WINTHREADS) while (InterlockedCompareExchange(&semaphore_mutex,1L,0L) != 0) Sleep(10); -#elif defined(MAGICKCORE_OPENMP_SUPPORT) - omp_set_lock(&semaphore_mutex); #endif } 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; @@ -113,8 +115,6 @@ static inline void UnlockMagickMutex(void) } #elif defined(MAGICKCORE_HAVE_WINTHREADS) InterlockedExchange(&semaphore_mutex,0L); -#elif defined(MAGICKCORE_OPENMP_SUPPORT) - omp_unset_lock(&semaphore_mutex); #endif } diff --git a/MagickCore/semaphore.c b/MagickCore/semaphore.c index 718b0eb99..b6394332f 100644 --- a/MagickCore/semaphore.c +++ b/MagickCore/semaphore.c @@ -203,7 +203,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; @@ -257,8 +259,6 @@ MagickExport SemaphoreInfo *AllocateSemaphoreInfo(void) _exit(1); } } -#elif defined(MAGICKCORE_OPENMP_SUPPORT) - omp_init_lock((omp_lock_t *) &semaphore_info->mutex); #endif semaphore_info->id=GetMagickThreadId(); semaphore_info->reference_count=0; @@ -295,7 +295,9 @@ MagickExport void DestroySemaphoreInfo(SemaphoreInfo **semaphore_info) assert((*semaphore_info)->signature == MagickSignature); InitializeMagickMutex(); 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; @@ -310,8 +312,6 @@ MagickExport void DestroySemaphoreInfo(SemaphoreInfo **semaphore_info) } #elif defined(MAGICKCORE_HAVE_WINTHREADS) DeleteCriticalSection(&(*semaphore_info)->mutex); -#elif defined(MAGICKCORE_OPENMP_SUPPORT) - omp_destroy_lock((omp_lock_t *) &(*semaphore_info)->mutex); #endif (*semaphore_info)->signature=(~MagickSignature); *semaphore_info=(SemaphoreInfo *) RelinquishSemaphoreMemory(*semaphore_info); @@ -344,7 +344,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; @@ -359,8 +361,6 @@ MagickExport void LockSemaphoreInfo(SemaphoreInfo *semaphore_info) } #elif defined(MAGICKCORE_HAVE_WINTHREADS) EnterCriticalSection(&semaphore_info->mutex); -#elif defined(MAGICKCORE_OPENMP_SUPPORT) - omp_set_lock((omp_lock_t *) &semaphore_info->mutex); #endif #if defined(MAGICKCORE_DEBUG) if ((semaphore_info->reference_count > 0) && @@ -476,7 +476,9 @@ MagickExport void UnlockSemaphoreInfo(SemaphoreInfo *semaphore_info) { assert(semaphore_info != (SemaphoreInfo *) NULL); assert(semaphore_info->signature == MagickSignature); -#if defined(MAGICKCORE_DEBUG) +#if defined(MAGICKCORE_OPENMP_SUPPORT) + omp_unset_lock((omp_lock_t *) &semaphore_info->mutex); +#elif defined(MAGICKCORE_DEBUG) assert(IsMagickThreadEqual(semaphore_info->id) != MagickFalse); if (semaphore_info->reference_count == 0) { @@ -502,7 +504,5 @@ MagickExport void UnlockSemaphoreInfo(SemaphoreInfo *semaphore_info) } #elif defined(MAGICKCORE_HAVE_WINTHREADS) LeaveCriticalSection(&semaphore_info->mutex); -#elif defined(MAGICKCORE_OPENMP_SUPPORT) - omp_unset_lock((omp_lock_t *) &semaphore_info->mutex); #endif }