rt/examples/cycle/mutex.c

30 lines
549 B
C

#include <rt/cycle.h>
#include <rt/log.h>
#include <rt/mutex.h>
#include <rt/task.h>
#include <rt/trap.h>
static volatile uint32_t start_cycle = 0;
static volatile uint32_t cycles = 0;
static RT_MUTEX(mutex);
static void task0(void)
{
rt_mutex_lock(&mutex);
rt_task_sleep(20);
start_cycle = rt_cycle();
rt_mutex_unlock(&mutex);
}
static void task1(void)
{
rt_task_sleep(10);
rt_mutex_lock(&mutex);
cycles = rt_cycle() - start_cycle;
rt_trap();
}
RT_TASK(task0, RT_STACK_MIN, 1);
RT_TASK(task1, RT_STACK_MIN, 2);