KVM: selftests: Make kvm_ioctl() a wrapper to pretty print ioctl name
Make kvm_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:
committed by
Paolo Bonzini
parent
10825b55b9
commit
2de1b7b127
@@ -110,8 +110,19 @@ int kvm_check_cap(long cap);
|
||||
#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);
|
||||
#define __kvm_ioctl(kvm_fd, cmd, arg) \
|
||||
ioctl(kvm_fd, cmd, arg)
|
||||
|
||||
static inline void _kvm_ioctl(int kvm_fd, unsigned long cmd, const char *name,
|
||||
void *arg)
|
||||
{
|
||||
int ret = __kvm_ioctl(kvm_fd, cmd, arg);
|
||||
|
||||
TEST_ASSERT(!ret, __KVM_IOCTL_ERROR(name, ret));
|
||||
}
|
||||
|
||||
#define kvm_ioctl(kvm_fd, cmd, arg) \
|
||||
_kvm_ioctl(kvm_fd, cmd, #cmd, 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);
|
||||
@@ -492,6 +503,7 @@ unsigned int vm_get_page_size(struct kvm_vm *vm);
|
||||
unsigned int vm_get_page_shift(struct kvm_vm *vm);
|
||||
unsigned long vm_compute_max_gfn(struct kvm_vm *vm);
|
||||
uint64_t vm_get_max_gfn(struct kvm_vm *vm);
|
||||
int vm_get_kvm_fd(struct kvm_vm *vm);
|
||||
int vm_get_fd(struct kvm_vm *vm);
|
||||
|
||||
unsigned int vm_calc_num_guest_pages(enum vm_guest_mode mode, size_t size);
|
||||
|
||||
@@ -1616,32 +1616,6 @@ void _vm_ioctl(struct kvm_vm *vm, unsigned long cmd, const char *name, void *arg
|
||||
TEST_ASSERT(!ret, __KVM_IOCTL_ERROR(name, ret));
|
||||
}
|
||||
|
||||
/*
|
||||
* KVM system ioctl
|
||||
*
|
||||
* Input Args:
|
||||
* vm - Virtual Machine
|
||||
* cmd - Ioctl number
|
||||
* arg - Argument to pass to the ioctl
|
||||
*
|
||||
* Return: None
|
||||
*
|
||||
* Issues an arbitrary ioctl on a KVM fd.
|
||||
*/
|
||||
void kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = ioctl(vm->kvm_fd, cmd, arg);
|
||||
TEST_ASSERT(ret == 0, "KVM ioctl %lu failed, rc: %i errno: %i (%s)",
|
||||
cmd, ret, errno, strerror(errno));
|
||||
}
|
||||
|
||||
int __kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg)
|
||||
{
|
||||
return ioctl(vm->kvm_fd, cmd, arg);
|
||||
}
|
||||
|
||||
/*
|
||||
* Device Ioctl
|
||||
*/
|
||||
@@ -2074,6 +2048,11 @@ uint64_t vm_get_max_gfn(struct kvm_vm *vm)
|
||||
return vm->max_gfn;
|
||||
}
|
||||
|
||||
int vm_get_kvm_fd(struct kvm_vm *vm)
|
||||
{
|
||||
return vm->kvm_fd;
|
||||
}
|
||||
|
||||
int vm_get_fd(struct kvm_vm *vm)
|
||||
{
|
||||
return vm->fd;
|
||||
|
||||
@@ -123,7 +123,7 @@ void test_hv_cpuid_e2big(struct kvm_vm *vm, bool system)
|
||||
if (!system)
|
||||
ret = __vcpu_ioctl(vm, VCPU_ID, KVM_GET_SUPPORTED_HV_CPUID, &cpuid);
|
||||
else
|
||||
ret = __kvm_ioctl(vm, KVM_GET_SUPPORTED_HV_CPUID, &cpuid);
|
||||
ret = __kvm_ioctl(vm_get_kvm_fd(vm), KVM_GET_SUPPORTED_HV_CPUID, &cpuid);
|
||||
|
||||
TEST_ASSERT(ret == -1 && errno == E2BIG,
|
||||
"%s KVM_GET_SUPPORTED_HV_CPUID didn't fail with -E2BIG when"
|
||||
|
||||
Reference in New Issue
Block a user