找回密码
 立即注册
搜索
查看: 2136|回复: 6

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

[复制链接]
     
发表于 2024-6-11 21:33 | 显示全部楼层 |阅读模式
是不是性能会快些?



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

回复

使用道具 举报

     
发表于 2024-6-12 10:16 来自手机 | 显示全部楼层
这俩是怎么比到一起的,哪个场景下会需要在这两个函数中做比较?
硬要说前者是复用后者的代码吧,大概就能省一个系统调用,性能好不到哪去,默认用用户态地址也是同理,而且也不建议在内核态打开文件。
回复

使用道具 举报

     
发表于 2024-6-12 12:05 | 显示全部楼层
因为这些函数设计上只允许用户态走syscall调用,所以检查了指针的地址空间
回复

使用道具 举报

     
 楼主| 发表于 2024-6-12 19:03 | 显示全部楼层
谢谢2位,
回复

使用道具 举报

     
 楼主| 发表于 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
回复

使用道具 举报

     
 楼主| 发表于 2024-8-18 23:22 | 显示全部楼层
看了下,新版本内核(4.19以后)已经定义了kernel_write函数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-28 04:58 , Processed in 0.040702 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表