53 lines
894 B
C
53 lines
894 B
C
#include <limits.h>
|
|
#include <process.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <string.h>
|
|
#include <terminal.h>
|
|
|
|
#define MUTEX 2000
|
|
|
|
__thread volatile char letter = 'c';
|
|
|
|
void app_proc (void) {
|
|
char arg_letter = (char)(uintptr_t)process_argument ();
|
|
|
|
letter = arg_letter;
|
|
|
|
for (;;) {
|
|
mutex_lock (MUTEX);
|
|
|
|
for (int i = 0; i < 3; i++)
|
|
terminal_print (&letter, 1);
|
|
|
|
for (volatile int i = 0; i < 1000 * 1000; i++)
|
|
;
|
|
|
|
mutex_unlock (MUTEX);
|
|
}
|
|
|
|
process_quit ();
|
|
}
|
|
|
|
void app_main (void) {
|
|
mutex_create (MUTEX);
|
|
|
|
letter = 'a';
|
|
|
|
process_spawn (&app_proc, (void*)'b');
|
|
process_spawn (&app_proc, (void*)'c');
|
|
process_spawn (&app_proc, (void*)'d');
|
|
|
|
for (;;) {
|
|
mutex_lock (MUTEX);
|
|
|
|
for (int i = 0; i < 3; i++)
|
|
terminal_print (&letter, 1);
|
|
|
|
for (volatile int i = 0; i < 1000 * 1000; i++)
|
|
;
|
|
|
|
mutex_unlock (MUTEX);
|
|
}
|
|
}
|