Gregory Haskins wrote:
>   
>   
>> We have a specialized signal mask for the kernel, and it is already in 
>> effect here.  See KVM_SET_SIGNAL_MASK.
>>
>>     
>
> KVM_SET_SIGNAL_MASK is precisely what I was trying to counteract ;).  
> Basically I was thinking that userspace could have set some arbitrary mask 
> that would be in effect at this time.  My justification for unmasking 
> everything is two fold:  
>
> 1) I think I really want *any* signal to kick the HLT, so I temporarily 
> unmask everything while halted.
>   

Signals are not yours, they're the user's.  You can't return to the user 
with a signal if they're not prepared to handle it.

> 2) Old userspace halting would not have the SET_SIGNAL_MASK set at the time 
> either, since we would have restored the original mask before returning to 
> userspace.
>   

That's okay, old userspace won't have masked signals anyway.

The purpose of having a different signal mask for the kernel and for 
userspace (which is what KVM_SET_SIGNAL_MASK does) is to be able to use 
signals without signal delivery (which is slow):

- while in userspace, signals are blocked
- enter kernel, unblock specified signals
- signal happens, restore signal mask, return to userspace
- userspace sees EINTR (bit signal is not delivered); can now use 
sigwait() to dequeue signal and process it.

Without KVM_SET_SIGNAL_MASK, the signal handler is invoked for any 
unblocked signals.  That's what current qemu wants; but we shall change 
it one day.

-- 
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to