NVIDIA and TLS
Gareth Hughes
gareth at nvidia.com
Tue Jun 17 02:13:06 PDT 2003
Terry Lambert wrote:
>
> Right now, he's said that he can't use %fs, because he has a
> version of WINE that uses OpenGL to implement it's video, and
> the threads people have said that he can't use %gs because it
> points to a per-KSE value, not a per thread value, and there
> are potentially many threads associated with each KSE, so it's
> no good for TLS, only for KSELS.
All versions of Wine use OpenGL for 3D graphics.
> I've suggested that he use the compiler flags to reserve another
> *different* register (not %fs and not %gs) for his purpose; the
> compiler has explicit support for this. If he is wiling to burn
> a register in order to get this functionality, it should be one
> that's normally allocated for user programs to burn anyway.
We're not willing to burn a register. Our libraries are not PIC
for the same reason.
> Julian has pointed out that the TLS data should probably be cached
> following a return from a context switch as a result of the user
> space threads scheduler, if there is one, scheduling the thread to
> run; so far, it seems that Gareth has mistaken what Julian meant
> by this (that the reload happen high up in the OpenGL code, using
> an explicit call, to do the register switch, so that it's available
> lower down; this would work with the %fs approach, without breaking
> WINE).
I must be completely misunderstanding you. What do you mean by
"high level" and "low level" OpenGL code?
> In addition, it seems that Gareth's Linux approach is assuming that
> a thread which is involuntarily context switch will be run again,
> when the next quantum becomes available. This is an invalid
> assumption for libkse (though it's currently hacked, locally, by
> most people to keep non-strict POSIX applications happy), and
> could be an invalid assumption in Linux and libthr in FreeBSD,
> should the scheduler code change in the future to recalculate
> priority prior to giving the quantum to a particular thread.
Why do you say that?
--
Gareth Hughes (gareth at nvidia.com)
OpenGL Developer, NVIDIA Corporation
More information about the freebsd-threads
mailing list