【发布时间】:2016-06-15 11:14:57
【问题描述】:
我正在编写一个 linux 设备驱动程序,它在 sysfs 中公开了一个只读二进制属性,其接口是
static ssize_t read_dump_fifo(struct file *filp, struct kobject *kobj,
struct bin_attribute *attr, char __user *buffer,
loff_t f_pos, size_t size)
当我尝试 cat 或 hexdump 文件时,在前 4096 个字节之后,我的驱动程序将获得零大小的读取(size 传递 0)。为什么会发生这种情况,如果在 EOF 上不符合逻辑,我的驱动程序应该如何响应? (0 的响应表示 EOF,但任何更长的响应似乎都会引发某种缓冲区溢出。目前,我返回 -EINVAL。)
sysfs 二进制属性是否允许返回多页信息?
【问题讨论】:
-
如果相关,我使用的是内核版本 3.4.0(不幸的是,在 3.11 中对二进制属性的增强之前)。
标签: linux linux-kernel linux-device-driver embedded-linux cat