summaryrefslogtreecommitdiff
path: root/kernel/syscalls.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-10-01 23:22:03 +0200
committerMiguel <m.i@gmx.at>2018-10-01 23:22:03 +0200
commita455cd5af26bf8731e7c981a9421b16ab34dae6f (patch)
tree140b184bf306cef258ba6e7965a78b3eecb598b9 /kernel/syscalls.c
parentb518f39803eaaf0b25b95baf951b12ef4d5a727e (diff)
fukkin scheduler
Diffstat (limited to 'kernel/syscalls.c')
-rw-r--r--kernel/syscalls.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/kernel/syscalls.c b/kernel/syscalls.c
index 5bdb76e..3b97917 100644
--- a/kernel/syscalls.c
+++ b/kernel/syscalls.c
@@ -22,6 +22,7 @@
#include "mem.h"
#include "reent.h"
#include "errno.h"
+#include "compositor.h"
#include "stdstreams.h"
#define MAX_PID 200
@@ -237,6 +238,7 @@ int copy_args(char **in, char **out)
int syscall_execve(const char *name, char *const argv[], char *const env[], int pid)
{
+
fixme("not overwrite yourself?");
int arg_count=0;
while(argv[arg_count]!=NULL)arg_count++;
@@ -262,6 +264,8 @@ int syscall_execve(const char *name, char *const argv[], char *const env[], int
*--stack=arg_count;
*--stack=env1;
task_reset(pid,entry_global,stack,alloc);
+ task_set_name(pid,name);
+
return 0;
}
@@ -398,6 +402,16 @@ uint32_t syscall_dup2(uint32_t oldfd,int newfd, int none2, uint32_t pid)
fds[pid][newfd]=fd_dupl(&fds[pid][oldfd]);
return newfd;
}
+uint32_t syscall_gui_rect(uint32_t p1, uint32_t p2, uint32_t p3, uint32_t pid)
+{
+ compositor_swap_buffers();
+ return 1;
+}
+uint32_t syscall_gui_win(uint32_t p1, uint32_t p2, uint32_t p3, uint32_t pid)
+{
+ task_add_win(pid);
+ return 1;
+}
/** Generics */
uint32_t syscall_generic_test(uint32_t nr,uint32_t p1, uint32_t p2, uint32_t p3, uint32_t pid)
@@ -469,6 +483,10 @@ uint32_t syscall_generic(uint32_t nr,uint32_t p1, uint32_t p2, uint32_t p3, uint
return syscall_pipe(p1,p2,p3,pid);
case SYSCALL_DUP2 :
return syscall_dup2(p1,p2,p3,pid);
+ case SYSCALL_GUI_RECT :
+ return syscall_gui_rect(p1,p2,p3,pid);
+ case SYSCALL_GUI_WIN :
+ return syscall_gui_win(p1,p2,p3,pid);
}
kpanic("unknown syscall %d",nr);
}