Organize resources into process groups

This commit is contained in:
2026-01-27 14:18:05 +01:00
parent 67b66f2b39
commit 600886a7ee
20 changed files with 387 additions and 457 deletions

View File

@@ -6,14 +6,13 @@
#include <stdint.h>
#include <string/string.h>
#define EXAMPLE 3
#define EXAMPLE 1
#if EXAMPLE == 1
void app_thread1 (void) {
test ('b');
quit ();
}
#define MUTEX 2000
void app_thread1 (void);
int spawn (void (*fn) (void)) {
size_t stack_size = 256 * PAGE_SIZE;
@@ -25,7 +24,29 @@ int spawn (void (*fn) (void)) {
return clone (stack_top, stack_size, fn);
}
void app_main (void) { spawn (&app_thread1); }
void app_main (void) {
create_mutex (MUTEX);
spawn (&app_thread1);
lock_mutex (MUTEX);
for (int i = 0; i < 3; i++)
test ('a');
unlock_mutex (MUTEX);
}
void app_thread1 (void) {
lock_mutex (MUTEX);
for (int i = 0; i < 3; i++)
test ('b');
unlock_mutex (MUTEX);
quit ();
}
#elif EXAMPLE == 2
#define MUTEX 2000
@@ -43,28 +64,28 @@ int spawn (void (*fn) (void)) {
}
void app_main (void) {
create_mutex (MUTEX, RV_PRIVATE);
create_mutex (MUTEX);
spawn (&app_thread1);
for (;;) {
lock_mutex (MUTEX, RV_PRIVATE);
lock_mutex (MUTEX);
for (int i = 0; i < 3; i++)
test ('a');
unlock_mutex (MUTEX, RV_PRIVATE);
unlock_mutex (MUTEX);
}
}
void app_thread1 (void) {
for (;;) {
lock_mutex (MUTEX, RV_PRIVATE);
lock_mutex (MUTEX);
for (int i = 0; i < 3; i++)
test ('b');
unlock_mutex (MUTEX, RV_PRIVATE);
unlock_mutex (MUTEX);
}
quit ();
@@ -86,12 +107,12 @@ int spawn (void (*fn) (void)) {
}
void app_main (void) {
create_mutex (MUTEX, RV_PRIVATE);
create_mutex (MUTEX);
spawn (&app_thread1);
for (;;) {
lock_mutex (MUTEX, RV_PRIVATE);
lock_mutex (MUTEX);
for (int i = 0; i < 3; i++)
test ('a');
@@ -102,12 +123,12 @@ void app_main (void) {
void app_thread1 (void) {
for (;;) {
lock_mutex (MUTEX, RV_PRIVATE);
lock_mutex (MUTEX);
for (int i = 0; i < 3; i++)
test ('b');
unlock_mutex (MUTEX, RV_PRIVATE);
unlock_mutex (MUTEX);
}
quit ();