Lines Matching defs:tcb
91 * tcb->tcb_dtv.
138 * _rtld_tls_get_addr(tcb, idx, offset)
149 * just `struct tls_tcb *tcb'?
154 struct tls_tcb *tcb = tls;
160 dtv = tcb->tcb_dtv;
182 dtv = tcb->tcb_dtv = new_dtv;
188 dtv[idx] = _rtld_tls_module_allocate(tcb, idx);
210 struct tls_tcb *tcb;
221 tcb = _rtld_tls_allocate_locked();
223 __lwp_settcb(tcb);
225 _lwp_setprivate(tcb);
247 struct tls_tcb *tcb;
252 tcb = (struct tls_tcb *)p;
256 tcb = (struct tls_tcb *)p;
257 tcb->tcb_self = tcb;
259 dbg(("lwp %d tls tcb %p", _lwp_self(), tcb));
264 tcb->tcb_dtv = xcalloc(sizeof(*tcb->tcb_dtv) * (2 + _rtld_tls_max_index));
265 ++tcb->tcb_dtv; /* advance past DTV_MAX_INDEX */
266 SET_DTV_MAX_INDEX(tcb->tcb_dtv, _rtld_tls_max_index);
267 SET_DTV_GENERATION(tcb->tcb_dtv, _rtld_tls_dtv_generation);
285 tcb->tcb_dtv[obj->tlsindex] = q;
289 return tcb;
303 struct tls_tcb *tcb;
307 tcb = _rtld_tls_allocate_locked();
310 return tcb;
314 * _rtld_tls_free(tcb)
318 * Frees any TLS blocks for dynamically loaded objects that tcb's
319 * DTV points to, and frees tcb's DTV, and frees tcb.
322 _rtld_tls_free(struct tls_tcb *tcb)
331 p = (uint8_t *)tcb;
333 p = (uint8_t *)tcb - _rtld_tls_static_space;
337 max_index = DTV_MAX_INDEX(tcb->tcb_dtv);
339 if ((uint8_t *)tcb->tcb_dtv[i] < p ||
340 (uint8_t *)tcb->tcb_dtv[i] >= p_end)
341 xfree(tcb->tcb_dtv[i]);
343 xfree(tcb->tcb_dtv - 1); /* retreat back to DTV_MAX_INDEX */
350 * _rtld_tls_module_allocate(tcb, idx)
365 _rtld_tls_module_allocate(struct tls_tcb *tcb, size_t idx)
380 p = (uint8_t *)tcb + obj->tlsoffset + sizeof(struct tls_tcb);
382 p = (uint8_t *)tcb - obj->tlsoffset;
522 struct tls_tcb * const tcb = __lwp_gettcb_fast();
524 struct tls_tcb * const tcb = __lwp_getprivate_fast();
528 dtv = tcb->tcb_dtv;
540 return _rtld_tls_get_addr(tcb, idx, offset);