diff options
| author | Miguel <m.i@gmx.at> | 2018-10-09 16:21:32 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-10-09 16:21:32 +0200 |
| commit | 63e5017d9863d4ed215782e469e8ee2c6ff8473d (patch) | |
| tree | f12d149ffa34e6a39f4bce4fe9a001e4ca8c6027 /kernel/syscalls.c | |
| parent | a6a11437a390fb7e95fe995214d82bf5dbfe1eaf (diff) | |
fix pipers
Diffstat (limited to 'kernel/syscalls.c')
| -rw-r--r-- | kernel/syscalls.c | 5 |
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. |
