Lines Matching refs:tcb
179 static void *tls_get_addr_slow(struct tcb *, int, size_t, bool) __noinline;
5363 tls_get_addr_slow(struct tcb *tcb, int index, size_t offset, bool locked) in tls_get_addr_slow() argument
5369 dtv = tcb->tcb_dtv; in tls_get_addr_slow()
5386 dtv = tcb->tcb_dtv = newdtv; in tls_get_addr_slow()
5396 allocate_module_tls(tcb, index); in tls_get_addr_slow()
5404 tls_get_addr_common(struct tcb *tcb, int index, size_t offset) in tls_get_addr_common() argument
5408 dtv = tcb->tcb_dtv; in tls_get_addr_common()
5413 return (tls_get_addr_slow(tcb, index, offset, false)); in tls_get_addr_common()
5416 static struct tcb *
5420 return ((struct tcb *)((char *)tcbelm - tcb_list_entry_offset)); in tcb_from_tcb_list_entry()
5422 return ((struct tcb *)((char *)tcbelm + tcb_list_entry_offset)); in tcb_from_tcb_list_entry()
5427 tcb_list_entry_from_tcb(struct tcb *tcb) in tcb_list_entry_from_tcb() argument
5430 return ((struct tcb_list_entry *)((char *)tcb + tcb_list_entry_offset)); in tcb_list_entry_from_tcb()
5432 return ((struct tcb_list_entry *)((char *)tcb - tcb_list_entry_offset)); in tcb_list_entry_from_tcb()
5437 tcb_list_insert(struct tcb *tcb) in tcb_list_insert() argument
5441 tcbelm = tcb_list_entry_from_tcb(tcb); in tcb_list_insert()
5446 tcb_list_remove(struct tcb *tcb) in tcb_list_remove() argument
5450 tcbelm = tcb_list_entry_from_tcb(tcb); in tcb_list_remove()
5460 get_tls_block_ptr(void *tcb, size_t tcbsize) in get_tls_block_ptr() argument
5473 return ((char *)tcb - pre_size - extra_size); in get_tls_block_ptr()
5495 struct tcb *tcb; in allocate_tls() local
5518 tcb = (struct tcb *)(tls_block + pre_size + extra_size); in allocate_tls()
5526 dtv = tcb->tcb_dtv; in allocate_tls()
5532 dtv->dtv_slots[i].dtvs_tls = (char *)tcb + in allocate_tls()
5540 tcb->tcb_dtv = dtv; in allocate_tls()
5549 addr = (char *)tcb + obj->tlsoffset; in allocate_tls()
5566 tcb_list_insert(tcb); in allocate_tls()
5567 return (tcb); in allocate_tls()
5571 free_tls(void *tcb, size_t tcbsize, size_t tcbalign __unused) in free_tls() argument
5578 tcb_list_remove(tcb); in free_tls()
5586 tlsstart = (uintptr_t)tcb + TLS_TCB_SIZE + post_size; in free_tls()
5587 tlsend = (uintptr_t)tcb + tls_static_space; in free_tls()
5589 dtv = ((struct tcb *)tcb)->tcb_dtv; in free_tls()
5598 free(get_tls_block_ptr(tcb, tcbsize)); in free_tls()
5615 struct tcb *tcb; in allocate_tls() local
5629 tcb = (struct tcb *)(tls_block + roundup(tls_static_space, ralign)); in allocate_tls()
5630 tcb->tcb_self = tcb; in allocate_tls()
5631 tcb->tcb_dtv = dtv; in allocate_tls()
5640 memcpy((char *)tcb - tls_static_space, in allocate_tls()
5648 olddtv = ((struct tcb *)oldtcb)->tcb_dtv; in allocate_tls()
5669 addr = (char *)tcb - obj->tlsoffset; in allocate_tls()
5680 tcb_list_insert(tcb); in allocate_tls()
5681 return (tcb); in allocate_tls()
5685 free_tls(void *tcb, size_t tcbsize __unused, size_t tcbalign) in free_tls() argument
5692 tcb_list_remove(tcb); in free_tls()
5703 dtv = ((struct tcb *)tcb)->tcb_dtv; in free_tls()
5704 tlsend = (uintptr_t)tcb; in free_tls()
5724 allocate_module_tls(struct tcb *tcb, int index) in allocate_module_tls() argument
5742 p = (char *)tcb + obj->tlsoffset; in allocate_module_tls()
5744 p = (char *)tcb - obj->tlsoffset; in allocate_module_tls()
5851 _rtld_free_tls(void *tcb, size_t tcbsize, size_t tcbalign) in _rtld_free_tls() argument
5856 free_tls(tcb, tcbsize, tcbalign); in _rtld_free_tls()
6198 struct tcb *tcb; in distribute_static_tls() local
6207 tcb = tcb_from_tcb_list_entry(tcbelm); in distribute_static_tls()
6209 tlsbase = (char *)tcb + obj->tlsoffset; in distribute_static_tls()
6211 tlsbase = (char *)tcb - obj->tlsoffset; in distribute_static_tls()