| #ifndef JEMALLOC_INTERNAL_ARENA_INLINES_A_H |
| #define JEMALLOC_INTERNAL_ARENA_INLINES_A_H |
| |
| #ifndef JEMALLOC_ENABLE_INLINE |
| unsigned arena_ind_get(const arena_t *arena); |
| void arena_internal_add(arena_t *arena, size_t size); |
| void arena_internal_sub(arena_t *arena, size_t size); |
| size_t arena_internal_get(arena_t *arena); |
| bool arena_prof_accum_impl(arena_t *arena, uint64_t accumbytes); |
| bool arena_prof_accum_locked(arena_t *arena, uint64_t accumbytes); |
| bool arena_prof_accum(tsdn_t *tsdn, arena_t *arena, uint64_t accumbytes); |
| #endif /* JEMALLOC_ENABLE_INLINE */ |
| |
| #if (defined(JEMALLOC_ENABLE_INLINE) || defined(JEMALLOC_ARENA_C_)) |
| |
| JEMALLOC_INLINE unsigned |
| arena_ind_get(const arena_t *arena) |
| { |
| return (base_ind_get(arena->base)); |
| } |
| |
| JEMALLOC_INLINE void |
| arena_internal_add(arena_t *arena, size_t size) |
| { |
| atomic_add_zu(&arena->stats.internal, size); |
| } |
| |
| JEMALLOC_INLINE void |
| arena_internal_sub(arena_t *arena, size_t size) |
| { |
| atomic_sub_zu(&arena->stats.internal, size); |
| } |
| |
| JEMALLOC_INLINE size_t |
| arena_internal_get(arena_t *arena) |
| { |
| return (atomic_read_zu(&arena->stats.internal)); |
| } |
| |
| JEMALLOC_INLINE bool |
| arena_prof_accum_impl(arena_t *arena, uint64_t accumbytes) |
| { |
| cassert(config_prof); |
| assert(prof_interval != 0); |
| |
| arena->prof_accumbytes += accumbytes; |
| if (arena->prof_accumbytes >= prof_interval) { |
| arena->prof_accumbytes %= prof_interval; |
| return (true); |
| } |
| return (false); |
| } |
| |
| JEMALLOC_INLINE bool |
| arena_prof_accum_locked(arena_t *arena, uint64_t accumbytes) |
| { |
| cassert(config_prof); |
| |
| if (likely(prof_interval == 0)) |
| return (false); |
| return (arena_prof_accum_impl(arena, accumbytes)); |
| } |
| |
| JEMALLOC_INLINE bool |
| arena_prof_accum(tsdn_t *tsdn, arena_t *arena, uint64_t accumbytes) |
| { |
| cassert(config_prof); |
| |
| if (likely(prof_interval == 0)) |
| return (false); |
| |
| { |
| bool ret; |
| |
| malloc_mutex_lock(tsdn, &arena->lock); |
| ret = arena_prof_accum_impl(arena, accumbytes); |
| malloc_mutex_unlock(tsdn, &arena->lock); |
| return (ret); |
| } |
| } |
| |
| #endif /* (defined(JEMALLOC_ENABLE_INLINE) || defined(JEMALLOC_ARENA_C_)) */ |
| |
| #endif /* JEMALLOC_INTERNAL_ARENA_INLINES_A_H */ |