patch for %gs saving
Daniel Eischen
eischen at pcnet1.pcnet.com
Thu Apr 10 23:02:10 PDT 2003
On Thu, 10 Apr 2003, Peter Wemm wrote:
> "David Xu" wrote:
> > Here is the patch for kernel to save %gs,
> > it works well on my machine.
> > http://people.freebsd.org/~davidxu/i386_gs.diff
> > Daniel, is this the reason in your libpthread
> > patch that doesn't use getcontext syscall ?
>
> To put some background on the issue, there is a reason why we did not
> do this. %gs is not used by the kernel, so it does not normally need to
> be saved and restored on every trap into the kernel. Setting a segment
> register is Really Slow - measured in hundreds of clock cycles.
>
> So, we normally only touch %gs when we context switch to a different process
> that may have a different %gs. Or when one of the context syscalls wants
> it changed. We cannot avoid touching %fs because we use it for kernel
> private data. But if it wasn't for that, we wouldn't be touching
> %fs for regular traps/syscalls/etc either.
>
> Bruce Evans understands this better than I do, I would suggest not making
> this change without talking about it with him first.
BTW, it's not really a big deal for the UTS to restore %gs
(or probably whatever it ends up being on other archs) before
continuing a thread.
--
Dan Eischen
More information about the freebsd-threads
mailing list