/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Declarations for hook implementations.
 *
 * These will be set as the function pointers in struct kunit_hook_table,
 * found in include/kunit/test-bug.h.
 *
 * Copyright (C) 2023, Google LLC.
 * Author: David Gow <davidgow@google.com>
 */

#ifndef _KUNIT_HOOKS_IMPL_H
#define _KUNIT_HOOKS_IMPL_H

#include <kunit/test-bug.h>

/* List of declarations. */
void __printf(3, 4) __kunit_fail_current_test_impl(const char *file,
						   int line,
						   const char *fmt, ...);
void *__kunit_get_static_stub_address_impl(struct kunit *test, void *real_fn_addr);
bool __kunit_is_suppressed_warning_impl(bool count);

/* Code to set all of the function pointers. */
static inline void kunit_install_hooks(void)
{
	/* Install the KUnit hook functions. */
	kunit_hooks.fail_current_test = __kunit_fail_current_test_impl;
	kunit_hooks.get_static_stub_address = __kunit_get_static_stub_address_impl;
	kunit_hooks.is_suppressed_warning = __kunit_is_suppressed_warning_impl;
}

#endif /* _KUNIT_HOOKS_IMPL_H */
