Lines Matching full:tcb

179 static void *tls_get_addr_slow(struct tcb *, int, size_t, bool) __noinline;
5388 tls_get_addr_slow(struct tcb *tcb, int index, size_t offset, bool locked) in tls_get_addr_slow() argument
5394 dtv = tcb->tcb_dtv; in tls_get_addr_slow()
5411 dtv = tcb->tcb_dtv = newdtv; in tls_get_addr_slow()
5421 allocate_module_tls(tcb, index); in tls_get_addr_slow()
5429 tls_get_addr_common(struct tcb *tcb, int index, size_t offset) in tls_get_addr_common() argument
5433 dtv = tcb->tcb_dtv; in tls_get_addr_common()
5438 return (tls_get_addr_slow(tcb, index, offset, false)); in tls_get_addr_common()
5441 static struct tcb *
5445 return ((struct tcb *)((char *)tcbelm - tcb_list_entry_offset)); in tcb_from_tcb_list_entry()
5447 return ((struct tcb *)((char *)tcbelm + tcb_list_entry_offset)); in tcb_from_tcb_list_entry()
5452 tcb_list_entry_from_tcb(struct tcb *tcb) in tcb_list_entry_from_tcb() argument
5455 return ((struct tcb_list_entry *)((char *)tcb + tcb_list_entry_offset)); in tcb_list_entry_from_tcb()
5457 return ((struct tcb_list_entry *)((char *)tcb - tcb_list_entry_offset)); in tcb_list_entry_from_tcb()
5462 tcb_list_insert(struct tcb *tcb) in tcb_list_insert() argument
5466 tcbelm = tcb_list_entry_from_tcb(tcb); in tcb_list_insert()
5471 tcb_list_remove(struct tcb *tcb) in tcb_list_remove() argument
5475 tcbelm = tcb_list_entry_from_tcb(tcb); in tcb_list_remove()
5485 get_tls_block_ptr(void *tcb, size_t tcbsize) in get_tls_block_ptr() argument
5498 return ((char *)tcb - pre_size - extra_size); in get_tls_block_ptr()
5507 * it is based on tls_last_offset, and TLS offsets here are really TCB
5512 * the end of the TCB.
5520 struct tcb *tcb; in allocate_tls() local
5543 tcb = (struct tcb *)(tls_block + pre_size + extra_size); in allocate_tls()
5551 dtv = tcb->tcb_dtv; in allocate_tls()
5557 dtv->dtv_slots[i].dtvs_tls = (char *)tcb + in allocate_tls()
5565 tcb->tcb_dtv = dtv; in allocate_tls()
5574 addr = (char *)tcb + obj->tlsoffset; in allocate_tls()
5592 tcb_list_insert(tcb); in allocate_tls()
5593 return (tcb); in allocate_tls()
5597 free_tls(void *tcb, size_t tcbsize, size_t tcbalign __unused) in free_tls() argument
5604 tcb_list_remove(tcb); in free_tls()
5612 tlsstart = (uintptr_t)tcb + TLS_TCB_SIZE + post_size; in free_tls()
5613 tlsend = (uintptr_t)tcb + tls_static_space; in free_tls()
5615 dtv = ((struct tcb *)tcb)->tcb_dtv; in free_tls()
5624 free(get_tls_block_ptr(tcb, tcbsize)); in free_tls()
5641 struct tcb *tcb; in allocate_tls() local
5655 tcb = (struct tcb *)(tls_block + roundup(tls_static_space, ralign)); in allocate_tls()
5656 tcb->tcb_self = tcb; in allocate_tls()
5657 tcb->tcb_dtv = dtv; in allocate_tls()
5666 memcpy((char *)tcb - tls_static_space, in allocate_tls()
5674 olddtv = ((struct tcb *)oldtcb)->tcb_dtv; in allocate_tls()
5695 addr = (char *)tcb - obj->tlsoffset; in allocate_tls()
5706 tcb_list_insert(tcb); in allocate_tls()
5707 return (tcb); in allocate_tls()
5711 free_tls(void *tcb, size_t tcbsize __unused, size_t tcbalign) in free_tls() argument
5718 tcb_list_remove(tcb); in free_tls()
5729 dtv = ((struct tcb *)tcb)->tcb_dtv; in free_tls()
5730 tlsend = (uintptr_t)tcb; in free_tls()
5750 allocate_module_tls(struct tcb *tcb, int index) in allocate_module_tls() argument
5768 p = (char *)tcb + obj->tlsoffset; in allocate_module_tls()
5770 p = (char *)tcb - obj->tlsoffset; in allocate_module_tls()
5877 _rtld_free_tls(void *tcb, size_t tcbsize, size_t tcbalign) in _rtld_free_tls() argument
5882 free_tls(tcb, tcbsize, tcbalign); in _rtld_free_tls()
6225 struct tcb *tcb; in distribute_static_tls() local
6234 tcb = tcb_from_tcb_list_entry(tcbelm); in distribute_static_tls()
6236 tlsbase = (char *)tcb + obj->tlsoffset; in distribute_static_tls()
6238 tlsbase = (char *)tcb - obj->tlsoffset; in distribute_static_tls()