summaryrefslogtreecommitdiff
path: root/lib/memory.c
diff options
context:
space:
mode:
authorLou Berger <lberger@labn.net>2018-08-28 19:19:54 -0400
committerLou Berger <lberger@labn.net>2018-08-28 19:22:37 -0400
commit7a153339b2ea6b9cdef3f9ce2113e27f417c6fab (patch)
treecbd65a568e87dfbdac8c20d1d026a19528683f41 /lib/memory.c
parent13f1ba41a12a1a5298b0fb0021895284990aaf70 (diff)
lib: atomic_add_fetch_explicit not supported on all platforms
Signed-off-by: Lou Berger <lberger@labn.net>
Diffstat (limited to 'lib/memory.c')
-rw-r--r--lib/memory.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/memory.c b/lib/memory.c
index 642d1325ed..695bbfe115 100644
--- a/lib/memory.c
+++ b/lib/memory.c
@@ -39,8 +39,8 @@ static inline void mt_count_alloc(struct memtype *mt, size_t size, void *ptr)
size_t current;
size_t oldsize;
- current = atomic_add_fetch_explicit(&mt->n_alloc, 1,
- memory_order_relaxed);
+ current = 1 + atomic_fetch_add_explicit(&mt->n_alloc, 1,
+ memory_order_relaxed);
oldsize = atomic_load_explicit(&mt->n_max, memory_order_relaxed);
if (current > oldsize)
@@ -61,8 +61,8 @@ static inline void mt_count_alloc(struct memtype *mt, size_t size, void *ptr)
#ifdef HAVE_MALLOC_USABLE_SIZE
size_t mallocsz = malloc_usable_size(ptr);
- current = atomic_add_fetch_explicit(&mt->total, mallocsz,
- memory_order_relaxed);
+ current = mallocsz + atomic_fetch_add_explicit(&mt->total, mallocsz,
+ memory_order_relaxed);
oldsize = atomic_load_explicit(&mt->max_size, memory_order_relaxed);
if (current > oldsize)
/* note that this may fail, but approximation is sufficient */