summaryrefslogtreecommitdiffstats
path: root/include/jemalloc
diff options
context:
space:
mode:
authorDavid Goldblatt <davidgoldblatt@fb.com>2017-03-13 23:18:40 (GMT)
committerDavid Goldblatt <davidtgoldblatt@gmail.com>2017-03-14 01:22:33 (GMT)
commitee202efc79d650e16e3ecb1569efccbc5666e116 (patch)
tree29db85be47aeabdab0823fcaefbe242ef41127ee /include/jemalloc
parent4fc2acf5aef9ea8fe7e2dd39ee8b6a5050c5ff7f (diff)
downloadjemalloc-ee202efc79d650e16e3ecb1569efccbc5666e116.zip
jemalloc-ee202efc79d650e16e3ecb1569efccbc5666e116.tar.gz
jemalloc-ee202efc79d650e16e3ecb1569efccbc5666e116.tar.bz2
Convert remaining arena_stats_t fields to atomics
These were all size_ts, so we have atomics support for them on all platforms, so the conversion is straightforward. Left non-atomic is curlextents, which AFAICT is not used atomically anywhere.
Diffstat (limited to 'include/jemalloc')
-rw-r--r--include/jemalloc/internal/arena_inlines_a.h6
-rw-r--r--include/jemalloc/internal/stats_structs.h14
2 files changed, 10 insertions, 10 deletions
diff --git a/include/jemalloc/internal/arena_inlines_a.h b/include/jemalloc/internal/arena_inlines_a.h
index 9dd5304..e1c4765 100644
--- a/include/jemalloc/internal/arena_inlines_a.h
+++ b/include/jemalloc/internal/arena_inlines_a.h
@@ -19,17 +19,17 @@ arena_ind_get(const arena_t *arena) {
JEMALLOC_INLINE void
arena_internal_add(arena_t *arena, size_t size) {
- atomic_add_zu(&arena->stats.internal, size);
+ atomic_fetch_add_zu(&arena->stats.internal, size, ATOMIC_RELAXED);
}
JEMALLOC_INLINE void
arena_internal_sub(arena_t *arena, size_t size) {
- atomic_sub_zu(&arena->stats.internal, size);
+ atomic_fetch_sub_zu(&arena->stats.internal, size, ATOMIC_RELAXED);
}
JEMALLOC_INLINE size_t
arena_internal_get(arena_t *arena) {
- return atomic_read_zu(&arena->stats.internal);
+ return atomic_load_zu(&arena->stats.internal, ATOMIC_RELAXED);
}
JEMALLOC_INLINE bool
diff --git a/include/jemalloc/internal/stats_structs.h b/include/jemalloc/internal/stats_structs.h
index b64ba2d..4e9c898 100644
--- a/include/jemalloc/internal/stats_structs.h
+++ b/include/jemalloc/internal/stats_structs.h
@@ -88,7 +88,7 @@ struct arena_stats_s {
#endif
/* Number of bytes currently mapped, excluding retained memory. */
- size_t mapped; /* Partially derived. */
+ atomic_zu_t mapped; /* Partially derived. */
/*
* Number of bytes currently retained as a side effect of munmap() being
@@ -96,7 +96,7 @@ struct arena_stats_s {
* always decommitted or purged), but they are excluded from the mapped
* statistic (above).
*/
- size_t retained; /* Derived. */
+ atomic_zu_t retained; /* Derived. */
/*
* Total number of purge sweeps, total number of madvise calls made,
@@ -107,17 +107,17 @@ struct arena_stats_s {
arena_stats_u64_t nmadvise;
arena_stats_u64_t purged;
- size_t base; /* Derived. */
- size_t internal;
- size_t resident; /* Derived. */
+ atomic_zu_t base; /* Derived. */
+ atomic_zu_t internal;
+ atomic_zu_t resident; /* Derived. */
- size_t allocated_large; /* Derived. */
+ atomic_zu_t allocated_large; /* Derived. */
arena_stats_u64_t nmalloc_large; /* Derived. */
arena_stats_u64_t ndalloc_large; /* Derived. */
arena_stats_u64_t nrequests_large; /* Derived. */
/* Number of bytes cached in tcache associated with this arena. */
- size_t tcache_bytes; /* Derived. */
+ atomic_zu_t tcache_bytes; /* Derived. */
/* One element for each large size class. */
malloc_large_stats_t lstats[NSIZES - NBINS];