On 23 August 2013 20:41, Christoffer Dall <christoffer.dall@xxxxxxxxxx> wrote: > Introduces two simple functions: > int kvm_device_ioctl(int fd, int type, ...); > int kvm_create_device(KVMState *s, uint64_t type, bool test); > > These functions wrap the basic ioctl-based interactions with KVM in a > way similar to other KVM ioctl wrappers. > > Signed-off-by: Christoffer Dall <christoffer.dall@xxxxxxxxxx> > --- > include/sysemu/kvm.h | 5 +++++ > kvm-all.c | 39 +++++++++++++++++++++++++++++++++++++++ > trace-events | 1 + > 3 files changed, 45 insertions(+) > > diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h > index 1e5847e..84ca5ef 100644 > --- a/include/sysemu/kvm.h > +++ b/include/sysemu/kvm.h > @@ -190,6 +190,11 @@ int kvm_vm_ioctl(KVMState *s, int type, ...); > > int kvm_vcpu_ioctl(CPUState *cpu, int type, ...); > > +int kvm_device_ioctl(int fd, int type, ...); > + > +int kvm_create_device(KVMState *s, uint64_t type, bool test); Could we have doc comments for these, please? > + > + > /* Arch specific hooks */ > > extern const KVMCapabilityInfo kvm_arch_required_capabilities[]; > diff --git a/kvm-all.c b/kvm-all.c > index fe64f3b..957b961 100644 > --- a/kvm-all.c > +++ b/kvm-all.c > @@ -1770,6 +1770,24 @@ int kvm_vcpu_ioctl(CPUState *cpu, int type, ...) > return ret; > } > > +int kvm_device_ioctl(int fd, int type, ...) > +{ > + int ret; > + void *arg; > + va_list ap; > + > + va_start(ap, type); > + arg = va_arg(ap, void *); > + va_end(ap); > + > + trace_kvm_device_ioctl(fd, type, arg); > + ret = ioctl(fd, type, arg); > + if (ret == -1) { > + ret = -errno; > + } > + return ret; > +} > + > int kvm_has_sync_mmu(void) > { > return kvm_check_extension(kvm_state, KVM_CAP_SYNC_MMU); > @@ -2064,3 +2082,24 @@ int kvm_on_sigbus(int code, void *addr) > { > return kvm_arch_on_sigbus(code, addr); > } > + > +int kvm_create_device(KVMState *s, uint64_t type, bool test) > +{ > + int ret; > + struct kvm_create_device create_dev; > + > + create_dev.type = type; > + create_dev.fd = -1; > + create_dev.flags = (test) ? KVM_CREATE_DEVICE_TEST : 0; Why the brackets round 'test' ? > + > + if (!kvm_check_extension(s, KVM_CAP_DEVICE_CTRL)) { > + return -1; We should probably return -$some_errno here, since we pass through a -errno return from kvm_vm_ioctl below. > + } > + > + ret = kvm_vm_ioctl(s, KVM_CREATE_DEVICE, &create_dev); > + if (ret) { > + return ret; > + } > + > + return (test) ? 0 : create_dev.fd; > +} thanks -- PMM _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm