Lines Matching defs:tcb

88  *	tcb->tcb_dtv.
135 * _rtld_tls_get_addr(tcb, idx, offset)
146 * just `struct tls_tcb *tcb'?
151 struct tls_tcb *tcb = tls;
157 dtv = tcb->tcb_dtv;
179 dtv = tcb->tcb_dtv = new_dtv;
185 dtv[idx] = _rtld_tls_module_allocate(tcb, idx);
207 struct tls_tcb *tcb;
218 tcb = _rtld_tls_allocate_locked();
220 __lwp_settcb(tcb);
222 _lwp_setprivate(tcb);
244 struct tls_tcb *tcb;
249 tcb = (struct tls_tcb *)p;
253 tcb = (struct tls_tcb *)p;
254 tcb->tcb_self = tcb;
256 dbg(("lwp %d tls tcb %p", _lwp_self(), tcb));
261 tcb->tcb_dtv = xcalloc(sizeof(*tcb->tcb_dtv) * (2 + _rtld_tls_max_index));
262 ++tcb->tcb_dtv; /* advance past DTV_MAX_INDEX */
263 SET_DTV_MAX_INDEX(tcb->tcb_dtv, _rtld_tls_max_index);
264 SET_DTV_GENERATION(tcb->tcb_dtv, _rtld_tls_dtv_generation);
278 tcb->tcb_dtv[obj->tlsindex] = q;
282 return tcb;
296 struct tls_tcb *tcb;
300 tcb = _rtld_tls_allocate_locked();
303 return tcb;
307 * _rtld_tls_free(tcb)
311 * Frees any TLS blocks for dynamically loaded objects that tcb's
312 * DTV points to, and frees tcb's DTV, and frees tcb.
315 _rtld_tls_free(struct tls_tcb *tcb)
324 p = (uint8_t *)tcb;
326 p = (uint8_t *)tcb - _rtld_tls_static_space;
330 max_index = DTV_MAX_INDEX(tcb->tcb_dtv);
332 if ((uint8_t *)tcb->tcb_dtv[i] < p ||
333 (uint8_t *)tcb->tcb_dtv[i] >= p_end)
334 xfree(tcb->tcb_dtv[i]);
336 xfree(tcb->tcb_dtv - 1); /* retreat back to DTV_MAX_INDEX */
343 * _rtld_tls_module_allocate(tcb, idx)
358 _rtld_tls_module_allocate(struct tls_tcb *tcb, size_t idx)
373 p = (uint8_t *)tcb + obj->tlsoffset + sizeof(struct tls_tcb);
375 p = (uint8_t *)tcb - obj->tlsoffset;
513 struct tls_tcb * const tcb = __lwp_gettcb_fast();
515 struct tls_tcb * const tcb = __lwp_getprivate_fast();
519 dtv = tcb->tcb_dtv;
531 return _rtld_tls_get_addr(tcb, idx, offset);