Organize resources into process groups
This commit is contained in:
51
init/init.c
51
init/init.c
@@ -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 ();
|
||||
|
||||
Reference in New Issue
Block a user