On 04/21/2010 08:53 PM, Cam Macdonell wrote:
Generic functions to assign irqfds and ioeventfds.
Signoff.
} #ifdef KVM_IOEVENTFD +int kvm_set_irqfd(int fd, uint16_t vector, uint32_t gsi) +{ + struct kvm_irqfd call = { }; + int r; + + call.fd = fd; + call.gsi = gsi;
+ + if (!kvm_enabled()) + return -ENOSYS;
Braces, here and elsewhere.
+ r = kvm_vm_ioctl(kvm_state, KVM_IRQFD,&call); + + if (r< 0) { + return r;
-errno
+ } + return 0; +} + +int kvm_set_ioeventfd_mmio_long(int fd, uint32_t addr, uint32_t val, bool assign) +{ + + int ret; + struct kvm_ioeventfd iofd; + + iofd.datamatch = val; + iofd.addr = addr; + iofd.len = 4; + iofd.flags = KVM_IOEVENTFD_FLAG_DATAMATCH; + iofd.fd = fd; + + if (!kvm_enabled()) + return -ENOSYS; + if (!assign) + iofd.flags |= KVM_IOEVENTFD_FLAG_DEASSIGN;
May be more usable to have separate assign and deassign functions (that can call into a single internal implementation).
+ + ret = kvm_vm_ioctl(kvm_state, KVM_IOEVENTFD,&iofd); + + if (ret< 0) { + return ret;
-errno
+ } + + return 0; +} +
-- error compiling committee.c: too many arguments to function