Я сделал простое символьное устройство и создал узел для связи с ним.Когда я 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
Почему это не останавливается?