diff options
author | dzwdz | 2021-09-05 15:32:00 +0200 |
---|---|---|
committer | dzwdz | 2021-09-05 15:32:00 +0200 |
commit | f229b2e8a6ca840af8f3ac26cc2f412891a99a5e (patch) | |
tree | eafe7e435cc011b0b1e8cdf396f3e6b27f6a4ee3 /src/kernel/syscalls.c | |
parent | 613de4db61dd99e7d2049b0a303e167fa711030b (diff) |
root vfs: implement writing to /tty
Diffstat (limited to 'src/kernel/syscalls.c')
-rw-r--r-- | src/kernel/syscalls.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/kernel/syscalls.c b/src/kernel/syscalls.c index 8f520ab..4718b4b 100644 --- a/src/kernel/syscalls.c +++ b/src/kernel/syscalls.c @@ -141,8 +141,18 @@ int _syscall_fd_read(handle_t handle, user_ptr buf, int len) { return -1; } -int _syscall_fd_write(handle_t handle, user_ptr buf, int len) { - if (handle < 0 || handle >= HANDLE_MAX) return -1; +int _syscall_fd_write(handle_t handle_num, user_ptr buf, int len) { + struct handle *handle = &process_current->handles[handle_num]; + if (handle_num < 0 || handle_num >= HANDLE_MAX) return -1; + if (handle->type != HANDLE_FILE) return -1; + vfs_backend_dispatch(handle->file.backend, (struct vfs_op) { + .type = VFSOP_WRITE, + .rw = { + .buf = buf, + .buf_len = len, + .id = handle->file.id, + } + }); return -1; } |