Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: selftests: Write REPORT_GUEST_ASSERT macros to pair with GUEST_ASSERT

Write REPORT_GUEST_ASSERT macros to pair with GUEST_ASSERT to abstract
and make consistent all guest assertion reporting. Every report
includes an explanatory string, a filename, and a line number.

Signed-off-by: Colton Lewis <coltonlewis@google.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Link: https://lore.kernel.org/r/20220615193116.806312-4-coltonlewis@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>

authored by

Colton Lewis and committed by
Sean Christopherson
ddcb57af fc573fa4

+42
+42
tools/testing/selftests/kvm/include/ucall_common.h
··· 6 6 */ 7 7 #ifndef SELFTEST_KVM_UCALL_COMMON_H 8 8 #define SELFTEST_KVM_UCALL_COMMON_H 9 + #include "test_util.h" 9 10 10 11 /* Common ucalls */ 11 12 enum { ··· 64 63 __GUEST_ASSERT(_condition, #_condition, 4, (arg1), (arg2), (arg3), (arg4)) 65 64 66 65 #define GUEST_ASSERT_EQ(a, b) __GUEST_ASSERT((a) == (b), #a " == " #b, 2, a, b) 66 + 67 + #define __REPORT_GUEST_ASSERT(_ucall, fmt, _args...) \ 68 + TEST_FAIL("%s at %s:%ld\n" fmt, \ 69 + (const char *)(_ucall).args[GUEST_ERROR_STRING], \ 70 + (const char *)(_ucall).args[GUEST_FILE], \ 71 + (_ucall).args[GUEST_LINE], \ 72 + ##_args) 73 + 74 + #define GUEST_ASSERT_ARG(ucall, i) ((ucall).args[GUEST_ASSERT_BUILTIN_NARGS + i]) 75 + 76 + #define REPORT_GUEST_ASSERT(ucall) \ 77 + __REPORT_GUEST_ASSERT((ucall), "") 78 + 79 + #define REPORT_GUEST_ASSERT_1(ucall, fmt) \ 80 + __REPORT_GUEST_ASSERT((ucall), \ 81 + fmt, \ 82 + GUEST_ASSERT_ARG((ucall), 0)) 83 + 84 + #define REPORT_GUEST_ASSERT_2(ucall, fmt) \ 85 + __REPORT_GUEST_ASSERT((ucall), \ 86 + fmt, \ 87 + GUEST_ASSERT_ARG((ucall), 0), \ 88 + GUEST_ASSERT_ARG((ucall), 1)) 89 + 90 + #define REPORT_GUEST_ASSERT_3(ucall, fmt) \ 91 + __REPORT_GUEST_ASSERT((ucall), \ 92 + fmt, \ 93 + GUEST_ASSERT_ARG((ucall), 0), \ 94 + GUEST_ASSERT_ARG((ucall), 1), \ 95 + GUEST_ASSERT_ARG((ucall), 2)) 96 + 97 + #define REPORT_GUEST_ASSERT_4(ucall, fmt) \ 98 + __REPORT_GUEST_ASSERT((ucall), \ 99 + fmt, \ 100 + GUEST_ASSERT_ARG((ucall), 0), \ 101 + GUEST_ASSERT_ARG((ucall), 1), \ 102 + GUEST_ASSERT_ARG((ucall), 2), \ 103 + GUEST_ASSERT_ARG((ucall), 3)) 104 + 105 + #define REPORT_GUEST_ASSERT_N(ucall, fmt, args...) \ 106 + __REPORT_GUEST_ASSERT((ucall), fmt, ##args) 67 107 68 108 #endif /* SELFTEST_KVM_UCALL_COMMON_H */