Lines Matching defs:tsdn

31 static void	arena_purge_to_limit(tsdn_t *tsdn, arena_t *arena,
33 static void arena_dalloc_bin_slab(tsdn_t *tsdn, arena_t *arena,
35 static void arena_bin_lower_slab(tsdn_t *tsdn, arena_t *arena,
47 arena_extent_cache_alloc_locked(tsdn_t *tsdn, arena_t *arena,
53 malloc_mutex_assert_owner(tsdn, &arena->lock);
55 return (extent_alloc_cache(tsdn, arena, r_extent_hooks, new_addr, usize,
60 arena_extent_cache_alloc(tsdn_t *tsdn, arena_t *arena,
66 malloc_mutex_lock(tsdn, &arena->lock);
67 extent = arena_extent_cache_alloc_locked(tsdn, arena, r_extent_hooks,
69 malloc_mutex_unlock(tsdn, &arena->lock);
75 arena_extent_cache_dalloc_locked(tsdn_t *tsdn, arena_t *arena,
78 malloc_mutex_assert_owner(tsdn, &arena->lock);
80 extent_dalloc_cache(tsdn, arena, r_extent_hooks, extent);
81 arena_maybe_purge(tsdn, arena);
85 arena_extent_cache_dalloc(tsdn_t *tsdn, arena_t *arena,
88 malloc_mutex_lock(tsdn, &arena->lock);
89 arena_extent_cache_dalloc_locked(tsdn, arena, r_extent_hooks, extent);
90 malloc_mutex_unlock(tsdn, &arena->lock);
94 arena_extent_cache_maybe_insert(tsdn_t *tsdn, arena_t *arena, extent_t *extent,
97 malloc_mutex_assert_owner(tsdn, &arena->extents_mtx);
106 arena_extent_cache_maybe_remove(tsdn_t *tsdn, arena_t *arena, extent_t *extent,
109 malloc_mutex_assert_owner(tsdn, &arena->extents_mtx);
119 arena_slab_reg_alloc(tsdn_t *tsdn, extent_t *slab,
176 arena_slab_reg_dalloc(tsdn_t *tsdn, extent_t *slab,
280 arena_extent_alloc_large_hard(tsdn_t *tsdn, arena_t *arena,
286 extent = extent_alloc_wrapper(tsdn, arena, r_extent_hooks, NULL, usize,
290 malloc_mutex_lock(tsdn, &arena->lock);
296 malloc_mutex_unlock(tsdn, &arena->lock);
303 arena_extent_alloc_large(tsdn_t *tsdn, arena_t *arena, size_t usize,
309 malloc_mutex_lock(tsdn, &arena->lock);
318 extent = arena_extent_cache_alloc_locked(tsdn, arena, &extent_hooks,
320 malloc_mutex_unlock(tsdn, &arena->lock);
322 extent = arena_extent_alloc_large_hard(tsdn, arena,
330 arena_extent_dalloc_large(tsdn_t *tsdn, arena_t *arena, extent_t *extent,
336 malloc_mutex_lock(tsdn, &arena->lock);
338 malloc_mutex_assert_owner(tsdn, &arena->lock);
346 arena_extent_cache_dalloc_locked(tsdn, arena, &extent_hooks, extent);
348 malloc_mutex_unlock(tsdn, &arena->lock);
352 arena_extent_ralloc_large_shrink(tsdn_t *tsdn, arena_t *arena, extent_t *extent,
358 malloc_mutex_lock(tsdn, &arena->lock);
364 malloc_mutex_unlock(tsdn, &arena->lock);
368 arena_extent_ralloc_large_expand(tsdn_t *tsdn, arena_t *arena, extent_t *extent,
374 malloc_mutex_lock(tsdn, &arena->lock);
380 malloc_mutex_unlock(tsdn, &arena->lock);
489 arena_decay_epoch_advance_purge(tsdn_t *tsdn, arena_t *arena)
494 arena_purge_to_limit(tsdn, arena, ndirty_limit);
499 arena_decay_epoch_advance(tsdn_t *tsdn, arena_t *arena, const nstime_t *time)
502 arena_decay_epoch_advance_purge(tsdn, arena);
533 arena_decay_time_get(tsdn_t *tsdn, arena_t *arena)
537 malloc_mutex_lock(tsdn, &arena->lock);
539 malloc_mutex_unlock(tsdn, &arena->lock);
545 arena_decay_time_set(tsdn_t *tsdn, arena_t *arena, ssize_t decay_time)
550 malloc_mutex_lock(tsdn, &arena->lock);
560 arena_maybe_purge(tsdn, arena);
561 malloc_mutex_unlock(tsdn, &arena->lock);
567 arena_maybe_purge_helper(tsdn_t *tsdn, arena_t *arena)
574 arena_purge_to_limit(tsdn, arena, 0);
605 arena_decay_epoch_advance(tsdn, arena, &time);
609 arena_maybe_purge(tsdn_t *tsdn, arena_t *arena)
611 malloc_mutex_assert_owner(tsdn, &arena->lock);
617 arena_maybe_purge_helper(tsdn, arena);
621 arena_dirty_count(tsdn_t *tsdn, arena_t *arena)
626 malloc_mutex_lock(tsdn, &arena->extents_mtx);
632 malloc_mutex_unlock(tsdn, &arena->extents_mtx);
638 arena_stash_dirty(tsdn_t *tsdn, arena_t *arena, extent_hooks_t **r_extent_hooks,
644 malloc_mutex_lock(tsdn, &arena->extents_mtx);
661 textent = extent_alloc_cache_locked(tsdn, arena, r_extent_hooks,
672 malloc_mutex_unlock(tsdn, &arena->extents_mtx);
677 arena_purge_stashed(tsdn_t *tsdn, arena_t *arena,
696 extent_dalloc_wrapper(tsdn, arena, r_extent_hooks, extent);
712 arena_purge_to_limit(tsdn_t *tsdn, arena_t *arena, size_t ndirty_limit)
725 size_t ndirty = arena_dirty_count(tsdn, arena);
731 npurge = arena_stash_dirty(tsdn, arena, &extent_hooks, ndirty_limit,
735 npurged = arena_purge_stashed(tsdn, arena, &extent_hooks,
747 arena_purge(tsdn_t *tsdn, arena_t *arena, bool all)
749 malloc_mutex_lock(tsdn, &arena->lock);
751 arena_purge_to_limit(tsdn, arena, 0);
753 arena_maybe_purge(tsdn, arena);
754 malloc_mutex_unlock(tsdn, &arena->lock);
758 arena_slab_dalloc(tsdn_t *tsdn, arena_t *arena, extent_t *slab)
763 arena_extent_cache_dalloc_locked(tsdn, arena, &extent_hooks, slab);
886 arena_destroy_retained(tsdn_t *tsdn, arena_t *arena)
908 extent_dalloc_wrapper_try(tsdn, arena, &extent_hooks,
951 arena_slab_alloc_hard(tsdn_t *tsdn, arena_t *arena,
959 malloc_mutex_unlock(tsdn, &arena->lock);
960 slab = extent_alloc_wrapper(tsdn, arena, r_extent_hooks, NULL,
962 malloc_mutex_lock(tsdn, &arena->lock);
968 arena_slab_alloc(tsdn_t *tsdn, arena_t *arena, szind_t binind,
976 slab = arena_extent_cache_alloc_locked(tsdn, arena, &extent_hooks, NULL,
979 slab = arena_slab_alloc_hard(tsdn, arena, &extent_hooks,
1001 arena_bin_nonfull_slab_get(tsdn_t *tsdn, arena_t *arena, arena_bin_t *bin,
1016 malloc_mutex_unlock(tsdn, &bin->lock);
1018 malloc_mutex_lock(tsdn, &arena->lock);
1019 slab = arena_slab_alloc(tsdn, arena, binind, bin_info);
1020 malloc_mutex_unlock(tsdn, &arena->lock);
1022 malloc_mutex_lock(tsdn, &bin->lock);
1045 arena_bin_malloc_hard(tsdn_t *tsdn, arena_t *arena, arena_bin_t *bin,
1056 slab = arena_bin_nonfull_slab_get(tsdn, arena, bin, binind);
1063 void *ret = arena_slab_reg_alloc(tsdn, bin->slabcur,
1077 arena_dalloc_bin_slab(tsdn, arena, slab,
1080 arena_bin_lower_slab(tsdn, arena, slab,
1097 return (arena_slab_reg_alloc(tsdn, slab, bin_info));
1101 arena_tcache_fill_small(tsdn_t *tsdn, arena_t *arena, tcache_bin_t *tbin,
1109 if (config_prof && arena_prof_accum(tsdn, arena, prof_accumbytes))
1110 prof_idump(tsdn);
1112 malloc_mutex_lock(tsdn, &bin->lock);
1119 ptr = arena_slab_reg_alloc(tsdn, slab,
1122 ptr = arena_bin_malloc_hard(tsdn, arena, bin, binind);
1149 malloc_mutex_unlock(tsdn, &bin->lock);
1151 arena_decay_tick(tsdn, arena);
1178 arena_malloc_small(tsdn_t *tsdn, arena_t *arena, szind_t binind, bool zero)
1189 malloc_mutex_lock(tsdn, &bin->lock);
1192 ret = arena_slab_reg_alloc(tsdn, slab, &arena_bin_info[binind]);
1194 ret = arena_bin_malloc_hard(tsdn, arena, bin, binind);
1197 malloc_mutex_unlock(tsdn, &bin->lock);
1206 malloc_mutex_unlock(tsdn, &bin->lock);
1207 if (config_prof && arena_prof_accum(tsdn, arena, usize))
1208 prof_idump(tsdn);
1226 arena_decay_tick(tsdn, arena);
1231 arena_malloc_hard(tsdn_t *tsdn, arena_t *arena, size_t size, szind_t ind,
1234 assert(!tsdn_null(tsdn) || arena != NULL);
1236 if (likely(!tsdn_null(tsdn)))
1237 arena = arena_choose(tsdn_tsd(tsdn), arena);
1242 return (arena_malloc_small(tsdn, arena, ind, zero));
1243 return (large_malloc(tsdn, arena, index2size(ind), zero));
1247 arena_palloc(tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment,
1255 ret = arena_malloc(tsdn, arena, usize, size2index(usize), zero,
1259 ret = large_malloc(tsdn, arena, usize, zero);
1261 ret = large_palloc(tsdn, arena, usize, alignment, zero);
1267 arena_prof_promote(tsdn_t *tsdn, extent_t *extent, const void *ptr,
1274 assert(isalloc(tsdn, extent, ptr) == LARGE_MINCLASS);
1285 malloc_mutex_lock(tsdn, &arena->lock);
1290 malloc_mutex_unlock(tsdn, &arena->lock);
1292 assert(isalloc(tsdn, extent, ptr) == usize);
1296 arena_prof_demote(tsdn_t *tsdn, extent_t *extent, const void *ptr)
1303 assert(isalloc(tsdn, extent, ptr) == LARGE_MINCLASS);
1309 arena_dalloc_promoted(tsdn_t *tsdn, extent_t *extent, void *ptr,
1317 usize = arena_prof_demote(tsdn, extent, ptr);
1319 tcache_dalloc_large(tsdn_tsd(tsdn), tcache, ptr, usize,
1322 large_dalloc(tsdn, extent);
1348 arena_dalloc_bin_slab(tsdn_t *tsdn, arena_t *arena, extent_t *slab,
1353 malloc_mutex_unlock(tsdn, &bin->lock);
1355 malloc_mutex_lock(tsdn, &arena->lock);
1356 arena_slab_dalloc(tsdn, arena, slab);
1357 malloc_mutex_unlock(tsdn, &arena->lock);
1359 malloc_mutex_lock(tsdn, &bin->lock);
1365 arena_bin_lower_slab(tsdn_t *tsdn, arena_t *arena, extent_t *slab,
1390 arena_dalloc_bin_locked_impl(tsdn_t *tsdn, arena_t *arena, extent_t *slab,
1401 arena_slab_reg_dalloc(tsdn, slab, slab_data, ptr);
1404 arena_dalloc_bin_slab(tsdn, arena, slab, bin);
1407 arena_bin_lower_slab(tsdn, arena, slab, bin);
1417 arena_dalloc_bin_junked_locked(tsdn_t *tsdn, arena_t *arena, extent_t *extent,
1420 arena_dalloc_bin_locked_impl(tsdn, arena, extent, ptr, true);
1424 arena_dalloc_bin(tsdn_t *tsdn, arena_t *arena, extent_t *extent, void *ptr)
1428 malloc_mutex_lock(tsdn, &bin->lock);
1429 arena_dalloc_bin_locked_impl(tsdn, arena, extent, ptr, false);
1430 malloc_mutex_unlock(tsdn, &bin->lock);
1434 arena_dalloc_small(tsdn_t *tsdn, arena_t *arena, extent_t *extent, void *ptr)
1436 arena_dalloc_bin(tsdn, arena, extent, ptr);
1437 arena_decay_tick(tsdn, arena);
1441 arena_ralloc_no_move(tsdn_t *tsdn, extent_t *extent, void *ptr, size_t oldsize,
1466 arena_decay_tick(tsdn, extent_arena_get(extent));
1469 return (large_ralloc_no_move(tsdn, extent, usize_min, usize_max,
1477 arena_ralloc_move_helper(tsdn_t *tsdn, arena_t *arena, size_t usize,
1481 return (arena_malloc(tsdn, arena, usize, size2index(usize),
1486 return (ipalloct(tsdn, usize, alignment, zero, tcache, arena));
1490 arena_ralloc(tsdn_t *tsdn, arena_t *arena, extent_t *extent, void *ptr,
1502 if (!arena_ralloc_no_move(tsdn, extent, ptr, oldsize, usize, 0,
1508 return (large_ralloc(tsdn, arena, extent, usize, alignment,
1516 ret = arena_ralloc_move_helper(tsdn, arena, usize, alignment, zero,
1528 isdalloct(tsdn, extent, ptr, oldsize, tcache, true);
1533 arena_dss_prec_get(tsdn_t *tsdn, arena_t *arena)
1537 malloc_mutex_lock(tsdn, &arena->lock);
1539 malloc_mutex_unlock(tsdn, &arena->lock);
1544 arena_dss_prec_set(tsdn_t *tsdn, arena_t *arena, dss_prec_t dss_prec)
1548 malloc_mutex_lock(tsdn, &arena->lock);
1550 malloc_mutex_unlock(tsdn, &arena->lock);
1581 arena_basic_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads,
1584 malloc_mutex_lock(tsdn, &arena->lock);
1587 malloc_mutex_unlock(tsdn, &arena->lock);
1591 arena_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads,
1601 malloc_mutex_lock(tsdn, &arena->lock);
1605 base_stats_get(tsdn, arena->base, &base_allocated, &base_resident,
1643 malloc_mutex_unlock(tsdn, &arena->lock);
1648 malloc_mutex_lock(tsdn, &bin->lock);
1660 malloc_mutex_unlock(tsdn, &bin->lock);
1689 arena_new(tsdn_t *tsdn, unsigned ind, extent_hooks_t *extent_hooks)
1698 base = base_new(tsdn, ind, extent_hooks);
1703 arena = (arena_t *)base_alloc(tsdn, base, sizeof(arena_t), CACHELINE);
1794 arena_prefork0(tsdn_t *tsdn, arena_t *arena)
1796 malloc_mutex_prefork(tsdn, &arena->lock);
1800 arena_prefork1(tsdn_t *tsdn, arena_t *arena)
1802 malloc_mutex_prefork(tsdn, &arena->extents_mtx);
1806 arena_prefork2(tsdn_t *tsdn, arena_t *arena)
1808 malloc_mutex_prefork(tsdn, &arena->extent_cache_mtx);
1812 arena_prefork3(tsdn_t *tsdn, arena_t *arena)
1816 base_prefork(tsdn, arena->base);
1818 malloc_mutex_prefork(tsdn, &arena->bins[i].lock);
1819 malloc_mutex_prefork(tsdn, &arena->large_mtx);
1823 arena_postfork_parent(tsdn_t *tsdn, arena_t *arena)
1827 malloc_mutex_postfork_parent(tsdn, &arena->large_mtx);
1829 malloc_mutex_postfork_parent(tsdn, &arena->bins[i].lock);
1830 base_postfork_parent(tsdn, arena->base);
1831 malloc_mutex_postfork_parent(tsdn, &arena->extent_cache_mtx);
1832 malloc_mutex_postfork_parent(tsdn, &arena->extents_mtx);
1833 malloc_mutex_postfork_parent(tsdn, &arena->lock);
1837 arena_postfork_child(tsdn_t *tsdn, arena_t *arena)
1841 malloc_mutex_postfork_child(tsdn, &arena->large_mtx);
1843 malloc_mutex_postfork_child(tsdn, &arena->bins[i].lock);
1844 base_postfork_child(tsdn, arena->base);
1845 malloc_mutex_postfork_child(tsdn, &arena->extent_cache_mtx);
1846 malloc_mutex_postfork_child(tsdn, &arena->extents_mtx);
1847 malloc_mutex_postfork_child(tsdn, &arena->lock);