我制作了一个简单的字符设备,并创建了一个与它通信的节点。当我cat /dev/mychrdev时,它的用户空间会一次又一次地调用我的字符设备的读取函数。有关守则是:
static ssize_t useless_read(struct file *filp, char __user *buff, size_t count, loff_t *offp) {
int ret, read_count;
read_count = sprintf(message, "Major number: %d\n", MAJOR(useless_chr_dev->cdev_num));
ret = copy_to_user(buff, message, read_count);
if (ret == 0) {
printk(KERN_INFO "userspace read success");
return read_count;
} else
return -EFAULT;
}在我从终端开始读取之后,dmesg中充满了:
[ 8966.299554] userspace read success猫发出了大量的
Major number: 242
Major number: 242
Major number: 242
Major number: 242为什么不停下来?
发布于 2018-05-31 06:24:30
cat不是一次调用读取函数的问题。cat将继续调用read函数,除非您返回一个0(即不需要读取更多字节)。
https://stackoverflow.com/questions/50617831
复制相似问题