diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2014-11-01 22:11:15 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2014-11-01 22:11:15 +0000 |
commit | 2eed87e9b8d39f4f1d03e83f02dce377a1b187f5 (patch) | |
tree | 0ff97489a98773cf4b845b610398c91cbef8bbdd /src/libutil/mem_pool.h | |
parent | 75ef01b07b276ead8199f85a8942735f5b762028 (diff) | |
download | rspamd-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.h | 24 |
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 |