KVM: selftests: Make vm_ioctl() a wrapper to pretty print ioctl name
Make vm_ioctl() a macro wrapper and print the _name_ of the ioctl on failure instead of the number. Deliberately do not use __stringify(), as that will expand the ioctl all the way down to its numerical sequence. Again the intent is to print the name of the macro. Signed-off-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
47a7c924b6
commit
71ab5a6fea
@ -105,6 +105,27 @@ int open_kvm_dev_path_or_exit(void);
|
||||
int kvm_check_cap(long cap);
|
||||
int vm_check_cap(struct kvm_vm *vm, long cap);
|
||||
int vm_enable_cap(struct kvm_vm *vm, struct kvm_enable_cap *cap);
|
||||
|
||||
#define __KVM_SYSCALL_ERROR(_name, _ret) \
|
||||
"%s failed, rc: %i errno: %i (%s)", (_name), (_ret), errno, strerror(errno)
|
||||
|
||||
#define __KVM_IOCTL_ERROR(_name, _ret) __KVM_SYSCALL_ERROR(_name, _ret)
|
||||
#define KVM_IOCTL_ERROR(_ioctl, _ret) __KVM_IOCTL_ERROR(#_ioctl, _ret)
|
||||
|
||||
int __kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg);
|
||||
void kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg);
|
||||
|
||||
int __vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg);
|
||||
void _vm_ioctl(struct kvm_vm *vm, unsigned long cmd, const char *name, void *arg);
|
||||
#define vm_ioctl(vm, cmd, arg) _vm_ioctl(vm, cmd, #cmd, arg)
|
||||
|
||||
int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd,
|
||||
void *arg);
|
||||
void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd,
|
||||
const char *name, void *arg);
|
||||
#define vcpu_ioctl(vm, vcpuid, cmd, arg) \
|
||||
_vcpu_ioctl(vm, vcpuid, cmd, #cmd, arg)
|
||||
|
||||
void vm_enable_dirty_ring(struct kvm_vm *vm, uint32_t ring_size);
|
||||
const char *vm_guest_mode_string(uint32_t i);
|
||||
|
||||
@ -156,23 +177,6 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm,
|
||||
uint64_t guest_paddr, uint32_t slot, uint64_t npages,
|
||||
uint32_t flags);
|
||||
|
||||
#define __KVM_SYSCALL_ERROR(_name, _ret) \
|
||||
"%s failed, rc: %i errno: %i (%s)", (_name), (_ret), errno, strerror(errno)
|
||||
|
||||
#define __KVM_IOCTL_ERROR(_name, _ret) __KVM_SYSCALL_ERROR(_name, _ret)
|
||||
#define KVM_IOCTL_ERROR(_ioctl, _ret) __KVM_IOCTL_ERROR(#_ioctl, _ret)
|
||||
|
||||
void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long ioctl,
|
||||
const char *name, void *arg);
|
||||
int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long ioctl,
|
||||
void *arg);
|
||||
#define vcpu_ioctl(vm, vcpuid, ioctl, arg) \
|
||||
_vcpu_ioctl(vm, vcpuid, ioctl, #ioctl, arg)
|
||||
|
||||
void vm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg);
|
||||
int __vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg);
|
||||
void kvm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg);
|
||||
int __kvm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg);
|
||||
void vm_mem_region_set_flags(struct kvm_vm *vm, uint32_t slot, uint32_t flags);
|
||||
void vm_mem_region_move(struct kvm_vm *vm, uint32_t slot, uint64_t new_gpa);
|
||||
void vm_mem_region_delete(struct kvm_vm *vm, uint32_t slot);
|
||||
|
@ -1690,32 +1690,18 @@ void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t vcpuid)
|
||||
return vcpu->dirty_gfns;
|
||||
}
|
||||
|
||||
/*
|
||||
* VM Ioctl
|
||||
*
|
||||
* Input Args:
|
||||
* vm - Virtual Machine
|
||||
* cmd - Ioctl number
|
||||
* arg - Argument to pass to the ioctl
|
||||
*
|
||||
* Return: None
|
||||
*
|
||||
* Issues an arbitrary ioctl on a VM fd.
|
||||
*/
|
||||
void vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = __vm_ioctl(vm, cmd, arg);
|
||||
TEST_ASSERT(ret == 0, "vm ioctl %lu failed, rc: %i errno: %i (%s)",
|
||||
cmd, ret, errno, strerror(errno));
|
||||
}
|
||||
|
||||
int __vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg)
|
||||
{
|
||||
return ioctl(vm->fd, cmd, arg);
|
||||
}
|
||||
|
||||
void _vm_ioctl(struct kvm_vm *vm, unsigned long cmd, const char *name, void *arg)
|
||||
{
|
||||
int ret = __vm_ioctl(vm, cmd, arg);
|
||||
|
||||
TEST_ASSERT(!ret, __KVM_IOCTL_ERROR(name, ret));
|
||||
}
|
||||
|
||||
/*
|
||||
* KVM system ioctl
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user