summaryrefslogtreecommitdiff
path: root/kernel/syscalls.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-10-09 16:21:32 +0200
committerMiguel <m.i@gmx.at>2018-10-09 16:21:32 +0200
commit63e5017d9863d4ed215782e469e8ee2c6ff8473d (patch)
treef12d149ffa34e6a39f4bce4fe9a001e4ca8c6027 /kernel/syscalls.c
parenta6a11437a390fb7e95fe995214d82bf5dbfe1eaf (diff)
fix pipers
Diffstat (limited to 'kernel/syscalls.c')
-rw-r--r--kernel/syscalls.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/syscalls.c b/kernel/syscalls.c
index 8ff6241..d579dc3 100644
--- a/kernel/syscalls.c
+++ b/kernel/syscalls.c
@@ -198,6 +198,7 @@ int syscall_write(int file, char *buf, int len,uint32_t pid)
if(!open_fd[pid][file])kpanic("writing to closed file descriptor");
for(int i=0;i<len;i++)
{
+ if(!fd_can_write(&fds[pid][file]))return i;
fd_write(&fds[pid][file],buf[i]);
}
return len;
@@ -432,7 +433,7 @@ uint32_t syscall_dup2(uint32_t oldfd,int newfd, int none2, uint32_t pid)
}
uint32_t syscall_gui_rect(uint32_t p1, uint32_t p2, uint32_t p3, uint32_t pid)
{
- compositor_swap_buffers();
+ compositor_wake();
return 1;
}
uint32_t syscall_gui_win(uint32_t p1, uint32_t p2, uint32_t p3, uint32_t pid)
@@ -449,6 +450,8 @@ uint32_t syscall_generic_test(uint32_t nr,uint32_t p1, uint32_t p2, uint32_t p3,
return !task_runs(p1);
case SYSCALL_READ :
return fd_has(&fds[pid][p1])||fd_eof(&fds[pid][p1]);
+ case SYSCALL_WRITE :
+ return fd_can_write(&fds[pid][p1]);
}
return 1;//other syscalls never block for now.