opuntiaOS - an operating system targeting x86 and ARMv7
1#include <pthread.h>
2#include <sys/mman.h>
3#include <sysdep.h>
4
5int pthread_create(void* func)
6{
7 uint32_t start = (uint32_t)mmap(NULL, 4096, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_STACK | MAP_PRIVATE, 0, 0);
8 thread_create_params_t params;
9 params.stack_start = start;
10 params.stack_size = 4096;
11 params.entry_point = (uint32_t)func;
12 int res = DO_SYSCALL_1(SYS_PTHREAD_CREATE, ¶ms);
13 RETURN_WITH_ERRNO(res, 0, res);
14}