#include #include #include #include #include #include #include #define MUTEX 2000 /* __thread char letter; */ void app_thread1 (void); int spawn (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 clone (stack_top, fn); } void app_main (void) { mutex_create (MUTEX); /* letter = 'd'; */ spawn (&app_thread1); for (;;) { /* mutex_lock (MUTEX); */ /* for (int i = 0; i < 3; i++) */ /* test (letter); */ /* mutex_unlock (MUTEX); */ } } void app_thread1 (void) { /* letter = 'c'; */ for (;;) { /* mutex_lock (MUTEX); */ /* for (int i = 0; i < 3; i++) */ /* test (letter); */ /* mutex_unlock (MUTEX); */ } quit (); }