Linux Audio

Check our new training course

Loading...
/*
 * Copyright (c) 2020 Intel Corporation.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/kernel.h>

#include "footprint.h"

#define STACK_SIZE	512

K_MUTEX_DEFINE(user_mutex);

#ifdef CONFIG_USERSPACE
static void user_thread_fn(void *arg1, void *arg2, void *arg3)
{
	ARG_UNUSED(arg1);
	ARG_UNUSED(arg2);
	ARG_UNUSED(arg3);

	k_mutex_lock(&user_mutex, K_FOREVER);

	k_mutex_unlock(&user_mutex);
}

static void run_user_mutex(void)
{
	k_tid_t tid;

	/* Exercise simple workqueue */
	tid = k_thread_create(&my_thread, my_stack_area, STACK_SIZE,
			      user_thread_fn, NULL, NULL, NULL,
			      0, K_USER, K_FOREVER);
	k_object_access_grant(&user_mutex, tid);

	k_thread_start(tid);
	k_thread_join(tid, K_FOREVER);
}
#endif /* CONFIG_USERSPACE */

static void run_system_mutex(void)
{
	struct k_mutex sys_mutex;

	k_mutex_init(&sys_mutex);

	k_mutex_lock(&sys_mutex, K_FOREVER);

	k_mutex_unlock(&sys_mutex);
}

void run_mutex(void)
{
	run_system_mutex();

#ifdef CONFIG_USERSPACE
	run_user_mutex();
#endif
}