Compare commits

...

10 Commits

Author SHA1 Message Date
c863bab412 Delete threadTests.exe 2022-08-30 14:03:22 +02:00
0e8c09daed
Delete amogus 2022-08-30 13:53:35 +02:00
d89e14153e
Delete A 2022-08-30 13:53:26 +02:00
The Arrayser
1469de4156
Merge pull request #2 from CringeStudios/sus
A
2022-08-30 13:52:09 +02:00
6d416a117d
A 2022-08-30 13:51:37 +02:00
The Arrayser
4aaba4edff
Merge pull request #1 from CringeStudios/sus
as
2022-08-30 13:50:10 +02:00
The Arrayser
2b236c9659
as 2022-08-30 13:49:31 +02:00
The Arrayser
9f0f4aa085
cringe 2022-08-30 13:47:12 +02:00
6eca5c2af5 Linsus threads
Co-authored-by: Julian; <JDobeshow@users.noreply.github.com>
2022-08-30 13:47:02 +02:00
The Arrayser
cc070b0598
void 2022-08-30 13:42:44 +02:00
7 changed files with 58 additions and 2 deletions

View File

@ -41,6 +41,6 @@ void sus_heapFree(void * memroy); // what should this function do, if an error o
// Networking API -- coming soon, cuz idk
//Threads
typedef __attribute__ ((sysv_abi)) int (*sus_threadProc)(void * arg);
typedef __attribute__ ((sysv_abi)) void (*sus_threadProc)(void * arg);
sus_Bool sus_threadNew(sus_threadProc proc, void * arg);
void sus_threadSleep(unsigned long seconds);

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);
}

View File

@ -10,7 +10,8 @@ DWORD WINAPI threadProc(void * tiarg){
struct threadInfo * ti = tiarg;
struct threadInfo currentTI = {.args = ti->args, .proc = ti->proc};
sus_heapFree(ti);
return currentTI.proc(currentTI.args);
currentTI.proc(currentTI.args);
return 0;
}
sus_Bool sus_threadNew(sus_threadProc proc, void * arg){
@ -18,6 +19,7 @@ sus_Bool sus_threadNew(sus_threadProc proc, void * arg){
ti->proc = proc;
ti->args = arg;
if(CreateThread(NULL, 0, threadProc, ti, 0, NULL) == NULL){
sus_heapFree(ti);
return sus_False;
}else{
return sus_True;

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 ..