tcb
struct tls_tcb *tcb;
bytes = data_size + sizeof(*tcb) + 3 * sizeof(*dtv);
tcb = mmap((void *)1, bytes,
tcb = malloc(data_size + sizeof(*tcb) + 3 * sizeof(*dtv));
tcb = (struct tls_tcb *)((char *)tcb + data_size);
dtv = (Elf_Addr *)(tcb + 1);
memset(tcb, 0, sizeof(*tcb));
tcb->tcb_self = tcb;
tcb->tcb_dtv = dtv;
dtv[2] = (Elf_Addr)((char *)tcb - tls_static_space);
memcpy((char *)tcb - tls_static_space,
memset((char *)tcb - tls_static_space + tls_init_size,
initial_tcb = tcb;
tls_set_tcb(tcb);
return (tcb);
__libc_free_tls(struct tls_tcb *tcb __unused)
struct tls_tcb *tcb;
tcb = _libc_allocate_tls();
tls_set_tcb(tcb);
return(tcb);
struct tls_tcb *tcb;
tcb = _rtld_allocate_tls();
return(tcb);
void __libc_free_tls(struct tls_tcb *tcb);
__libc_tls_get_addr_tcb(struct tls_tcb *tcb __unused, void *got_ptr __unused)
__libc_free_tls(struct tls_tcb *tcb)
if (tcb == initial_tcb) {
free((char *)tcb - data_size);
void _tcb_dtor(struct tls_tcb *tcb);
tls_set_tcb(curthread->tcb);
struct tls_tcb *tcb;
tcb = tls_get_tcb();
tcb = _libc_allocate_tls();
if (tcb == NULL)
tcb->tcb_pthread = thread;
return (tcb);
_tcb_dtor(struct tls_tcb *tcb)
_rtld_free_tls(tcb);
tlsbase = (char *)td->tcb - offset;
tls_set_tcb(curthread->tcb);
struct tls_tcb *tcb;
tcb = _tcb_ctor(thread, 0 /* not initial tls */);
tcb = _tcb_ctor(thread, 1 /* initial tls */);
if (tcb != NULL) {
thread->tcb = tcb;
_tcb_dtor(thread->tcb);
_tcb_dtor(thread->tcb);
thread->tcb = NULL;
struct tls_tcb *tcb;
int _thread_off_tcb = offsetof(struct __pthread_s, tcb);
struct tls_tcb *tcb;
tcb = malloc(data_size + sizeof(*tcb));
tcb = (void *)((char *)tcb + data_size); /* actual tcb location */
tcb->tcb_self = tcb;
tcb->tcb_dtv = dtv;
tcb->tcb_pthread = NULL;
addr = (Elf_Addr)tcb - obj->tlsoffset;
return(tcb);
free_tls(struct tls_tcb *tcb)
dtv = tcb->tcb_dtv;
tls_end = (Elf_Addr)tcb;
tls_start = (Elf_Addr)tcb - data_size;
_rtld_free_tls(struct tls_tcb *tcb)
free_tls(tcb);
struct tls_tcb *tcb;
tcb = tls_get_tcb();
return tls_get_addr_common((Elf_Addr **)&tcb->tcb_dtv, ti->ti_module, ti->ti_offset);
__tls_get_addr_tcb(struct tls_tcb *tcb, tls_index *ti)
return tls_get_addr_common((Elf_Addr **)&tcb->tcb_dtv, ti->ti_module, ti->ti_offset);
extern void *__tls_get_addr_tcb(struct tls_tcb *tcb, tls_index *ti);
tls_set_tcb(struct tls_tcb *tcb)
info.base = tcb;
struct tcb target[MAX_TARGET];
struct tcb;
typedef struct tcb * tcb_p;
(offsetof(struct tcb ,tinfo)
(offsetof(struct tcb, tinfo)
struct tcpcb tcb;
tp = &it->tcb;