__pthread_handle_pending_posix_signals() changes
authorKevin Klues <klueska@cs.berkeley.edu>
Sat, 23 Aug 2014 21:00:16 +0000 (14:00 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Sat, 23 Aug 2014 21:09:56 +0000 (14:09 -0700)
commit1beda89011ef1b37011063a93f5ccd4230a9c38c
treec2710e0f42a3b0bf7f8bc17624f42f9430276dc0
parentd7119757ec7d0a8e5357afcf8444f33c3d9e076a
__pthread_handle_pending_posix_signals() changes

Don't call run_uthread() directly iniside
__pthread_handle_pending_posix_signals().  Actually don't even call this
function 'handle_pending_posix_signals' at all.  Instead call it
'prep_for_pending_posix_signal', and just prep the pthread so it will be
restarted inside its signal handler context next time it is run.
It's semantically identical to what we had before, but it's a better
abstraction since (in the future) we may wish to do something between
this prep and actually restarting the thread.

The previous implementation also forced us to always restore the signal
handler context from pthread->uthread.u_ctx (even if the pthread's
saved context was currently sitting in the vcpd uthread_ctx slot).
This implementation now updates the pthread's current context in place,
allowing it to be restarted the same way whether there were pending
posix signals or not.
user/pthread/pthread.c