Implementing TLS: step 1
Daniel Eischen
eischen at vigrid.com
Thu Jun 19 22:08:53 PDT 2003
On Thu, 19 Jun 2003, Marcel Moolenaar wrote:
> On Thu, Jun 19, 2003 at 11:57:04PM -0400, Daniel Eischen wrote:
> >
> > I'm not too sure about the kernel code. If you have KSEs
> > working for libthr, then I assume there is very little extra
> > kernel code needed. You do need to have get_mcontext() and
> > set_mcontext() implemented in machdep.c, though. It looks
> > like you do (although nothing is done with clear_ret in
> > get_mcontext()).
>
> Yes, {g|s}et_mcontext() are implemented, as is makecontext(3).
>
> We cannot do anything with clear_ret, because it's based on
> assumptions that don't hold in ia64.
How do return values from syscalls get passed back?
> BTW: there's no race that can't be plugged if TP doesn't point
> to the mailbox. All we need is an atomic compare-exchange and
> a retry loop...
Ok, the only problem might be something being deallocated
out from under you. For instance, a KSE goes away (gets
deallocated) while your thread is continued on another
KSE and you are still dereferencing something that may no
longer be valid.
--
Dan Eischen
More information about the freebsd-threads
mailing list