Lines Matching refs:tsd

1660 	struct tsd_thread *tsd;  in tsd_destroy()  local
1679 for (tsd = tsd_list; tsd; tsd = tsd->ts_next) { in tsd_destroy()
1683 if (key > tsd->ts_nkeys) in tsd_destroy()
1688 if (tsd->ts_value[k] && tsd_destructor[k]) in tsd_destroy()
1689 (*tsd_destructor[k])(tsd->ts_value[k]); in tsd_destroy()
1693 tsd->ts_value[k] = NULL; in tsd_destroy()
1731 struct tsd_thread *tsd = t->t_tsd; in tsd_agent_get() local
1736 if (key && tsd != NULL && key <= tsd->ts_nkeys) in tsd_agent_get()
1737 return (tsd->ts_value[key - 1]); in tsd_agent_get()
1753 struct tsd_thread *tsd = t->t_tsd; in tsd_agent_set() local
1760 if (tsd == NULL) in tsd_agent_set()
1761 tsd = t->t_tsd = kmem_zalloc(sizeof (*tsd), KM_SLEEP); in tsd_agent_set()
1762 if (key <= tsd->ts_nkeys) { in tsd_agent_set()
1763 tsd->ts_value[key - 1] = value; in tsd_agent_set()
1773 if (tsd->ts_nkeys == 0) { in tsd_agent_set()
1777 if ((tsd->ts_next = tsd_list) != NULL) in tsd_agent_set()
1778 tsd_list->ts_prev = tsd; in tsd_agent_set()
1779 tsd_list = tsd; in tsd_agent_set()
1785 tsd->ts_value = tsd_realloc(tsd->ts_value, in tsd_agent_set()
1786 tsd->ts_nkeys * sizeof (void *), in tsd_agent_set()
1788 tsd->ts_nkeys = key; in tsd_agent_set()
1789 tsd->ts_value[key - 1] = value; in tsd_agent_set()
1806 struct tsd_thread *tsd = curthread->t_tsd; in tsd_getcreate() local
1808 if (tsd == NULL) in tsd_getcreate()
1809 tsd = curthread->t_tsd = kmem_zalloc(sizeof (*tsd), KM_SLEEP); in tsd_getcreate()
1810 if (key && key <= tsd->ts_nkeys && (value = tsd->ts_value[key - 1])) in tsd_getcreate()
1828 struct tsd_thread *tsd = curthread->t_tsd; in tsd_exit() local
1830 if (tsd == NULL) in tsd_exit()
1833 if (tsd->ts_nkeys == 0) { in tsd_exit()
1834 kmem_free(tsd, sizeof (*tsd)); in tsd_exit()
1845 for (i = 0; i < tsd->ts_nkeys; i++) { in tsd_exit()
1846 if (tsd->ts_value[i] && tsd_destructor[i]) in tsd_exit()
1847 (*tsd_destructor[i])(tsd->ts_value[i]); in tsd_exit()
1848 tsd->ts_value[i] = NULL; in tsd_exit()
1854 if (tsd->ts_next) in tsd_exit()
1855 tsd->ts_next->ts_prev = tsd->ts_prev; in tsd_exit()
1856 if (tsd->ts_prev) in tsd_exit()
1857 tsd->ts_prev->ts_next = tsd->ts_next; in tsd_exit()
1858 if (tsd_list == tsd) in tsd_exit()
1859 tsd_list = tsd->ts_next; in tsd_exit()
1866 kmem_free(tsd->ts_value, tsd->ts_nkeys * sizeof (void *)); in tsd_exit()
1867 kmem_free(tsd, sizeof (struct tsd_thread)); in tsd_exit()