b0207191 发表于 2024-6-11 21:33

内核filp_open vfs_read 对比 用户态open read性能如何?

是不是性能会快些?



另外有个疑问,既然在内核访问,为什么还用用户空间的zi'zen
在vfs_read和vfs_write函数中,其参数buf指向的用户空间的内存地址,如果我们直接使用内核空间的指针,则会返回-Exxx。所以我们需要使用set_fs()和get_fs()宏来改变内核对内存地址检查的处理方式。

indtability 发表于 2024-6-12 10:16

这俩是怎么比到一起的,哪个场景下会需要在这两个函数中做比较?
硬要说前者是复用后者的代码吧,大概就能省一个系统调用,性能好不到哪去,默认用用户态地址也是同理,而且也不建议在内核态打开文件。

Kiriz 发表于 2024-6-12 12:05

因为这些函数设计上只允许用户态走syscall调用,所以检查了指针的地址空间

b0207191 发表于 2024-6-12 19:03

谢谢2位,

b0207191 发表于 2024-7-12 14:18

filp_open这个函数太坑,除了判断返回值是否NULL,还要判断IS_ERR

不要叫水狗做主人 发表于 2024-7-14 02:20

https://lists.infradead.org/pipermail/linux-arm-kernel/2012-October/126191.html

b0207191 发表于 2024-8-18 23:22

看了下,新版本内核(4.19以后)已经定义了kernel_write函数
页: [1]
查看完整版本: 内核filp_open vfs_read 对比 用户态open read性能如何?