From d75abc611fa66dcf1d439bcb019fe993bafe730e Mon Sep 17 00:00:00 2001 From: Theodore Dubois Date: Fri, 5 Jun 2020 00:31:19 -0700 Subject: [PATCH] Stub splice() I was running ./configure for https://github.com/redneb/ghc-alt-libc and spotted a bad syscall in the linker, this was an easy fix --- kernel/calls.c | 1 + kernel/calls.h | 1 + kernel/fs.c | 3 +++ 3 files changed, 5 insertions(+) diff --git a/kernel/calls.c b/kernel/calls.c index 88a3eddf..0c9c278b 100644 --- a/kernel/calls.c +++ b/kernel/calls.c @@ -196,6 +196,7 @@ syscall_t syscall_table[] = { [309] = (syscall_t) sys_ppoll, [311] = (syscall_t) sys_set_robust_list, [312] = (syscall_t) sys_get_robust_list, + [313] = (syscall_t) sys_splice, [319] = (syscall_t) sys_epoll_pwait, [320] = (syscall_t) sys_utimensat, [322] = (syscall_t) sys_timerfd_create, diff --git a/kernel/calls.h b/kernel/calls.h index fdb7b88e..ec74a5fe 100644 --- a/kernel/calls.h +++ b/kernel/calls.h @@ -149,6 +149,7 @@ dword_t sys_umask(dword_t mask); dword_t sys_sendfile(fd_t out_fd, fd_t in_fd, addr_t offset_addr, dword_t count); dword_t sys_sendfile64(fd_t out_fd, fd_t in_fd, addr_t offset_addr, dword_t count); +dword_t sys_splice(fd_t in_fd, addr_t in_off_addr, fd_t out_fd, addr_t out_off_addr, dword_t count, dword_t flags); dword_t sys_copy_file_range(fd_t in_fd, addr_t in_off, fd_t out_fd, addr_t out_off, dword_t len, uint_t flags); dword_t sys_statfs(addr_t path_addr, addr_t buf_addr); diff --git a/kernel/fs.c b/kernel/fs.c index 149c0b12..5d0f5339 100644 --- a/kernel/fs.c +++ b/kernel/fs.c @@ -961,6 +961,9 @@ dword_t sys_sendfile(fd_t UNUSED(out_fd), fd_t UNUSED(in_fd), addr_t UNUSED(offs dword_t sys_sendfile64(fd_t UNUSED(out_fd), fd_t UNUSED(in_fd), addr_t UNUSED(offset_addr), dword_t UNUSED(count)) { return _EINVAL; } +dword_t sys_splice(fd_t UNUSED(in_fd), addr_t UNUSED(in_off_addr), fd_t UNUSED(out_fd), addr_t UNUSED(out_off_addr), dword_t UNUSED(count), dword_t UNUSED(flags)) { + return _EINVAL; +} dword_t sys_copy_file_range(fd_t UNUSED(in_fd), addr_t UNUSED(in_off), fd_t UNUSED(out_fd), addr_t UNUSED(out_off), dword_t UNUSED(len), uint_t UNUSED(flags)) { return _EPERM; // good enough for ruby