From 1676c7e54f238e72910263f83987b271067efe21 Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Wed, 29 Sep 2010 00:15:37 +0100 Subject: [PATCH] rx: Use atomics for rxi_AllocSize and rxi_AllocCnt More atomics for RX statistics counters. Less lock contention. Change-Id: I55202d2d54323448f7bc191aab03ace976fac962 Reviewed-on: http://gerrit.openafs.org/2861 Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/rx/rx.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/rx/rx.c b/src/rx/rx.c index 66f88d937..68ca46d44 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -2436,14 +2436,18 @@ rxi_FreeCall(struct rx_call *call) } } -afs_int32 rxi_Alloccnt = 0, rxi_Allocsize = 0; +rx_atomic_t rxi_Allocsize = RX_ATOMIC_INIT(0); +rx_atomic_t rxi_Alloccnt = RX_ATOMIC_INIT(0); + void * rxi_Alloc(size_t size) { char *p; - if (rx_stats_active) - rx_MutexAdd1Increment2(rxi_Allocsize, (afs_int32)size, rxi_Alloccnt, rx_stats_mutex); + if (rx_stats_active) { + rx_atomic_add(&rxi_Allocsize, (int) size); + rx_atomic_inc(&rxi_Alloccnt); + } p = (char *) #if defined(KERNEL) && !defined(UKERNEL) && defined(AFS_FBSD80_ENV) @@ -2460,8 +2464,10 @@ p = (char *) void rxi_Free(void *addr, size_t size) { - if (rx_stats_active) - rx_MutexAdd1Decrement2(rxi_Allocsize, -(afs_int32)size, rxi_Alloccnt, rx_stats_mutex); + if (rx_stats_active) { + rx_atomic_sub(&rxi_Allocsize, (int) size); + rx_atomic_dec(&rxi_Alloccnt); + } osi_Free(addr, size); } -- 2.39.5