#include #include #include #include #include #include #include #define EXAMPLE 1 #if EXAMPLE == 1 int mutex_rid; void mythread (void) { for (int j = 0; j < 10; j++) { proc_mutex_lock (mutex_rid, RV_PRIVATE); for (size_t i = 0; i < 3; i++) proc_test ('b'); proc_mutex_unlock (mutex_rid, RV_PRIVATE); } proc_quit (); } int make_thread (void (*fn) (void)) { size_t stack_size = 256 * PAGE_SIZE; void* stack = malloc (stack_size); if (stack == NULL) return -ST_OOM_ERROR; uintptr_t stack_top = (uintptr_t)stack + stack_size; return proc_spawn_thread (stack_top, stack_size, (void*)fn); } void app_main (void) { mutex_rid = proc_create_resource (200, PR_MUTEX, RV_PRIVATE, NULL); make_thread (&mythread); for (int j = 0; j < 10; j++) { proc_mutex_lock (mutex_rid, RV_PRIVATE); for (size_t i = 0; i < 3; i++) proc_test ('a'); proc_mutex_unlock (mutex_rid, RV_PRIVATE); } for (;;) ; } #endif