From: cristy Date: Sun, 26 Jan 2014 12:52:00 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~2785 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1d9b056a0a4bd61a55e88db18ee5d9d34772c8a6;p=imagemagick --- diff --git a/MagickCore/semaphore-private.h b/MagickCore/semaphore-private.h index fe3ec898b..f3fe50418 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_OPENMP_SUPPORT) -static omp_lock_t - semaphore_mutex; -#elif defined(MAGICKCORE_THREAD_SUPPORT) +#if 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,10 +49,12 @@ static inline void DestroyMagickMutex(void) { if (active_mutex != MagickFalse) { -#if defined(MAGICKCORE_OPENMP_SUPPORT) - omp_destroy_lock(&semaphore_mutex); +#if 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; @@ -62,10 +64,12 @@ static inline void InitializeMagickMutex(void) { if (active_mutex == MagickFalse) { -#if defined(MAGICKCORE_OPENMP_SUPPORT) - omp_init_lock(&semaphore_mutex); +#if 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; @@ -73,9 +77,7 @@ static inline void InitializeMagickMutex(void) static inline void LockMagickMutex(void) { -#if defined(MAGICKCORE_OPENMP_SUPPORT) - omp_set_lock(&semaphore_mutex); -#elif defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_THREAD_SUPPORT) { int status; @@ -90,14 +92,14 @@ static inline void LockMagickMutex(void) #elif defined(MAGICKCORE_HAVE_WINTHREADS) while (InterlockedCompareExchange(&semaphore_mutex,1L,0L) != 0) Sleep(10); +#if defined(MAGICKCORE_OPENMP_SUPPORT) + omp_set_lock(&semaphore_mutex); #endif } static inline void UnlockMagickMutex(void) { -#if defined(MAGICKCORE_OPENMP_SUPPORT) - omp_unset_lock(&semaphore_mutex); -#elif defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_THREAD_SUPPORT) { int status; @@ -111,6 +113,8 @@ 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 489b7f257..718b0eb99 100644 --- a/MagickCore/semaphore.c +++ b/MagickCore/semaphore.c @@ -203,9 +203,7 @@ MagickExport SemaphoreInfo *AllocateSemaphoreInfo(void) /* Initialize the semaphore. */ -#if defined(MAGICKCORE_OPENMP_SUPPORT) - omp_init_lock((omp_lock_t *) &semaphore_info->mutex); -#elif defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_THREAD_SUPPORT) { int status; @@ -259,6 +257,8 @@ 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,9 +295,7 @@ MagickExport void DestroySemaphoreInfo(SemaphoreInfo **semaphore_info) assert((*semaphore_info)->signature == MagickSignature); InitializeMagickMutex(); LockMagickMutex(); -#if defined(MAGICKCORE_OPENMP_SUPPORT) - omp_destroy_lock((omp_lock_t *) &(*semaphore_info)->mutex); -#elif defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_THREAD_SUPPORT) { int status; @@ -312,6 +310,8 @@ 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,9 +344,7 @@ MagickExport void LockSemaphoreInfo(SemaphoreInfo *semaphore_info) { assert(semaphore_info != (SemaphoreInfo *) NULL); assert(semaphore_info->signature == MagickSignature); -#if defined(MAGICKCORE_OPENMP_SUPPORT) - omp_set_lock((omp_lock_t *) &semaphore_info->mutex); -#elif defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_THREAD_SUPPORT) { int status; @@ -361,6 +359,8 @@ 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) && @@ -487,9 +487,7 @@ MagickExport void UnlockSemaphoreInfo(SemaphoreInfo *semaphore_info) } semaphore_info->reference_count--; #endif -#if defined(MAGICKCORE_OPENMP_SUPPORT) - omp_unset_lock((omp_lock_t *) &semaphore_info->mutex); -#elif defined(MAGICKCORE_THREAD_SUPPORT) +#if defined(MAGICKCORE_THREAD_SUPPORT) { int status; @@ -504,5 +502,7 @@ 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 }