Allows calls to pthread_sigmask before init
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 29 May 2015 16:20:51 +0000 (12:20 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 4 Jun 2015 13:40:33 +0000 (09:40 -0400)
commiteabdd9e43d44aa9bef12210f0f9b1dfd32963142
tree7c69a5f78d14c7a2e89ad3726998902c5e02d9dc
parent6486ea2483c3fff91831a723578249a5e2e0d5d8
Allows calls to pthread_sigmask before init

Some libraries that ld loads make pthread calls in their initialization.  This
patch tracks the changes made to the sigmask, and applies it when the 2LS is up
and running.

One issue is that the sigmask is for the pthread only, and not the entire
process.  Hopefully that's what these libraries wanted.  Maybe it isn't.

Another approach would be to find a safe spot in ld and run vcore_event_init()
from there, such that we get the slim 2LS init done very early.  Then we add a
2LS op for the slim-init (e.g. pth_slim_init), which does the basics to track
the pthread as thread0, but doesn't turn us into an MCP.  This is doable in
part since the specific 2LS is determined statically, for instance when you
link against -lpthread.

If we do the latter approach, we will still need to call out from the
application's _start for staticly linked applications.
user/pthread/pthread.c