/* thread_12.c - helper file for testing kernel mutex APIs */

/*
 * Copyright (c) 2015-2016 Wind River Systems, Inc.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/*
 * @file
 * @brief mutex test helper
 *
 * This module defines a thread that is used in recursive mutex locking tests.
 * It helps ensure that a private mutex can be referenced in a file other than
 * the one it was defined in.
 */

#include <zephyr/tc_util.h>
#include <zephyr/kernel.h>
#include <zephyr/sys/mutex.h>

static int tc_rc = TC_PASS;         /* test case return code */

extern struct sys_mutex private_mutex;

/**
 *
 * thread_12 - thread that participates in recursive locking tests
 *
 */

void thread_12(void *p1, void *p2, void *p3)
{
	ARG_UNUSED(p1);
	ARG_UNUSED(p2);
	ARG_UNUSED(p3);

	int rv;

	/* Wait for private mutex to be released */

	rv = sys_mutex_lock(&private_mutex, K_FOREVER);
	if (rv != 0) {
		tc_rc = TC_FAIL;
		TC_ERROR("Failed to obtain private mutex\n");
		return;
	}

	/* Wait a bit, then release the mutex */

	k_sleep(K_MSEC(500));
	sys_mutex_unlock(&private_mutex);

}
