diff options
-rw-r--r-- | libglusterfs/src/mem-pool.c | 13 | ||||
-rw-r--r-- | libglusterfs/src/mem-pool.h | 8 |
2 files changed, 13 insertions, 8 deletions
diff --git a/libglusterfs/src/mem-pool.c b/libglusterfs/src/mem-pool.c index 4b600f4681a..23af8619fb5 100644 --- a/libglusterfs/src/mem-pool.c +++ b/libglusterfs/src/mem-pool.c @@ -529,6 +529,11 @@ mem_pools_preinit (void) for (i = 0; i < NPOOLS; ++i) { pools[i].power_of_two = POOL_SMALLEST + i; + + GF_ATOMIC_INIT (pools[i].allocs_hot, 0); + GF_ATOMIC_INIT (pools[i].allocs_cold, 0); + GF_ATOMIC_INIT (pools[i].allocs_stdc, 0); + GF_ATOMIC_INIT (pools[i].frees_to_list, 0); } pool_list_size = sizeof (per_thread_pool_list_t) @@ -641,19 +646,19 @@ mem_get_from_pool (per_thread_pool_t *pt_pool) retval = pt_pool->hot_list; if (retval) { - (void) __sync_fetch_and_add (&pt_pool->parent->allocs_hot, 1); + GF_ATOMIC_INC (pt_pool->parent->allocs_hot); pt_pool->hot_list = retval->next; return retval; } retval = pt_pool->cold_list; if (retval) { - (void) __sync_fetch_and_add (&pt_pool->parent->allocs_cold, 1); + GF_ATOMIC_INC (pt_pool->parent->allocs_cold); pt_pool->cold_list = retval->next; return retval; } - (void) __sync_fetch_and_add (&pt_pool->parent->allocs_stdc, 1); + GF_ATOMIC_INC (pt_pool->parent->allocs_stdc); return malloc (1 << pt_pool->parent->power_of_two); } @@ -727,7 +732,7 @@ mem_put (void *ptr) hdr->magic = GF_MEM_INVALID_MAGIC; hdr->next = pt_pool->hot_list; pt_pool->hot_list = hdr; - (void) __sync_fetch_and_add (&pt_pool->parent->frees_to_list, 1); + GF_ATOMIC_INC (pt_pool->parent->frees_to_list); (void) pthread_spin_unlock (&pool_list->lock); #endif /* GF_DISABLE_MEMPOOL */ } diff --git a/libglusterfs/src/mem-pool.h b/libglusterfs/src/mem-pool.h index 1b27119cf6c..1b8132bf315 100644 --- a/libglusterfs/src/mem-pool.h +++ b/libglusterfs/src/mem-pool.h @@ -250,10 +250,10 @@ struct mem_pool { * them to line up exactly. It's the general trends that matter, and * it's not worth the locked-bus-cycle overhead to make these precise. */ - unsigned long allocs_hot; - unsigned long allocs_cold; - unsigned long allocs_stdc; - unsigned long frees_to_list; + gf_atomic_t allocs_hot; + gf_atomic_t allocs_cold; + gf_atomic_t allocs_stdc; + gf_atomic_t frees_to_list; }; void mem_pools_init (void); |