/* Copyright (c) 2024 Barcelona Supercomputing Center (BSC)
 * SPDX-License-Identifier: GPL-3.0-or-later */

#include "compat.h"
#include "instr.h"
#include "instr_nosv.h"

/* Test the nosv_mutex_lock(), nosv_mutex_trylock() and nosv_mutex_unlock() API
 * events, introduced in the nOS-V model 2.1.0 */

int
main(void)
{
	instr_start(0, 1);
	instr_nosv_init();

	instr_nosv_mutex_lock_enter();
	sleep_us(100);
	instr_nosv_mutex_lock_exit();

	instr_nosv_mutex_trylock_enter();
	sleep_us(100);
	instr_nosv_mutex_trylock_exit();

	instr_nosv_mutex_unlock_enter();
	sleep_us(100);
	instr_nosv_mutex_unlock_exit();

	instr_end();

	return 0;
}