内核filp_open vfs_read 对比 用户态open read性能如何?
是不是性能会快些?另外有个疑问,既然在内核访问,为什么还用用户空间的zi'zen
在vfs_read和vfs_write函数中,其参数buf指向的用户空间的内存地址,如果我们直接使用内核空间的指针,则会返回-Exxx。所以我们需要使用set_fs()和get_fs()宏来改变内核对内存地址检查的处理方式。
这俩是怎么比到一起的,哪个场景下会需要在这两个函数中做比较?
硬要说前者是复用后者的代码吧,大概就能省一个系统调用,性能好不到哪去,默认用用户态地址也是同理,而且也不建议在内核态打开文件。 因为这些函数设计上只允许用户态走syscall调用,所以检查了指针的地址空间 谢谢2位, filp_open这个函数太坑,除了判断返回值是否NULL,还要判断IS_ERR https://lists.infradead.org/pipermail/linux-arm-kernel/2012-October/126191.html 看了下,新版本内核(4.19以后)已经定义了kernel_write函数
页:
[1]