Commit ddcb57af authored by Colton Lewis's avatar Colton Lewis Committed by Sean Christopherson
Browse files

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: default avatarColton Lewis <coltonlewis@google.com>
Reviewed-by: default avatarAndrew Jones <drjones@redhat.com>
Link: https://lore.kernel.org/r/20220615193116.806312-4-coltonlewis@google.com


Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent fc573fa4
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@
 */
#ifndef SELFTEST_KVM_UCALL_COMMON_H
#define SELFTEST_KVM_UCALL_COMMON_H
#include "test_util.h"

/* Common ucalls */
enum {
@@ -64,4 +65,45 @@ enum guest_assert_builtin_args {

#define GUEST_ASSERT_EQ(a, b) __GUEST_ASSERT((a) == (b), #a " == " #b, 2, a, b)

#define __REPORT_GUEST_ASSERT(_ucall, fmt, _args...)			\
	TEST_FAIL("%s at %s:%ld\n" fmt,					\
		  (const char *)(_ucall).args[GUEST_ERROR_STRING],	\
		  (const char *)(_ucall).args[GUEST_FILE],		\
		  (_ucall).args[GUEST_LINE],				\
		  ##_args)

#define GUEST_ASSERT_ARG(ucall, i) ((ucall).args[GUEST_ASSERT_BUILTIN_NARGS + i])

#define REPORT_GUEST_ASSERT(ucall)		\
	__REPORT_GUEST_ASSERT((ucall), "")

#define REPORT_GUEST_ASSERT_1(ucall, fmt)			\
	__REPORT_GUEST_ASSERT((ucall),				\
			      fmt,				\
			      GUEST_ASSERT_ARG((ucall), 0))

#define REPORT_GUEST_ASSERT_2(ucall, fmt)			\
	__REPORT_GUEST_ASSERT((ucall),				\
			      fmt,				\
			      GUEST_ASSERT_ARG((ucall), 0),	\
			      GUEST_ASSERT_ARG((ucall), 1))

#define REPORT_GUEST_ASSERT_3(ucall, fmt)			\
	__REPORT_GUEST_ASSERT((ucall),				\
			      fmt,				\
			      GUEST_ASSERT_ARG((ucall), 0),	\
			      GUEST_ASSERT_ARG((ucall), 1),	\
			      GUEST_ASSERT_ARG((ucall), 2))

#define REPORT_GUEST_ASSERT_4(ucall, fmt)			\
	__REPORT_GUEST_ASSERT((ucall),				\
			      fmt,				\
			      GUEST_ASSERT_ARG((ucall), 0),	\
			      GUEST_ASSERT_ARG((ucall), 1),	\
			      GUEST_ASSERT_ARG((ucall), 2),	\
			      GUEST_ASSERT_ARG((ucall), 3))

#define REPORT_GUEST_ASSERT_N(ucall, fmt, args...)	\
	__REPORT_GUEST_ASSERT((ucall), fmt, ##args)

#endif /* SELFTEST_KVM_UCALL_COMMON_H */