lkml.org 
[lkml]   [2022]   [Mar]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[RFC PATCH 004/105] KVM: selftests: Make vcpu_ioctl() a wrapper to pretty print ioctl name
    From
    Deliberately do not use __stringify(), as that will expand the ioctl all
    the way down to its numerical sequence, the intent is print the name of
    the macro.

    Signed-off-by: Sean Christopherson <seanjc@google.com>
    ---
    .../selftests/kvm/include/kvm_util_base.h | 12 +++++--
    tools/testing/selftests/kvm/lib/kvm_util.c | 31 +++++--------------
    2 files changed, 18 insertions(+), 25 deletions(-)

    diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/testing/selftests/kvm/include/kvm_util_base.h
    index 77aaac4d344e..28440c12ffbc 100644
    --- a/tools/testing/selftests/kvm/include/kvm_util_base.h
    +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h
    @@ -152,10 +152,18 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm,
    uint64_t guest_paddr, uint32_t slot, uint64_t npages,
    uint32_t flags);

    -void vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long ioctl,
    - void *arg);
    +#define __KVM_IOCTL_ERROR(_name, _ret) \
    + "%s failed, rc: %i errno: %i (%s)", (_name), (_ret), errno, strerror(errno)
    +
    +#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);
    diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c
    index 6f515333abe0..a6675d9aa7d9 100644
    --- a/tools/testing/selftests/kvm/lib/kvm_util.c
    +++ b/tools/testing/selftests/kvm/lib/kvm_util.c
    @@ -1898,29 +1898,6 @@ void vcpu_set_reg(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_one_reg *reg)
    ret, errno, strerror(errno));
    }

    -/*
    - * VCPU Ioctl
    - *
    - * Input Args:
    - * vm - Virtual Machine
    - * vcpuid - VCPU ID
    - * cmd - Ioctl number
    - * arg - Argument to pass to the ioctl
    - *
    - * Return: None
    - *
    - * Issues an arbitrary ioctl on a VCPU fd.
    - */
    -void vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid,
    - unsigned long cmd, void *arg)
    -{
    - int ret;
    -
    - ret = __vcpu_ioctl(vm, vcpuid, cmd, arg);
    - TEST_ASSERT(ret == 0, "vcpu ioctl %lu failed, rc: %i errno: %i (%s)",
    - cmd, ret, errno, strerror(errno));
    -}
    -
    int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid,
    unsigned long cmd, void *arg)
    {
    @@ -1934,6 +1911,14 @@ int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid,
    return ret;
    }

    +void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd,
    + const char *name, void *arg)
    +{
    + int ret = __vcpu_ioctl(vm, vcpuid, cmd, arg);
    +
    + TEST_ASSERT(!ret, __KVM_IOCTL_ERROR(name, ret));
    +}
    +
    void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t vcpuid)
    {
    struct vcpu *vcpu;
    --
    2.35.1.723.g4982287a31-goog
    \
     
     \ /
      Last update: 2022-03-11 06:52    [W:3.361 / U:0.192 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site