summaryrefslogtreecommitdiff
path: root/src/library/gc/syscall.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/gc/syscall.c')
-rw-r--r--src/library/gc/syscall.c68
1 files changed, 0 insertions, 68 deletions
diff --git a/src/library/gc/syscall.c b/src/library/gc/syscall.c
deleted file mode 100644
index 3100dd7..0000000
--- a/src/library/gc/syscall.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#include <gc/syscall.h>
-#include <gc/mem.h>
-
-static int call(unsigned a, unsigned b, unsigned c, unsigned d, unsigned e, unsigned f) {
- unsigned ret;
- asm volatile("int $64" : "=a"(ret) : "a"(a), "b"(b), "c"(c), "d"(d), "S"(e), "D"(f));
- return ret;
-}
-
-void thread_exit() {
- call(0, 0, 0, 0, 0, 0);
-}
-
-void schedule() {
- call(1, 0, 0,0, 0, 0);
-}
-
-void thread_sleep(int time) {
- call(2, time, 0, 0, 0, 0);
-}
-
-void process_exit(int retval) {
- call(3, retval, 0, 0, 0, 0);
-}
-
-void printk(char* str) {
- call(4, (unsigned)str, 0, 0, 0, 0);
-}
-
-//THREAD CREATION
-struct thread_start_data {
- void (*entry)(void*);
- void *data;
- void *stack;
-};
-void thread_start(void *data) {
- struct thread_start_data *tsd = data;
- tsd->entry(tsd->data);
- free(tsd->stack);
- thread_exit();
-}
-void thread_new(void (*entry)(void*), void *data) {
- struct thread_start_data *tsd = malloc(sizeof(struct thread_start_data));
- tsd->entry = entry;
- tsd->data = data;
- tsd->stack = malloc(NEW_STACK_SIZE);
- call(5, (unsigned)thread_start, (unsigned)tsd, (unsigned)(tsd->stack + NEW_STACK_SIZE), 0, 0);
-}
-
-void irq_wait(int number) {
- call(6, number, 0, 0, 0, 0);
-}
-
-int proc_priv() {
- return call(7, 0, 0, 0, 0, 0);
-}
-
-int proc_setheap(size_t start, size_t end) {
- return call(8, start, end, 0, 0, 0);
-}
-
-int shm_create(size_t offset, size_t length) {
- return call(9, offset, length, 0, 0, 0);
-}
-
-int shm_delete(size_t offset) {
- return call(10, offset, 0, 0, 0, 0);
-}