]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tests: yes: support more zero-copy related syscalls
authoroech3 <79379754+oech3@users.noreply.github.com>
Mon, 23 Mar 2026 13:28:22 +0000 (22:28 +0900)
committerPádraig Brady <P@draigBrady.com>
Tue, 24 Mar 2026 20:35:01 +0000 (20:35 +0000)
* tests/misc/yes.sh: Disable other related zero-copy syscalls
to ensure better testing of future or other implementations.
https://github.com/coreutils/coreutils/pull/227

tests/misc/yes.sh

index 56d89a36ad063e7b90a3be7f6625a75a0d718f72..a31001b7b1dbbc61c4bc8dc2989a309119246c57 100755 (executable)
@@ -63,10 +63,19 @@ if timeout 10 true; then
   test $? = 124 || fail=1
 fi
 
-# Ensure we fallback to write() if there is an issue with vmsplice
-no_vmsplice() { strace -f -o /dev/null -e inject=vmsplice:error=ENOSYS "$@"; }
-if no_vmsplice true; then
-  test "$(no_vmsplice yes | head -n2 | paste -s -d '')" = 'yy' || fail=1
+# Ensure we fallback to write() if there is an issue with (async) zero-copy
+zc_syscalls='io_uring_setup io_uring_enter io_uring_register memfd_create
+             sendfile splice tee vmsplice'
+syscalls=$(
+  for s in $zc_syscalls; do
+    strace -qe "$s" true >/dev/null 2>&1 && echo "$s"
+  done | paste -s -d,)
+
+no_zero_copy() {
+  strace -f -o /dev/null -e inject=${syscalls}:error=ENOSYS "$@"
+}
+if no_zero_copy true; then
+  test "$(no_zero_copy yes | head -n2 | paste -s -d '')" = 'yy' || fail=1
 fi
 # Ensure we fallback to write() if there is an issue with pipe2()
 # For example if we don't have enough file descriptors available.