On Mon, 22 Dec 2003, Julian Elischer wrote: > > On Mon, 22 Dec 2003, Daniel Eischen wrote: > > > On Mon, 22 Dec 2003, Julian Elischer wrote: > > > > > > On Mon, 22 Dec 2003, Daniel Eischen wrote: > > > > > > > On Mon, 22 Dec 2003, Vladimir B. Grebenschikov wrote: > > > > > > > > > If libc_r mapped into libkse, like /etc/libmap.conf: > > > > > -- > > > > > libc_r.so.5 libkse.so.1 > > > > > libc_r.so libkse.so > > > > > -- > > > > > > > > > > Build of port avifile-0.7.38_1,2 coredumps while configure detects qt > > > > > library. With regular libc_r it builds as exprected. > > > > > > > > > # pkg_which /usr/X11R6/lib/libGL.so.1 > > > > > XFree86-libraries-4.3.0_6 nvidia-driver-1.0.4365_1 > > > > > > > > This is known problem; you can't use nvidia drivers with libthr > > > > or libkse. Nvidia will have to rebuild their drivers/openGL > > > > library to not use static ldt allocation. > > > > > > Actually they need to not allocate any LDTs but use the ones we have.. > > > > That's only when we support __thread properly. For FreeBSD, they currently > > assume that we don't and have some sort of hack to fudge up some LDTs. > > So it is easy enough for them to just use dynamic LDT allocation > > as a work around until __thread is fully supported. > > > > > unfortunatly, for that to work we need to leave 10 or so words free for > > > now at (%gs) as they do their own __thread implementation > > > but we could do that for now without too much pain.. > > > > They only want to build one driver/openGL library for both > > -current and -stable. I told them to use getosreldate() > > or just handle an invalid return when trying to use > > i386_set_ldt(LDT_AUTO_ALLOC, ...). > > I don't think that would work.. both we and they would be allocating > LDTs.. which one would be loaded? I also asked them to use %fs; I'm not sure if they will... > if tey just left the LDT alone they could use ours as long as we left > room for them to do so.. > they said they only need a few entries at the head.. > Alternatively thay can compile using __thread when we support it.. I don't want to add hacks for particular applications, especially when we're now mostly conformant with the TLS spec. Our %gs is is per-KSE, not per-thread, so leaving spares at the beginning of it probably wouldn't have the correct behavior. Our current (libkse i386) %gs usage is: /* * %gs points to a struct kcb. */ struct kcb { struct tcb *kcb_curtcb; struct kcb *kcb_self; /* self reference */ int kcb_ldt; struct kse *kcb_kse; struct kse_mailbox kcb_kmbx; }; struct tcb { struct tdv *tcb_tdv; struct pthread *tcb_thread; void *tcb_addr; /* allocated tcb address */ void *tcb_spare; /* align tcb_tmbx to 16 bytes */ struct kse_thr_mailbox tcb_tmbx; }; The dynamic thread vector (tcb_tdv) is supposed to point to the dynamic TLS but we don't currently allocate it. -- Dan EischenReceived on Mon Dec 22 2003 - 10:54:11 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:35 UTC