sigsuspend() would previously wake up correctly when a matching signal was

received, but if the signal was in the thread's signal block mask, it would
not be handled. Added thread::sig_temp_enabled, an additional mask of not
blocked signals, which is set by sigsuspend() and evaluated and reset by
handle_signals(). Fixes #5567.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35836 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2010-03-13 13:17:40 +00:00
parent 5975d86a38
commit 7778bccf93
3 changed files with 12 additions and 4 deletions
+1
View File
@@ -252,6 +252,7 @@ struct thread {
sigset_t sig_pending;
sigset_t sig_block_mask;
sigset_t sig_temp_enabled;
struct sigaction sig_action[32];
addr_t signal_stack_base;
size_t signal_stack_size;