* 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> |
||
|---|---|---|
| .. | ||
| README.md | ||
| chdir_test | ||
| dup_test | ||
| epoll_test | ||
| exec_test | ||
| fchdir_test | ||
| fork_test | ||
| itimer_test | ||
| lseek_test | ||
| mkdir_test | ||
| mknod_test | ||
| open_test | ||
| partitial_bad_buffer_test | ||
| prctl_test | ||
| pread64_test | ||
| preadv_test | ||
| readv_test | ||
| sigaltstack_test | ||
| socket_test | ||
| splice_test | ||
| tcp_socket_test | ||
| timers_test | ||
| truncate_test | ||
| udp_socket_test | ||
| utimes_test | ||
| wait_test | ||
README.md
Blocklist 目录
这个目录包含用于屏蔽特定gvisor测试子用例的blocklist文件。
文件格式
每个blocklist文件对应一个测试可执行文件,文件名应与测试可执行文件名相同。
例如:
socket_test- 对应测试可执行文件socket_testpipe_test- 对应测试可执行文件pipe_test
内容格式
blocklist文件中每一行包含一个要屏蔽的测试用例名称:
# 这是注释行,会被忽略
# 屏蔽某个特定的测试用例
TestCase.SpecificTest
# 屏蔽某个测试套件下的所有测试
TestSuite.*
# 屏蔽包含特定模式的测试
*PatternName*
注意事项
- 以
#开头的行会被视为注释并忽略 - 空行会被忽略
- 支持通配符模式匹配
- 测试用例名称格式通常为
TestSuite.TestCase
示例
如果要屏蔽socket_test中的某些测试,创建文件socket_test:
# 屏蔽IPv6相关的测试(暂不支持)
SocketTest.IPv6*
# 屏蔽特定的不稳定测试
SocketTest.UnstableTest