Remove vcoreid from get/set_tls_desc
authorKevin Klues <klueska@cs.berkeley.edu>
Sat, 18 Jul 2015 15:56:37 +0000 (08:56 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 22 Jul 2015 15:08:33 +0000 (11:08 -0400)
commit857d5a50204411fc3a13f5e903cef154914e097f
tree71c6b9b7b21a2069ee4559261b9dfe70334ad923
parent72ce49e1d725986a7f2e799203138b4a3d42d0f1
Remove vcoreid from get/set_tls_desc

The presence of vcoreid as a parameter to these functions is remnants of
the old i386 way of using the LDT for TLS management.  Moreover, we only
really passed vcoreid in the first place because we were trying to avoid
a call to sys_getvcoreid() (a very antiquated way of getting the vcore
id).  These were the days before we standardized on *always* having
__vcoreid available in everyone's TLS (including uthreads).

Nowadays passing this parameter is completely unnecessary (and actually
meaningless on x86_64 and riscv). It is actually just ignored if you
pass any value in at all. Removing it for these systems is completely
benign. For i386 (which we don't even really support anymore), it is
sufficient to just call vcore_id() internally and use that to index into
the proper ldt.  In the (near) future, we should consider removing i386
support completely. I leave it here now for reference.

This change has been possible for quite some time, but was finally
motivated by the desire to get the tls_desc of the main thread in an
early SCP before any notion of vcores or vcore management has been set
up. In a future commit, we will use this to temporarily save off the
main thread's tls_desc during vcore initialization itself.
It would probably have been OK to just assume vcoreid 0 for the main
thread (especially since passing it on x86_64 was completely benign),
but it is an unecessary parameter to begin with, and better to just
clean things up the right way as we move forward.

[brho: added a void to a func definition ]
12 files changed:
tests/microb_test.c
tests/old/eth_audio.c
tests/old/msr_get_cores.c
tests/old/msr_get_singlecore.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/i386/tls.h
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/init.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/riscv/tls.h
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/sys/vcore-tls.h
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/vcore-tls.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/x86_64/tls.h
user/parlib/include/vcore.h
user/parlib/uthread.c