I'd like to add a signal mask to kvm, so that when the guest executes, 
the signal mask is temporarily set to some user specified value.  This 
allows signals to be used as a way to interrupt the guest, but without 
requiring signal delivery to the userspace handler (which is what makes 
signals expensive).

The question is how to fit the signal mask to the kvm userspace 
interface (which has a shared kernel/user structure that userspace 
mmaps).  I see several options:

1. Add a __u64 to that structure.  This is the simplest option, but I 
see that signal masks in the kernel/user interface are variable-length 
bitmaps, so this clearly doesn't work well.

2. Add __u32 signal_mask_offset and signal_mask_size members to the 
structure to tell userspace where to store the signal mask (in the same 
shared area).  A disadvantage is that here the kernel tells the user the 
size of the signal mask instead of the other way round as is traditional.

3. Add a separate ioctl to set the signal mask.  A NULL parameter 
disables the signal mask functionality.

I am in favor of the third option, but the existence of three options 
tells me more are possible.

[Just as background, signals are used for the following in our modified 
qemu, the only known public client for kvm:

- interrupt the guest to get timer interrupts
- interrupt the guest on packet arrival
- interrupt the guest on aio completion
- (future) for guest smp, to simulate IPIs]

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


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to