Uthreads do not require TLS
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 30 Jul 2013 02:11:03 +0000 (19:11 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 30 Jul 2013 18:23:03 +0000 (11:23 -0700)
By default, individual uthreads will not have their own TLS; they will piggyback
off of their vcore's TLS.  The uthread library can handle individual
uthreads having TLS.

Note that thread0 (from glibc) will have TLS, no matter what.   FYI,
thread0's TLS gets used at exit, and needs to be the same as when the
program started (C++ programs, fluidanimate at least).

2LSs choose whether or not their specific uthreads have TLS.  To be
somewhat compatible, pthreads will have them by default.  If you're app
doesn't need TLS, call pthread_need_tls(FALSE), preferably before call
pthread_create().

For reference, this lowers the latency of the context switch (via the
untuned pthread_test 100 100000 1) from ~360ns -> 194ns.  That includes
3 mcs locks in the 2LS, which we could minimize.


No differences found