Lines Matching refs:tsd

1493 	struct tsd_thread *tsd;  in tsd_destroy()  local
1512 for (tsd = tsd_list; tsd; tsd = tsd->ts_next) { in tsd_destroy()
1516 if (key > tsd->ts_nkeys) in tsd_destroy()
1521 if (tsd->ts_value[k] && tsd_destructor[k]) in tsd_destroy()
1522 (*tsd_destructor[k])(tsd->ts_value[k]); in tsd_destroy()
1526 tsd->ts_value[k] = NULL; in tsd_destroy()
1564 struct tsd_thread *tsd = t->t_tsd; in tsd_agent_get() local
1569 if (key && tsd != NULL && key <= tsd->ts_nkeys) in tsd_agent_get()
1570 return (tsd->ts_value[key - 1]); in tsd_agent_get()
1586 struct tsd_thread *tsd = t->t_tsd; in tsd_agent_set() local
1593 if (tsd == NULL) in tsd_agent_set()
1594 tsd = t->t_tsd = kmem_zalloc(sizeof (*tsd), KM_SLEEP); in tsd_agent_set()
1595 if (key <= tsd->ts_nkeys) { in tsd_agent_set()
1596 tsd->ts_value[key - 1] = value; in tsd_agent_set()
1606 if (tsd->ts_nkeys == 0) { in tsd_agent_set()
1610 if ((tsd->ts_next = tsd_list) != NULL) in tsd_agent_set()
1611 tsd_list->ts_prev = tsd; in tsd_agent_set()
1612 tsd_list = tsd; in tsd_agent_set()
1618 tsd->ts_value = tsd_realloc(tsd->ts_value, in tsd_agent_set()
1619 tsd->ts_nkeys * sizeof (void *), in tsd_agent_set()
1621 tsd->ts_nkeys = key; in tsd_agent_set()
1622 tsd->ts_value[key - 1] = value; in tsd_agent_set()
1639 struct tsd_thread *tsd = curthread->t_tsd; in tsd_getcreate() local
1641 if (tsd == NULL) in tsd_getcreate()
1642 tsd = curthread->t_tsd = kmem_zalloc(sizeof (*tsd), KM_SLEEP); in tsd_getcreate()
1643 if (key && key <= tsd->ts_nkeys && (value = tsd->ts_value[key - 1])) in tsd_getcreate()
1661 struct tsd_thread *tsd = curthread->t_tsd; in tsd_exit() local
1663 if (tsd == NULL) in tsd_exit()
1666 if (tsd->ts_nkeys == 0) { in tsd_exit()
1667 kmem_free(tsd, sizeof (*tsd)); in tsd_exit()
1678 for (i = 0; i < tsd->ts_nkeys; i++) { in tsd_exit()
1679 if (tsd->ts_value[i] && tsd_destructor[i]) in tsd_exit()
1680 (*tsd_destructor[i])(tsd->ts_value[i]); in tsd_exit()
1681 tsd->ts_value[i] = NULL; in tsd_exit()
1687 if (tsd->ts_next) in tsd_exit()
1688 tsd->ts_next->ts_prev = tsd->ts_prev; in tsd_exit()
1689 if (tsd->ts_prev) in tsd_exit()
1690 tsd->ts_prev->ts_next = tsd->ts_next; in tsd_exit()
1691 if (tsd_list == tsd) in tsd_exit()
1692 tsd_list = tsd->ts_next; in tsd_exit()
1699 kmem_free(tsd->ts_value, tsd->ts_nkeys * sizeof (void *)); in tsd_exit()
1700 kmem_free(tsd, sizeof (struct tsd_thread)); in tsd_exit()