]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sun, 26 Jan 2014 13:19:55 +0000 (13:19 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sun, 26 Jan 2014 13:19:55 +0000 (13:19 +0000)
MagickCore/semaphore-private.h
MagickCore/semaphore.c

index 91ffb962c8e7d3db8ae810b0ad41b6d905dabd50..82bbdd64b83797fe6e701d5b8b64dc686d73643e 100644 (file)
@@ -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
 }
 
index 718b0eb9908705e280a2b76962f1706257255f95..b6394332f0aa206ff09dc4eba242a82cf45118b2 100644 (file)
@@ -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
 }