* xlat/kvm_mem_flags.in: New file. * kvm.c (kvm_ioctl_set_user_memory_region): New function. (kvm_ioctl) <KVM_SET_USER_MEMORY_REGION>: Use it. (top-level): Include print_fields.h and xlat/kvm_mem_flags.h.
Change in v2: * Use umove_or_printaddr instead of umove because umove_or_printaddr performs verbose(tcp) check and prints the zero address nicely. Suggested by ldv. Signed-off-by: Masatake YAMATO <yam...@redhat.com> --- kvm.c | 23 +++++++++++++++++++++++ xlat/kvm_mem_flags.in | 2 ++ 2 files changed, 25 insertions(+) create mode 100644 xlat/kvm_mem_flags.in diff --git a/kvm.c b/kvm.c index f725f9df..19779c84 100644 --- a/kvm.c +++ b/kvm.c @@ -32,6 +32,7 @@ #ifdef HAVE_LINUX_KVM_H #include <linux/kvm.h> +#include "print_fields.h" static int kvm_ioctl_create_vcpu(struct tcb *const tcp, const kernel_ulong_t arg) @@ -42,6 +43,26 @@ kvm_ioctl_create_vcpu(struct tcb *const tcp, const kernel_ulong_t arg) return RVAL_IOCTL_DECODED | RVAL_FD; } +#include "xlat/kvm_mem_flags.h" +static int +kvm_ioctl_set_user_memory_region(struct tcb *const tcp, const kernel_ulong_t arg) +{ + struct kvm_userspace_memory_region u_memory_region; + + tprints(", "); + if (umove_or_printaddr(tcp, arg, &u_memory_region)) + return RVAL_IOCTL_DECODED; + + PRINT_FIELD_U("{", u_memory_region, slot); + PRINT_FIELD_FLAGS(", ", u_memory_region, flags, kvm_mem_flags, + "KVM_MEM_???"); + PRINT_FIELD_X(", ", u_memory_region, guest_phys_addr); + PRINT_FIELD_U(", ", u_memory_region, memory_size); + PRINT_FIELD_X(", ", u_memory_region, userspace_addr); + + return RVAL_IOCTL_DECODED; +} + int kvm_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg) { @@ -50,6 +71,8 @@ kvm_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t a return kvm_ioctl_create_vcpu(tcp, arg); case KVM_CREATE_VM: return RVAL_DECODED | RVAL_FD; + case KVM_SET_USER_MEMORY_REGION: + return kvm_ioctl_set_user_memory_region(tcp, arg); case KVM_RUN: case KVM_GET_VCPU_MMAP_SIZE: case KVM_GET_API_VERSION: diff --git a/xlat/kvm_mem_flags.in b/xlat/kvm_mem_flags.in new file mode 100644 index 00000000..82b93ba7 --- /dev/null +++ b/xlat/kvm_mem_flags.in @@ -0,0 +1,2 @@ +KVM_MEM_LOG_DIRTY_PAGES (1 << 0) +KVM_MEM_READONLY (1 << 1) -- 2.13.6 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel