/* 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)
{
	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);

}
