Linsus threads

Co-authored-by: Julian; <JDobeshow@users.noreply.github.com>
This commit is contained in:
MrLetsplay 2022-08-30 13:47:02 +02:00
parent cc070b0598
commit 6eca5c2af5
4 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,38 @@
#include "../cdb_sustem.h"
#include <pthread.h>
#include <unistd.h>
struct sus_thread_args {
sus_threadProc proc;
void *arg;
};
typedef struct sus_thread_args sus_thread_args;
// Linux only uses System V AMD64 ABI calling convention (source: https://en.wikipedia.org/wiki/X86_calling_conventions)
void *uwu_runThread(void *arg) {
sus_thread_args *args = (sus_thread_args *) arg;
sus_threadProc proc = args->proc;
void *arg2 = args->arg;
sus_heapFree(args);
proc(arg2);
return NULL;
}
sus_Bool sus_threadNew(sus_threadProc proc, void *arg) {
sus_thread_args *args = (sus_thread_args *) sus_heapAlloc(sizeof(sus_thread_args));
args->proc = proc;
args->arg = arg;
pthread_t thread;
if(pthread_create(&thread, NULL, uwu_runThread, args)) {
sus_heapFree(args);
return sus_False;
}else {
return sus_True;
}
}
void sus_threadSleep(unsigned long seconds) {
sleep(seconds);
}

1
tests/System Abstraction/5/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
run

View File

@ -0,0 +1,5 @@
#!/bin/sh
if [ ! -d run ]; then
mkdir run
fi
gcc -g threadsTest.c "../../../System Abstraction/linux/cdb_file.c" "../../../System Abstraction/linux/cdb_memroy.c" "../../../System Abstraction/linux/cdb_thread.c" -o run/threadsTest

View File

@ -0,0 +1,10 @@
#!/bin/sh
./compile.sh
cd run
# Test 1
echo "-- Test 1"
./threadsTest
cd ..