DragonOS/user/apps/tests/syscall/gvisor/blocklists
LoGin 5d0cbdcff5
feat(vfs): 实现splice和tee系统调用 (#1621)
* feat(vfs): 实现splice和tee系统调用

- 新增splice系统调用,支持管道与文件间的零拷贝数据传输
- 新增tee系统调用,实现管道间数据复制而不消耗源数据
- 为File结构体添加pos()和advance_pos()方法用于文件偏移管理
- 在pipe模块中实现splice_to_pipe()和tee_to()等核心操作
- 添加send_kernel_signal_to_current()辅助函数简化内核信号发送
- 更新测试白名单以包含splice相关测试

Signed-off-by: longjin <longjin@DragonOS.org>

* feat(ipc/pipe): 重构splice和tee实现,添加copy_from_other和transfer_chunk辅助函数

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(pipe): 修复管道读写时的信号发送与零拷贝处理逻辑

- 在管道写入时,若没有读取者,发送 SIGPIPE 信号并返回 EPIPE 错误
- 修复读取逻辑中零拷贝时的循环处理,避免因快照过期导致的无限循环

Signed-off-by: longjin <longjin@DragonOS.org>

* 1

* fix(pipe): 修复splice系统调用中管道数据竞争问题

- 为管道添加splice_hold字段,防止并发读取导致数据丢失
- 修改splice_pipe_to_file函数,使用peek+hold模式读取管道数据
- 修复sys_splice和sys_tee中的文件权限检查
- 优化管道可读性判断逻辑,正确处理splice_hold状态

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(splice): refine O_NONBLOCK handling for pipe endpoints

- Update logic to inherit O_NONBLOCK flag only from pipe endpoints, ensuring correct splice behavior for regular files.
- Clarify comments to reflect the changes in handling non-blocking flags.

Signed-off-by: longjin <longjin@DragonOS.org>

* refactor(filesystem): 移除冗余的 nonblock_prep_pipe_write 函数并优化 splice
非阻塞逻辑

- 删除`nonblock_prep_pipe_write`函数,将非阻塞检查逻辑内联至
`splice_file_to_pipe`函数中
- 优化文件到管道 splice 的非阻塞语义,使其更符合 Linux 行为
- 修复管道 epoll 事件检查逻辑,避免在 splice 持有锁时误报可读事件

Signed-off-by: longjin <longjin@DragonOS.org>

* 1

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-12 15:14:29 +08:00
..
README.md
chdir_test test(gvisor): add chdir_test and fix test runner filter formatting (#1296) 2025-09-25 19:34:45 +08:00
dup_test feat(process): 新增进程资源限制(rlimit)管理功能及相关系统调用 (#1300) 2025-09-27 22:01:34 +08:00
epoll_test
exec_test fix: sys_exec test (#1518) 2025-12-21 01:57:16 +08:00
fchdir_test feat(vfs): 添加路径遍历和目录切换的权限检查 (#1348) 2025-11-17 23:46:28 +08:00
fork_test ci: 升级构建容器版本至v1.16 (#1381) 2025-11-18 00:27:02 +08:00
itimer_test fix(signal): correct pid retrieval and signal ignoring logic (#1434) 2025-12-08 23:44:02 +08:00
lseek_test fix(vfs):调整 lseek 行为 —— 禁止 procfs SEEK_END,目录 SEEK_END 返回 MAX_LFS_FILESIZE (#1344) 2025-11-06 23:02:09 +08:00
mkdir_test fix(mkdir): 修复sys_mkdir逻辑错误和权限截断问题,并添加sys_umask (#1419) 2025-12-01 21:34:49 +08:00
mknod_test fix: fix chroot and tmpfs (#1480) 2025-12-16 14:05:27 +08:00
open_test fix(open): 修复open系统调用在gvisor下的异常表现 (#1417) 2025-12-09 22:56:52 +08:00
partitial_bad_buffer_test feat(vfs): 改进pread/pwrite和getdents的用户缓冲区处理 (#1568) 2025-12-29 11:11:57 +08:00
prctl_test feat(prctl): 实现PR_SET/GET_NO_NEW_PRIVS、PR_SET/GET_DUMPABLE、PR_SET/GET_CHILD_SUBREAPER选项 (#1538) 2025-12-23 11:24:49 +08:00
pread64_test fix(vfs): 修复 pread64 系统调用的兼容性和错误处理 (#1398) 2025-12-01 22:24:01 +08:00
preadv_test fix(vfs): 修复 pread64 系统调用的兼容性和错误处理 (#1398) 2025-12-01 22:24:01 +08:00
readv_test fix: 修复用户空间内存访问和页面回收问题 (#1522) 2025-12-22 11:53:40 +08:00
sigaltstack_test feat setitimer/getitimer and fix signal stack logic (#1377) 2025-11-19 00:33:56 +08:00
socket_test fix(net): udp getsockname/getpeername (#1460) 2025-12-14 22:04:06 +08:00
splice_test feat(vfs): 实现splice和tee系统调用 (#1621) 2026-01-12 15:14:29 +08:00
tcp_socket_test feat(net): 重构网络子系统,引入NAPI机制与TCP socket改进 (#1599) 2026-01-07 22:50:48 +08:00
timers_test feat(kernel/posix-timer): 实现 POSIX interval timer,修复 gVisor timers_test (#1501) 2025-12-18 20:37:40 +08:00
truncate_test fix(vfs): 修复truncate系统调用,添加截断时的页缓存截断,修复边界条件 (#1444) 2025-12-15 23:20:25 +08:00
udp_socket_test fix(net): Fix UDP missing features and miss polls (#1571) 2026-01-01 13:23:31 +08:00
utimes_test fix(vfs): 修复 utimensat/futimesat 系统调用边界情况以兼容 gVisor 测试 (#1431) 2025-12-05 13:23:53 +08:00
wait_test fix(process): fix wait semantics for child processes in thread groups (#1427) 2025-12-03 00:01:57 +08:00

README.md

Blocklist 目录

这个目录包含用于屏蔽特定gvisor测试子用例的blocklist文件。

文件格式

每个blocklist文件对应一个测试可执行文件文件名应与测试可执行文件名相同。

例如:

  • socket_test - 对应测试可执行文件 socket_test
  • pipe_test - 对应测试可执行文件 pipe_test

内容格式

blocklist文件中每一行包含一个要屏蔽的测试用例名称

# 这是注释行,会被忽略
# 屏蔽某个特定的测试用例
TestCase.SpecificTest
# 屏蔽某个测试套件下的所有测试
TestSuite.*
# 屏蔽包含特定模式的测试
*PatternName*

注意事项

  • # 开头的行会被视为注释并忽略
  • 空行会被忽略
  • 支持通配符模式匹配
  • 测试用例名称格式通常为 TestSuite.TestCase

示例

如果要屏蔽socket_test中的某些测试创建文件socket_test

# 屏蔽IPv6相关的测试暂不支持
SocketTest.IPv6*
# 屏蔽特定的不稳定测试
SocketTest.UnstableTest