aboutsummaryrefslogtreecommitdiffstats
path: root/src/libutil/mem_pool.h
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2014-11-01 22:11:15 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2014-11-01 22:11:15 +0000
commit2eed87e9b8d39f4f1d03e83f02dce377a1b187f5 (patch)
tree0ff97489a98773cf4b845b610398c91cbef8bbdd /src/libutil/mem_pool.h
parent75ef01b07b276ead8199f85a8942735f5b762028 (diff)
downloadrspamd-2eed87e9b8d39f4f1d03e83f02dce377a1b187f5.tar.gz
rspamd-2eed87e9b8d39f4f1d03e83f02dce377a1b187f5.zip
Use PTHREAD_PROCESS_SHARED mutexes if possible.
Diffstat (limited to 'src/libutil/mem_pool.h')
-rw-r--r--src/libutil/mem_pool.h24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/libutil/mem_pool.h b/src/libutil/mem_pool.h
index 6d59e27c7..7403ced29 100644
--- a/src/libutil/mem_pool.h
+++ b/src/libutil/mem_pool.h
@@ -13,7 +13,9 @@
#define RSPAMD_MEM_POOL_H
#include "config.h"
-
+#ifdef HAVE_PTHREAD_PROCESS_SHARED
+#include <pthread.h>
+#endif
struct f_str_s;
@@ -29,11 +31,23 @@ typedef void (*rspamd_mempool_destruct_t)(void *ptr);
/**
* Pool mutex structure
*/
+#ifndef HAVE_PTHREAD_PROCESS_SHARED
typedef struct memory_pool_mutex_s {
gint lock;
pid_t owner;
guint spin;
} rspamd_mempool_mutex_t;
+/**
+ * Rwlock for locking shared memory regions
+ */
+typedef struct memory_pool_rwlock_s {
+ rspamd_mempool_mutex_t *__r_lock; /**< read mutex (private) */
+ rspamd_mempool_mutex_t *__w_lock; /**< write mutex (private) */
+} rspamd_mempool_rwlock_t;
+#else
+typedef pthread_mutex_t rspamd_mempool_mutex_t;
+typedef pthread_rwlock_t rspamd_mempool_rwlock_t;
+#endif
/**
* Pool page structure
@@ -95,13 +109,7 @@ typedef struct memory_pool_stat_s {
guint oversized_chunks; /**< oversized chunks */
} rspamd_mempool_stat_t;
-/**
- * Rwlock for locking shared memory regions
- */
-typedef struct memory_pool_rwlock_s {
- rspamd_mempool_mutex_t *__r_lock; /**< read mutex (private) */
- rspamd_mempool_mutex_t *__w_lock; /**< write mutex (private) */
-} rspamd_mempool_rwlock_t;
+
/**
* Allocate new memory poll