我正在实现一个可以进行部分读写的Linux设备驱动程序。例如,调用者可能已请求从设备读取N个字节,但遇到了错误的部分路径,现在驱动程序有M个字节可用于传回用户空间。
如何将错误报告回用户空间?例如,我通常会在发生I / O错误时执行类似return -EIO;
的操作,但这并不能说明整个故事(即,调用者可能对仍有M个可用字节这一事实感兴趣)。
我知道设置errno
不是内核空间中的事情(参见这里:"'errno' undeclared" when compile Linux kernel),但是在我的场景中有什么方法可以返回M,还要说明短读的原因?这通常由其他设备驱动程序处理?您是否只返回错误代码并且不尝试指示缓冲区的哪一部分可用?