版本:openEuler 22.03-LTS
组件:kernel
分类:文件系统
来源:总结/咨询
【背景及现象描述】
驱动调用kernel_read函数打开"/proc/self/cpuset"时出错,日志如下:
【原因分析】
查看kernel_read函数源码,定位到出现错误打印的地方
可以看到是由于不满足433行判断条件才返回的错误,该条件判断表示传入的file的fs应当支持read_iter。5.10内核中如果调用kernel_read/kernel_write需要传入的file对应的fs支持read_iter/write_iter接口,而传入的file为打开的"/proc/self/cpuset",查看proc文件系统可以看到其并不支持read_iter接口。
【解决方法】
不要调用kernel_read函数,直接在用户态调用open\read函数即可。