svn commit: r365034 - in stable/12/sys: amd64/linux amd64/linux32 arm64/linux compat/linux i386/linux
Edward Tomasz Napierala
trasz at FreeBSD.org
Tue Sep 1 12:09:15 UTC 2020
Author: trasz
Date: Tue Sep 1 12:09:13 2020
New Revision: 365034
URL: https://svnweb.freebsd.org/changeset/base/365034
Log:
MFC r363304:
Add a trivial linux(4) splice(2) implementation, which simply
returns EINVAL. Fixes grep (grep-3.1-2build1).
PR: 218699
Sponsored by: The FreeBSD Foundation
Modified:
stable/12/sys/amd64/linux/linux_dummy.c
stable/12/sys/amd64/linux/syscalls.master
stable/12/sys/amd64/linux32/linux32_dummy.c
stable/12/sys/amd64/linux32/syscalls.master
stable/12/sys/arm64/linux/linux_dummy.c
stable/12/sys/arm64/linux/syscalls.master
stable/12/sys/compat/linux/linux_file.c
stable/12/sys/i386/linux/linux_dummy.c
stable/12/sys/i386/linux/syscalls.master
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/amd64/linux/linux_dummy.c
==============================================================================
--- stable/12/sys/amd64/linux/linux_dummy.c Tue Sep 1 11:34:05 2020 (r365033)
+++ stable/12/sys/amd64/linux/linux_dummy.c Tue Sep 1 12:09:13 2020 (r365034)
@@ -106,7 +106,6 @@ DUMMY(inotify_rm_watch);
DUMMY(migrate_pages);
DUMMY(unshare);
/* Linux 2.6.17: */
-DUMMY(splice);
DUMMY(tee);
DUMMY(vmsplice);
/* Linux 2.6.18: */
Modified: stable/12/sys/amd64/linux/syscalls.master
==============================================================================
--- stable/12/sys/amd64/linux/syscalls.master Tue Sep 1 11:34:05 2020 (r365033)
+++ stable/12/sys/amd64/linux/syscalls.master Tue Sep 1 12:09:13 2020 (r365034)
@@ -465,7 +465,8 @@
l_size_t len); }
274 AUE_NULL STD { int linux_get_robust_list(l_int pid, \
struct linux_robust_list_head **head, l_size_t *len); }
-275 AUE_NULL STD { int linux_splice(void); }
+275 AUE_NULL STD { int linux_splice(int fd_in, l_loff_t *off_in, \
+ int fd_out, l_loff_t *off_out, l_size_t len, l_uint flags); }
276 AUE_NULL STD { int linux_tee(void); }
277 AUE_NULL STD { int linux_sync_file_range(l_int fd, l_loff_t offset,
l_loff_t nbytes, unsigned int flags); }
Modified: stable/12/sys/amd64/linux32/linux32_dummy.c
==============================================================================
--- stable/12/sys/amd64/linux32/linux32_dummy.c Tue Sep 1 11:34:05 2020 (r365033)
+++ stable/12/sys/amd64/linux32/linux32_dummy.c Tue Sep 1 12:09:13 2020 (r365034)
@@ -103,7 +103,6 @@ DUMMY(inotify_rm_watch);
DUMMY(migrate_pages);
DUMMY(unshare);
/* Linux 2.6.17: */
-DUMMY(splice);
DUMMY(tee);
DUMMY(vmsplice);
/* Linux 2.6.18: */
Modified: stable/12/sys/amd64/linux32/syscalls.master
==============================================================================
--- stable/12/sys/amd64/linux32/syscalls.master Tue Sep 1 11:34:05 2020 (r365033)
+++ stable/12/sys/amd64/linux32/syscalls.master Tue Sep 1 12:09:13 2020 (r365034)
@@ -524,7 +524,8 @@
l_size_t len); }
312 AUE_NULL STD { int linux_get_robust_list(l_int pid, \
struct linux_robust_list_head **head, l_size_t *len); }
-313 AUE_NULL STD { int linux_splice(void); }
+313 AUE_NULL STD { int linux_splice(int fd_in, l_loff_t *off_in, \
+ int fd_out, l_loff_t *off_out, l_size_t len, l_uint flags); }
314 AUE_NULL STD { int linux_sync_file_range(l_int fd, uint32_t offset1,
uint32_t offset2, uint32_t nbytes1, uint32_t nbytes2,
unsigned int flags); }
Modified: stable/12/sys/arm64/linux/linux_dummy.c
==============================================================================
--- stable/12/sys/arm64/linux/linux_dummy.c Tue Sep 1 11:34:05 2020 (r365033)
+++ stable/12/sys/arm64/linux/linux_dummy.c Tue Sep 1 12:09:13 2020 (r365034)
@@ -99,7 +99,6 @@ DUMMY(inotify_rm_watch);
DUMMY(migrate_pages);
DUMMY(unshare);
/* Linux 2.6.17: */
-DUMMY(splice);
DUMMY(tee);
DUMMY(vmsplice);
/* Linux 2.6.18: */
Modified: stable/12/sys/arm64/linux/syscalls.master
==============================================================================
--- stable/12/sys/arm64/linux/syscalls.master Tue Sep 1 11:34:05 2020 (r365033)
+++ stable/12/sys/arm64/linux/syscalls.master Tue Sep 1 12:09:13 2020 (r365034)
@@ -413,7 +413,14 @@
int linux_vmsplice(void);
}
76 AUE_NULL STD {
- int linux_splice(void);
+ int linux_splice(
+ int fd_in,
+ l_loff_t *off_in,
+ int fd_out,
+ l_loff_t *off_out,
+ l_size_t len,
+ l_uint flags
+ );
}
77 AUE_NULL STD {
int linux_tee(void);
Modified: stable/12/sys/compat/linux/linux_file.c
==============================================================================
--- stable/12/sys/compat/linux/linux_file.c Tue Sep 1 11:34:05 2020 (r365033)
+++ stable/12/sys/compat/linux/linux_file.c Tue Sep 1 12:09:13 2020 (r365034)
@@ -1618,3 +1618,17 @@ linux_fallocate(struct thread *td, struct linux_falloc
return (kern_posix_fallocate(td, args->fd, offset, len));
}
+
+int
+linux_splice(struct thread *td, struct linux_splice_args *args)
+{
+
+ linux_msg(td, "syscall splice not really implemented");
+
+ /*
+ * splice(2) is documented to return EINVAL in various circumstances;
+ * returning it instead of ENOSYS should hint the caller to use fallback
+ * instead.
+ */
+ return (EINVAL);
+}
Modified: stable/12/sys/i386/linux/linux_dummy.c
==============================================================================
--- stable/12/sys/i386/linux/linux_dummy.c Tue Sep 1 11:34:05 2020 (r365033)
+++ stable/12/sys/i386/linux/linux_dummy.c Tue Sep 1 12:09:13 2020 (r365034)
@@ -99,7 +99,6 @@ DUMMY(inotify_rm_watch);
DUMMY(migrate_pages);
DUMMY(unshare);
/* Linux 2.6.17: */
-DUMMY(splice);
DUMMY(tee);
DUMMY(vmsplice);
/* Linux 2.6.18: */
Modified: stable/12/sys/i386/linux/syscalls.master
==============================================================================
--- stable/12/sys/i386/linux/syscalls.master Tue Sep 1 11:34:05 2020 (r365033)
+++ stable/12/sys/i386/linux/syscalls.master Tue Sep 1 12:09:13 2020 (r365034)
@@ -532,7 +532,8 @@
l_size_t len); }
312 AUE_NULL STD { int linux_get_robust_list(l_int pid, \
struct linux_robust_list_head **head, l_size_t *len); }
-313 AUE_NULL STD { int linux_splice(void); }
+313 AUE_NULL STD { int linux_splice(int fd_in, l_loff_t *off_in, \
+ int fd_out, l_loff_t *off_out, l_size_t len, l_uint flags); }
314 AUE_NULL STD { int linux_sync_file_range(l_int fd, l_loff_t offset,
l_loff_t nbytes, unsigned int flags); }
315 AUE_NULL STD { int linux_tee(void); }
More information about the svn-src-all
mailing list