rt/cxx/examples/recursive.cpp

29 lines
402 B
C++

#include <rt/mutex.hpp>
#include <rt/task.hpp>
#include <rt/trap.hpp>
static rt::recursive_mutex mutex;
static unsigned x = 0;
static void bar(void)
{
rt::lock_guard lock(mutex);
x *= 2;
}
static void foo(void)
{
rt::lock_guard lock(mutex);
++x;
bar();
}
static void locker(void)
{
rt::task::drop_privilege();
foo();
rt::trap();
}
RT_TASK(locker, RT_STACK_MIN, 0);