Lines Matching refs:tsd

125 static void	prof_tctx_destroy(tsd_t *tsd, prof_tctx_t *tctx);
128 static void prof_tdata_destroy(tsd_t *tsd, prof_tdata_t *tdata,
197 prof_alloc_rollback(tsd_t *tsd, prof_tctx_t *tctx, bool updated) in rb_gen()
210 tdata = prof_tdata_get(tsd, true); in rb_gen()
216 malloc_mutex_lock(tsd_tsdn(tsd), tctx->tdata->lock); in rb_gen()
218 if (prof_tctx_should_destroy(tsd_tsdn(tsd), tctx)) in rb_gen()
219 prof_tctx_destroy(tsd, tctx); in rb_gen()
221 malloc_mutex_unlock(tsd_tsdn(tsd), tctx->tdata->lock); in rb_gen()
243 prof_free_sampled_object(tsd_t *tsd, size_t usize, prof_tctx_t *tctx) in prof_free_sampled_object() argument
245 malloc_mutex_lock(tsd_tsdn(tsd), tctx->tdata->lock); in prof_free_sampled_object()
251 if (prof_tctx_should_destroy(tsd_tsdn(tsd), tctx)) in prof_free_sampled_object()
252 prof_tctx_destroy(tsd, tctx); in prof_free_sampled_object()
254 malloc_mutex_unlock(tsd_tsdn(tsd), tctx->tdata->lock); in prof_free_sampled_object()
267 prof_enter(tsd_t *tsd, prof_tdata_t *tdata) in prof_enter() argument
270 assert(tdata == prof_tdata_get(tsd, false)); in prof_enter()
277 malloc_mutex_lock(tsd_tsdn(tsd), &bt2gctx_mtx); in prof_enter()
281 prof_leave(tsd_t *tsd, prof_tdata_t *tdata) in prof_leave() argument
284 assert(tdata == prof_tdata_get(tsd, false)); in prof_leave()
286 malloc_mutex_unlock(tsd_tsdn(tsd), &bt2gctx_mtx); in prof_leave()
299 prof_idump(tsd_tsdn(tsd)); in prof_leave()
301 prof_gdump(tsd_tsdn(tsd)); in prof_leave()
568 prof_gctx_try_destroy(tsd_t *tsd, prof_tdata_t *tdata_self, prof_gctx_t *gctx, in prof_gctx_try_destroy() argument
580 prof_enter(tsd, tdata_self); in prof_gctx_try_destroy()
581 malloc_mutex_lock(tsd_tsdn(tsd), gctx->lock); in prof_gctx_try_destroy()
585 if (ckh_remove(tsd, &bt2gctx, &gctx->bt, NULL, NULL)) in prof_gctx_try_destroy()
587 prof_leave(tsd, tdata_self); in prof_gctx_try_destroy()
589 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock); in prof_gctx_try_destroy()
590 idalloctm(tsd_tsdn(tsd), iealloc(tsd_tsdn(tsd), gctx), gctx, in prof_gctx_try_destroy()
598 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock); in prof_gctx_try_destroy()
599 prof_leave(tsd, tdata_self); in prof_gctx_try_destroy()
630 prof_tctx_destroy(tsd_t *tsd, prof_tctx_t *tctx) in prof_tctx_destroy() argument
636 malloc_mutex_assert_owner(tsd_tsdn(tsd), tctx->tdata->lock); in prof_tctx_destroy()
644 ckh_remove(tsd, &tdata->bt2tctx, &gctx->bt, NULL, NULL); in prof_tctx_destroy()
645 destroy_tdata = prof_tdata_should_destroy(tsd_tsdn(tsd), tdata, false); in prof_tctx_destroy()
646 malloc_mutex_unlock(tsd_tsdn(tsd), tdata->lock); in prof_tctx_destroy()
648 malloc_mutex_lock(tsd_tsdn(tsd), gctx->lock); in prof_tctx_destroy()
688 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock); in prof_tctx_destroy()
690 prof_gctx_try_destroy(tsd, prof_tdata_get(tsd, false), gctx, in prof_tctx_destroy()
694 malloc_mutex_assert_not_owner(tsd_tsdn(tsd), tctx->tdata->lock); in prof_tctx_destroy()
697 prof_tdata_destroy(tsd, tdata, false); in prof_tctx_destroy()
700 idalloctm(tsd_tsdn(tsd), iealloc(tsd_tsdn(tsd), tctx), tctx, in prof_tctx_destroy()
705 prof_lookup_global(tsd_t *tsd, prof_bt_t *bt, prof_tdata_t *tdata, in prof_lookup_global() argument
718 prof_enter(tsd, tdata); in prof_lookup_global()
721 gctx.p = prof_gctx_create(tsd_tsdn(tsd), bt); in prof_lookup_global()
723 prof_leave(tsd, tdata); in prof_lookup_global()
727 if (ckh_insert(tsd, &bt2gctx, btkey.v, gctx.v)) { in prof_lookup_global()
729 prof_leave(tsd, tdata); in prof_lookup_global()
730 idalloctm(tsd_tsdn(tsd), iealloc(tsd_tsdn(tsd), gctx.v), in prof_lookup_global()
740 malloc_mutex_lock(tsd_tsdn(tsd), gctx.p->lock); in prof_lookup_global()
742 malloc_mutex_unlock(tsd_tsdn(tsd), gctx.p->lock); in prof_lookup_global()
745 prof_leave(tsd, tdata); in prof_lookup_global()
754 prof_lookup(tsd_t *tsd, prof_bt_t *bt) in prof_lookup() argument
765 tdata = prof_tdata_get(tsd, false); in prof_lookup()
769 malloc_mutex_lock(tsd_tsdn(tsd), tdata->lock); in prof_lookup()
773 malloc_mutex_unlock(tsd_tsdn(tsd), tdata->lock); in prof_lookup()
783 if (prof_lookup_global(tsd, bt, tdata, &btkey, &gctx, in prof_lookup()
788 ret.v = iallocztm(tsd_tsdn(tsd), sizeof(prof_tctx_t), in prof_lookup()
790 arena_ichoose(tsd, NULL), true); in prof_lookup()
793 prof_gctx_try_destroy(tsd, tdata, gctx, tdata); in prof_lookup()
804 malloc_mutex_lock(tsd_tsdn(tsd), tdata->lock); in prof_lookup()
805 error = ckh_insert(tsd, &tdata->bt2tctx, btkey, ret.v); in prof_lookup()
806 malloc_mutex_unlock(tsd_tsdn(tsd), tdata->lock); in prof_lookup()
809 prof_gctx_try_destroy(tsd, tdata, gctx, tdata); in prof_lookup()
810 idalloctm(tsd_tsdn(tsd), iealloc(tsd_tsdn(tsd), ret.v), in prof_lookup()
814 malloc_mutex_lock(tsd_tsdn(tsd), gctx->lock); in prof_lookup()
818 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock); in prof_lookup()
910 tsd_t *tsd; in prof_bt_count() local
913 tsd = tsd_fetch(); in prof_bt_count()
914 tdata = prof_tdata_get(tsd, false); in prof_bt_count()
918 malloc_mutex_lock(tsd_tsdn(tsd), &bt2gctx_mtx); in prof_bt_count()
920 malloc_mutex_unlock(tsd_tsdn(tsd), &bt2gctx_mtx); in prof_bt_count()
1202 prof_gctx_finish(tsd_t *tsd, prof_gctx_tree_t *gctxs) in prof_gctx_finish() argument
1204 prof_tdata_t *tdata = prof_tdata_get(tsd, false); in prof_gctx_finish()
1215 malloc_mutex_lock(tsd_tsdn(tsd), gctx->lock); in prof_gctx_finish()
1224 (void *)tsd_tsdn(tsd)); in prof_gctx_finish()
1230 idalloctm(tsd_tsdn(tsd), in prof_gctx_finish()
1231 iealloc(tsd_tsdn(tsd), to_destroy), in prof_gctx_finish()
1240 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock); in prof_gctx_finish()
1241 prof_gctx_try_destroy(tsd, tdata, gctx, tdata); in prof_gctx_finish()
1243 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock); in prof_gctx_finish()
1534 prof_dump_prep(tsd_t *tsd, prof_tdata_t *tdata, in prof_dump_prep() argument
1545 prof_enter(tsd, tdata); in prof_dump_prep()
1553 prof_dump_gctx_prep(tsd_tsdn(tsd), gctx.p, gctxs); in prof_dump_prep()
1560 prof_tdata_merge_iter_arg->tsdn = tsd_tsdn(tsd); in prof_dump_prep()
1562 malloc_mutex_lock(tsd_tsdn(tsd), &tdatas_mtx); in prof_dump_prep()
1565 malloc_mutex_unlock(tsd_tsdn(tsd), &tdatas_mtx); in prof_dump_prep()
1568 prof_gctx_merge_iter_arg->tsdn = tsd_tsdn(tsd); in prof_dump_prep()
1573 prof_leave(tsd, tdata); in prof_dump_prep()
1577 prof_dump_file(tsd_t *tsd, bool propagate_err, const char *filename, in prof_dump_file() argument
1590 if (prof_dump_header(tsd_tsdn(tsd), propagate_err, in prof_dump_file()
1596 prof_gctx_dump_iter_arg->tsdn = tsd_tsdn(tsd); in prof_dump_file()
1619 prof_dump(tsd_t *tsd, bool propagate_err, const char *filename, bool leakcheck) in prof_dump() argument
1630 tdata = prof_tdata_get(tsd, true); in prof_dump()
1635 malloc_mutex_lock(tsd_tsdn(tsd), &prof_dump_mtx); in prof_dump()
1637 prof_dump_prep(tsd, tdata, &prof_tdata_merge_iter_arg, in prof_dump()
1639 err = prof_dump_file(tsd, propagate_err, filename, leakcheck, tdata, in prof_dump()
1642 prof_gctx_finish(tsd, &gctxs); in prof_dump()
1644 malloc_mutex_unlock(tsd_tsdn(tsd), &prof_dump_mtx); in prof_dump()
1662 tsd_t *tsd; in prof_cnt_all() local
1668 tsd = tsd_fetch(); in prof_cnt_all()
1669 tdata = prof_tdata_get(tsd, false); in prof_cnt_all()
1686 prof_dump_prep(tsd, tdata, &prof_tdata_merge_iter_arg, in prof_cnt_all()
1688 prof_gctx_finish(tsd, &gctxs); in prof_cnt_all()
1729 tsd_t *tsd; in prof_fdump() local
1738 tsd = tsd_fetch(); in prof_fdump()
1740 malloc_mutex_lock(tsd_tsdn(tsd), &prof_dump_seq_mtx); in prof_fdump()
1742 malloc_mutex_unlock(tsd_tsdn(tsd), &prof_dump_seq_mtx); in prof_fdump()
1743 prof_dump(tsd, false, filename, opt_prof_leak); in prof_fdump()
1749 tsd_t *tsd; in prof_idump() local
1756 tsd = tsdn_tsd(tsdn); in prof_idump()
1757 tdata = prof_tdata_get(tsd, false); in prof_idump()
1767 malloc_mutex_lock(tsd_tsdn(tsd), &prof_dump_seq_mtx); in prof_idump()
1770 malloc_mutex_unlock(tsd_tsdn(tsd), &prof_dump_seq_mtx); in prof_idump()
1771 prof_dump(tsd, false, filename, false); in prof_idump()
1776 prof_mdump(tsd_t *tsd, const char *filename) in prof_mdump() argument
1789 malloc_mutex_lock(tsd_tsdn(tsd), &prof_dump_seq_mtx); in prof_mdump()
1792 malloc_mutex_unlock(tsd_tsdn(tsd), &prof_dump_seq_mtx); in prof_mdump()
1795 return (prof_dump(tsd, true, filename, false)); in prof_mdump()
1801 tsd_t *tsd; in prof_gdump() local
1808 tsd = tsdn_tsd(tsdn); in prof_gdump()
1809 tdata = prof_tdata_get(tsd, false); in prof_gdump()
1823 prof_dump(tsd, false, filename, false); in prof_gdump()
1864 prof_tdata_init_impl(tsd_t *tsd, uint64_t thr_uid, uint64_t thr_discrim, in prof_tdata_init_impl() argument
1872 tdata = (prof_tdata_t *)iallocztm(tsd_tsdn(tsd), sizeof(prof_tdata_t), in prof_tdata_init_impl()
1886 if (ckh_new(tsd, &tdata->bt2tctx, PROF_CKH_MINITEMS, prof_bt_hash, in prof_tdata_init_impl()
1888 idalloctm(tsd_tsdn(tsd), iealloc(tsd_tsdn(tsd), tdata), tdata, in prof_tdata_init_impl()
1903 malloc_mutex_lock(tsd_tsdn(tsd), &tdatas_mtx); in prof_tdata_init_impl()
1905 malloc_mutex_unlock(tsd_tsdn(tsd), &tdatas_mtx); in prof_tdata_init_impl()
1911 prof_tdata_init(tsd_t *tsd) in prof_tdata_init() argument
1913 return (prof_tdata_init_impl(tsd, prof_thr_uid_alloc(tsd_tsdn(tsd)), 0, in prof_tdata_init()
1914 NULL, prof_thread_active_init_get(tsd_tsdn(tsd)))); in prof_tdata_init()
1937 prof_tdata_destroy_locked(tsd_t *tsd, prof_tdata_t *tdata, in prof_tdata_destroy_locked() argument
1940 malloc_mutex_assert_owner(tsd_tsdn(tsd), &tdatas_mtx); in prof_tdata_destroy_locked()
1947 idalloctm(tsd_tsdn(tsd), iealloc(tsd_tsdn(tsd), in prof_tdata_destroy_locked()
1950 ckh_delete(tsd, &tdata->bt2tctx); in prof_tdata_destroy_locked()
1951 idalloctm(tsd_tsdn(tsd), iealloc(tsd_tsdn(tsd), tdata), tdata, NULL, in prof_tdata_destroy_locked()
1956 prof_tdata_destroy(tsd_t *tsd, prof_tdata_t *tdata, bool even_if_attached) in prof_tdata_destroy() argument
1958 malloc_mutex_lock(tsd_tsdn(tsd), &tdatas_mtx); in prof_tdata_destroy()
1959 prof_tdata_destroy_locked(tsd, tdata, even_if_attached); in prof_tdata_destroy()
1960 malloc_mutex_unlock(tsd_tsdn(tsd), &tdatas_mtx); in prof_tdata_destroy()
1964 prof_tdata_detach(tsd_t *tsd, prof_tdata_t *tdata) in prof_tdata_detach() argument
1968 malloc_mutex_lock(tsd_tsdn(tsd), tdata->lock); in prof_tdata_detach()
1970 destroy_tdata = prof_tdata_should_destroy(tsd_tsdn(tsd), tdata, in prof_tdata_detach()
1978 tsd_prof_tdata_set(tsd, NULL); in prof_tdata_detach()
1981 malloc_mutex_unlock(tsd_tsdn(tsd), tdata->lock); in prof_tdata_detach()
1983 prof_tdata_destroy(tsd, tdata, true); in prof_tdata_detach()
1987 prof_tdata_reinit(tsd_t *tsd, prof_tdata_t *tdata) in prof_tdata_reinit() argument
1992 prof_thread_name_alloc(tsd_tsdn(tsd), tdata->thread_name) : NULL; in prof_tdata_reinit()
1995 prof_tdata_detach(tsd, tdata); in prof_tdata_reinit()
1996 return (prof_tdata_init_impl(tsd, thr_uid, thr_discrim, thread_name, in prof_tdata_reinit()
2026 prof_reset(tsd_t *tsd, size_t lg_sample) in prof_reset() argument
2032 malloc_mutex_lock(tsd_tsdn(tsd), &prof_dump_mtx); in prof_reset()
2033 malloc_mutex_lock(tsd_tsdn(tsd), &tdatas_mtx); in prof_reset()
2040 prof_tdata_reset_iter, (void *)tsd); in prof_reset()
2043 prof_tdata_destroy_locked(tsd, to_destroy, false); in prof_reset()
2048 malloc_mutex_unlock(tsd_tsdn(tsd), &tdatas_mtx); in prof_reset()
2049 malloc_mutex_unlock(tsd_tsdn(tsd), &prof_dump_mtx); in prof_reset()
2053 prof_tdata_cleanup(tsd_t *tsd) in prof_tdata_cleanup() argument
2060 tdata = tsd_prof_tdata_get(tsd); in prof_tdata_cleanup()
2062 prof_tdata_detach(tsd, tdata); in prof_tdata_cleanup()
2089 prof_thread_name_get(tsd_t *tsd) in prof_thread_name_get() argument
2093 tdata = prof_tdata_get(tsd, true); in prof_thread_name_get()
2121 prof_thread_name_set(tsd_t *tsd, const char *thread_name) in prof_thread_name_set() argument
2127 tdata = prof_tdata_get(tsd, true); in prof_thread_name_set()
2140 s = prof_thread_name_alloc(tsd_tsdn(tsd), thread_name); in prof_thread_name_set()
2145 idalloctm(tsd_tsdn(tsd), iealloc(tsd_tsdn(tsd), in prof_thread_name_set()
2155 prof_thread_active_get(tsd_t *tsd) in prof_thread_active_get() argument
2159 tdata = prof_tdata_get(tsd, true); in prof_thread_active_get()
2166 prof_thread_active_set(tsd_t *tsd, bool active) in prof_thread_active_set() argument
2170 tdata = prof_tdata_get(tsd, true); in prof_thread_active_set()
2258 prof_boot2(tsd_t *tsd) in prof_boot2() argument
2283 if (ckh_new(tsd, &bt2gctx, PROF_CKH_MINITEMS, prof_bt_hash, in prof_boot2()
2314 gctx_locks = (malloc_mutex_t *)base_alloc(tsd_tsdn(tsd), in prof_boot2()
2325 tdata_locks = (malloc_mutex_t *)base_alloc(tsd_tsdn(tsd), in prof_boot2()