Hi to all,
it's definitely a trivial thing but I can't get out of it.
Why don't I unlock the mutex and run the first thread?
Thank you.
/*
* Copyright (c) 2012-2014 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/kernel.h>
#define STACKSIZE (1024)
#define PRIORITY 5
K_MUTEX_DEFINE(mutex);
uint8_t cnt = 0;
#define LOCK_CNT 10;
/* shered variable */
uint16_t counter = 0x00;
/* work thread 1 */
void thread_1()
{
while (true)
{
k_mutex_lock(&mutex, K_FOREVER);
counter++;
printk("Thread: 1 work - shared cnt: %d\n", cnt);
k_msleep(500);
}
}
/* work thread 2 */
void thread_2()
{
while (true)
{
counter++;
printk("Thread: 2 work - shared cnt: %d\n", cnt);
if (cnt-- == 0)
{
cnt = LOCK_CNT;
k_mutex_unlock(&mutex);
printk("mutex_count: %d\n", mutex.lock_count);
}
k_msleep(1000);
}
}
void main(void)
{
printk("WORK MUTEX on board: %s\n\n", CONFIG_BOARD);
cnt = LOCK_CNT;
k_mutex_lock(&mutex, K_FOREVER); /* lock mutex */
}
K_THREAD_DEFINE(thread_1_id, STACKSIZE, thread_1, NULL, NULL, NULL,
PRIORITY, 0, 0);
K_THREAD_DEFINE(thread_2_id, STACKSIZE, thread_2, NULL, NULL, NULL,
PRIORITY, 0, 0);