major improvements to cancellation handling

- there is no longer any risk of spoofing cancellation requests, since
  the cancel flag is set in pthread_cancel rather than in the signal
  handler.

- cancellation signal is no longer unblocked when running the
  cancellation handlers. instead, pthread_create will cause any new
  threads created from a cancellation handler to unblock their own
  cancellation signal.

- various tweaks in preparation for POSIX timer support.
This commit is contained in:
Rich Felker
2011-03-29 12:58:22 -04:00
parent 70c31c7bd7
commit bf619d82c8
4 changed files with 19 additions and 8 deletions

View File

@ -2,5 +2,6 @@
int pthread_cancel(pthread_t t)
{
t->cancel = 1;
return pthread_kill(t, SIGCANCEL);
}