据我了解,传统上,Linux 内核对于添加新的系统调用持保守态度。
但是,我已经了解了 的存在copy_file_range
,它似乎与 做完全相同的事情sendfile
。我能发现的唯一区别是:
- 根本不适用于套接字,仅适用于正确的常规文件
- 允许设置输入和输出偏移
但对于常规文件, aseek
可能会实现相同的偏移语义,所以现在我很困惑copy_file_range
系统调用的目的是什么,如果它的功能是 San 现有系统调用的严格子集?特别是因为寻找作为一个单独的事情可以非常明智地单独完成,所以不要进一步延长在内核空间中花费的时间。(通常,操作系统设计的目标是使操作系统调用不被阻塞,并且在控制权已经交还给用户态的同时可以完成物理查找。)