Files
mop3/init/init.c
kamkow1 9fc8521e63
All checks were successful
Build documentation / build-and-deploy (push) Successful in 29s
sys_proc_mutex_unlock () automatically reschedule at the end
2026-01-16 00:28:46 +01:00

44 lines
1015 B
C

#include <limits.h>
#include <m/proc.h>
#include <stddef.h>
#include <stdint.h>
#include <string/string.h>
char c = 'a';
int mutex_rid;
void mythread (void) {
for (;;) {
proc_mutex_lock (mutex_rid);
for (size_t i = 0; i < 3; i++)
proc_test ('b');
proc_mutex_unlock (mutex_rid);
}
}
void make_thread (void* fn) {
size_t stack_pages = 256;
size_t stack_size = PAGE_SIZE * stack_pages;
uintptr_t out_paddr;
int mem_rid = proc_create_resource_mem (100, stack_pages, RV_PRIVATE, &out_paddr);
proc_map (out_paddr, PROC_MAP_BASE, stack_pages, PM_PRESENT | PM_RW | PM_USER);
memset ((void*)PROC_MAP_BASE, 0, stack_size);
uintptr_t vstack_top = PROC_MAP_BASE + stack_size;
proc_spawn_thread (vstack_top, stack_size, fn);
}
void app_main (void) {
mutex_rid = proc_create_resource_mutex (200, RV_PRIVATE);
make_thread (&mythread);
for (;;) {
proc_mutex_lock (mutex_rid);
for (size_t i = 0; i < 3; i++)
proc_test ('a');
proc_mutex_unlock (mutex_rid);
}
}