]> source.dussan.org Git - rspamd.git/commitdiff
Use universal mutex type to avoid glib collisions.
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Wed, 19 Sep 2012 13:15:30 +0000 (17:15 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Wed, 19 Sep 2012 13:15:30 +0000 (17:15 +0400)
src/mem_pool.c
src/mem_pool.h

index dc57e3b7921e06b4ed032578bf48bd383fb00d19..6038ff604356cedb1d090f0b6c4d760f8ac45be0 100644 (file)
@@ -26,6 +26,7 @@
 #include "mem_pool.h"
 #include "fstring.h"
 #include "logger.h"
+#include "util.h"
 #include "main.h"
 
 /* Sleep time for spin lock in nanoseconds */
@@ -41,13 +42,8 @@ pthread_mutex_t                 stat_mtx = PTHREAD_MUTEX_INITIALIZER;
 #   define STAT_UNLOCK() do {} while (0)
 #endif
 
-#if ((GLIB_MAJOR_VERSION == 2) && (GLIB_MINOR_VERSION <= 30))
-#      define POOL_MTX_LOCK()  do { g_static_mutex_lock (&pool->mtx); } while (0)
-#      define POOL_MTX_UNLOCK()        do { g_static_mutex_unlock (&pool->mtx); } while (0)
-#else
-#      define POOL_MTX_LOCK()  do { g_mutex_lock (&pool->mtx); } while (0)
-#      define POOL_MTX_UNLOCK()        do { g_mutex_unlock (&pool->mtx); } while (0)
-#endif
+#define POOL_MTX_LOCK()        do { rspamd_mutex_lock (pool->mtx); } while (0)
+#define POOL_MTX_UNLOCK()      do { rspamd_mutex_unlock (pool->mtx); } while (0)
 
 /* 
  * This define specify whether we should check all pools for free space for new object
@@ -200,11 +196,7 @@ memory_pool_new (gsize size)
        new->destructors = NULL;
        /* Set it upon first call of set variable */
        new->variables = NULL;
-#if ((GLIB_MAJOR_VERSION == 2) && (GLIB_MINOR_VERSION <= 30))
-       g_static_mutex_init (&new->mtx);
-#else
-       g_mutex_init (&new->mtx);
-#endif
+       new->mtx = rspamd_mutex_new ();
 
        mem_pool_stat->pools_allocated++;
 
@@ -620,10 +612,7 @@ memory_pool_delete (memory_pool_t * pool)
 
        mem_pool_stat->pools_freed++;
        POOL_MTX_UNLOCK ();
-#if ((GLIB_MAJOR_VERSION == 2) && (GLIB_MINOR_VERSION > 30))
-       g_mutex_clear (&pool->mtx);
-#endif
-       g_slice_free (memory_pool_t, pool);
+       rspamd_mutex_free (pool->mtx);
 }
 
 void
index 79d9d48fea13641cd8804e49bec7dc992f5cb847..5bef5fee1a7129668344418474f1945a15580a2f 100644 (file)
@@ -70,6 +70,7 @@ struct _pool_destructors {
 /**
  * Memory pool type
  */
+struct rspamd_mutex_s;
 typedef struct memory_pool_s {
        struct _pool_chain *cur_pool;                   /**< currently used page                                        */
        struct _pool_chain *first_pool;                 /**< first page                                                         */
@@ -78,11 +79,7 @@ typedef struct memory_pool_s {
        struct _pool_chain_shared *shared_pool; /**< shared chain                                                       */
        struct _pool_destructors *destructors;  /**< destructors chain                                          */
        GHashTable *variables;                                  /**< private memory pool variables                      */
-#if ((GLIB_MAJOR_VERSION == 2) && (GLIB_MINOR_VERSION <= 30))
-       GStaticMutex mtx;                                               /**< threads lock                                                       */
-#else
-       GMutex mtx;                                                             /**< threads lock                                                       */
-#endif
+       struct rspamd_mutex_s *mtx;                             /**< threads lock                                                       */
 } memory_pool_t;
 
 /**