Home | History | Annotate | Download | only in src

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)
210 tdata = prof_tdata_get(tsd, true);
216 malloc_mutex_lock(tsd_tsdn(tsd), tctx->tdata->lock);
218 if (prof_tctx_should_destroy(tsd_tsdn(tsd), tctx))
219 prof_tctx_destroy(tsd, tctx);
221 malloc_mutex_unlock(tsd_tsdn(tsd), tctx->tdata->lock);
244 prof_free_sampled_object(tsd_t *tsd, size_t usize, prof_tctx_t *tctx)
247 malloc_mutex_lock(tsd_tsdn(tsd), tctx->tdata->lock);
253 if (prof_tctx_should_destroy(tsd_tsdn(tsd), tctx))
254 prof_tctx_destroy(tsd, tctx);
256 malloc_mutex_unlock(tsd_tsdn(tsd), tctx->tdata->lock);
270 prof_enter(tsd_t *tsd, prof_tdata_t *tdata)
274 assert(tdata == prof_tdata_get(tsd, false));
281 malloc_mutex_lock(tsd_tsdn(tsd), &bt2gctx_mtx);
285 prof_leave(tsd_t *tsd, prof_tdata_t *tdata)
289 assert(tdata == prof_tdata_get(tsd, false));
291 malloc_mutex_unlock(tsd_tsdn(tsd), &bt2gctx_mtx);
304 prof_idump(tsd_tsdn(tsd));
306 prof_gdump(tsd_tsdn(tsd));
576 prof_gctx_try_destroy(tsd_t *tsd, prof_tdata_t *tdata_self, prof_gctx_t *gctx,
589 prof_enter(tsd, tdata_self);
590 malloc_mutex_lock(tsd_tsdn(tsd), gctx->lock);
594 if (ckh_remove(tsd, &bt2gctx, &gctx->bt, NULL, NULL))
596 prof_leave(tsd, tdata_self);
598 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock);
599 idalloctm(tsd_tsdn(tsd), gctx, NULL, true, true);
606 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock);
607 prof_leave(tsd, tdata_self);
640 prof_tctx_destroy(tsd_t *tsd, prof_tctx_t *tctx)
646 malloc_mutex_assert_owner(tsd_tsdn(tsd), tctx->tdata->lock);
654 ckh_remove(tsd, &tdata->bt2tctx, &gctx->bt, NULL, NULL);
655 destroy_tdata = prof_tdata_should_destroy(tsd_tsdn(tsd), tdata, false);
656 malloc_mutex_unlock(tsd_tsdn(tsd), tdata->lock);
658 malloc_mutex_lock(tsd_tsdn(tsd), gctx->lock);
698 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock);
700 prof_gctx_try_destroy(tsd, prof_tdata_get(tsd, false), gctx,
704 malloc_mutex_assert_not_owner(tsd_tsdn(tsd), tctx->tdata->lock);
707 prof_tdata_destroy(tsd, tdata, false);
710 idalloctm(tsd_tsdn(tsd), tctx, NULL, true, true);
714 prof_lookup_global(tsd_t *tsd, prof_bt_t *bt, prof_tdata_t *tdata,
727 prof_enter(tsd, tdata);
730 gctx.p = prof_gctx_create(tsd_tsdn(tsd), bt);
732 prof_leave(tsd, tdata);
736 if (ckh_insert(tsd, &bt2gctx, btkey.v, gctx.v)) {
738 prof_leave(tsd, tdata);
739 idalloctm(tsd_tsdn(tsd), gctx.v, NULL, true, true);
748 malloc_mutex_lock(tsd_tsdn(tsd), gctx.p->lock);
750 malloc_mutex_unlock(tsd_tsdn(tsd), gctx.p->lock);
753 prof_leave(tsd, tdata);
762 prof_lookup(tsd_t *tsd, prof_bt_t *bt)
773 tdata = prof_tdata_get(tsd, false);
777 malloc_mutex_lock(tsd_tsdn(tsd), tdata->lock);
781 malloc_mutex_unlock(tsd_tsdn(tsd), tdata->lock);
791 if (prof_lookup_global(tsd, bt, tdata, &btkey, &gctx,
796 ret.v = iallocztm(tsd_tsdn(tsd), sizeof(prof_tctx_t),
798 arena_ichoose(tsd, NULL), true);
801 prof_gctx_try_destroy(tsd, tdata, gctx, tdata);
812 malloc_mutex_lock(tsd_tsdn(tsd), tdata->lock);
813 error = ckh_insert(tsd, &tdata->bt2tctx, btkey, ret.v);
814 malloc_mutex_unlock(tsd_tsdn(tsd), tdata->lock);
817 prof_gctx_try_destroy(tsd, tdata, gctx, tdata);
818 idalloctm(tsd_tsdn(tsd), ret.v, NULL, true, true);
821 malloc_mutex_lock(tsd_tsdn(tsd), gctx->lock);
825 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock);
917 tsd_t *tsd;
920 tsd = tsd_fetch();
921 tdata = prof_tdata_get(tsd, false);
925 malloc_mutex_lock(tsd_tsdn(tsd), &bt2gctx_mtx);
927 malloc_mutex_unlock(tsd_tsdn(tsd), &bt2gctx_mtx);
1212 prof_gctx_finish(tsd_t *tsd, prof_gctx_tree_t *gctxs)
1214 prof_tdata_t *tdata = prof_tdata_get(tsd, false);
1225 malloc_mutex_lock(tsd_tsdn(tsd), gctx->lock);
1234 (void *)tsd_tsdn(tsd));
1240 idalloctm(tsd_tsdn(tsd), to_destroy,
1249 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock);
1250 prof_gctx_try_destroy(tsd, tdata, gctx, tdata);
1252 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock);
1545 prof_dump(tsd_t *tsd, bool propagate_err, const char *filename, bool leakcheck)
1560 tdata = prof_tdata_get(tsd, true);
1564 malloc_mutex_lock(tsd_tsdn(tsd), &prof_dump_mtx);
1565 prof_enter(tsd, tdata);
1573 prof_dump_gctx_prep(tsd_tsdn(tsd), gctx.p, &gctxs);
1579 prof_tdata_merge_iter_arg.tsdn = tsd_tsdn(tsd);
1581 malloc_mutex_lock(tsd_tsdn(tsd), &tdatas_mtx);
1584 malloc_mutex_unlock(tsd_tsdn(tsd), &tdatas_mtx);
1587 prof_gctx_merge_iter_arg.tsdn = tsd_tsdn(tsd);
1592 prof_leave(tsd, tdata);
1599 if (prof_dump_header(tsd_tsdn(tsd), propagate_err,
1604 prof_gctx_dump_iter_arg.tsdn = tsd_tsdn(tsd);
1617 prof_gctx_finish(tsd, &gctxs);
1618 malloc_mutex_unlock(tsd_tsdn(tsd), &prof_dump_mtx);
1628 prof_gctx_finish(tsd, &gctxs);
1629 malloc_mutex_unlock(tsd_tsdn(tsd), &prof_dump_mtx);
1658 tsd_t *tsd;
1667 tsd = tsd_fetch();
1669 malloc_mutex_lock(tsd_tsdn(tsd), &prof_dump_seq_mtx);
1671 malloc_mutex_unlock(tsd_tsdn(tsd), &prof_dump_seq_mtx);
1672 prof_dump(tsd, false, filename, opt_prof_leak);
1678 tsd_t *tsd;
1685 tsd = tsdn_tsd(tsdn);
1686 tdata = prof_tdata_get(tsd, false);
1696 malloc_mutex_lock(tsd_tsdn(tsd), &prof_dump_seq_mtx);
1699 malloc_mutex_unlock(tsd_tsdn(tsd), &prof_dump_seq_mtx);
1700 prof_dump(tsd, false, filename, false);
1705 prof_mdump(tsd_t *tsd, const char *filename)
1718 malloc_mutex_lock(tsd_tsdn(tsd), &prof_dump_seq_mtx);
1721 malloc_mutex_unlock(tsd_tsdn(tsd), &prof_dump_seq_mtx);
1724 return (prof_dump(tsd, true, filename, false));
1730 tsd_t *tsd;
1737 tsd = tsdn_tsd(tsdn);
1738 tdata = prof_tdata_get(tsd, false);
1752 prof_dump(tsd, false, filename, false);
1793 prof_tdata_init_impl(tsd_t *tsd, uint64_t thr_uid, uint64_t thr_discrim,
1801 tdata = (prof_tdata_t *)iallocztm(tsd_tsdn(tsd), sizeof(prof_tdata_t),
1815 if (ckh_new(tsd, &tdata->bt2tctx, PROF_CKH_MINITEMS, prof_bt_hash,
1817 idalloctm(tsd_tsdn(tsd), tdata, NULL, true, true);
1831 malloc_mutex_lock(tsd_tsdn(tsd), &tdatas_mtx);
1833 malloc_mutex_unlock(tsd_tsdn(tsd), &tdatas_mtx);
1839 prof_tdata_init(tsd_t *tsd)
1842 return (prof_tdata_init_impl(tsd, prof_thr_uid_alloc(tsd_tsdn(tsd)), 0,
1843 NULL, prof_thread_active_init_get(tsd_tsdn(tsd))));
1868 prof_tdata_destroy_locked(tsd_t *tsd, prof_tdata_t *tdata,
1872 malloc_mutex_assert_owner(tsd_tsdn(tsd), &tdatas_mtx);
1879 idalloctm(tsd_tsdn(tsd), tdata->thread_name, NULL, true, true);
1880 ckh_delete(tsd, &tdata->bt2tctx);
1881 idalloctm(tsd_tsdn(tsd), tdata, NULL, true, true);
1885 prof_tdata_destroy(tsd_t *tsd, prof_tdata_t *tdata, bool even_if_attached)
1888 malloc_mutex_lock(tsd_tsdn(tsd), &tdatas_mtx);
1889 prof_tdata_destroy_locked(tsd, tdata, even_if_attached);
1890 malloc_mutex_unlock(tsd_tsdn(tsd), &tdatas_mtx);
1894 prof_tdata_detach(tsd_t *tsd, prof_tdata_t *tdata)
1898 malloc_mutex_lock(tsd_tsdn(tsd), tdata->lock);
1900 destroy_tdata = prof_tdata_should_destroy(tsd_tsdn(tsd), tdata,
1908 tsd_prof_tdata_set(tsd, NULL);
1911 malloc_mutex_unlock(tsd_tsdn(tsd), tdata->lock);
1913 prof_tdata_destroy(tsd, tdata, true);
1917 prof_tdata_reinit(tsd_t *tsd, prof_tdata_t *tdata)
1922 prof_thread_name_alloc(tsd_tsdn(tsd), tdata->thread_name) : NULL;
1925 prof_tdata_detach(tsd, tdata);
1926 return (prof_tdata_init_impl(tsd, thr_uid, thr_discrim, thread_name,
1956 prof_reset(tsd_t *tsd, size_t lg_sample)
1962 malloc_mutex_lock(tsd_tsdn(tsd), &prof_dump_mtx);
1963 malloc_mutex_lock(tsd_tsdn(tsd), &tdatas_mtx);
1970 prof_tdata_reset_iter, (void *)tsd);
1973 prof_tdata_destroy_locked(tsd, to_destroy, false);
1978 malloc_mutex_unlock(tsd_tsdn(tsd), &tdatas_mtx);
1979 malloc_mutex_unlock(tsd_tsdn(tsd), &prof_dump_mtx);
1983 prof_tdata_cleanup(tsd_t *tsd)
1990 tdata = tsd_prof_tdata_get(tsd);
1992 prof_tdata_detach(tsd, tdata);
2019 prof_thread_name_get(tsd_t *tsd)
2023 tdata = prof_tdata_get(tsd, true);
2051 prof_thread_name_set(tsd_t *tsd, const char *thread_name)
2057 tdata = prof_tdata_get(tsd, true);
2070 tsd), thread_name);
2075 idalloctm(tsd_tsdn(tsd), tdata->thread_name, NULL, true, true);
2084 prof_thread_active_get(tsd_t *tsd)
2088 tdata = prof_tdata_get(tsd, true);
2095 prof_thread_active_set(tsd_t *tsd, bool active)
2099 tdata = prof_tdata_get(tsd, true);
2189 prof_boot2(tsd_t *tsd)
2215 if (ckh_new(tsd, &bt2gctx, PROF_CKH_MINITEMS, prof_bt_hash,
2246 gctx_locks = (malloc_mutex_t *)base_alloc(tsd_tsdn(tsd),
2256 tdata_locks = (malloc_mutex_t *)base_alloc(tsd_tsdn(tsd),