我正在尝试创建一个小的char设备驱动程序,它将文件创建为/dev/foobar
。在文件操作回调中,我有
ssize_t read(file* filp, char* buf, size_t count, loff_t* f_pos)
{
printk(KERN_INFO "device_read(%p,%s,%d)", filp, buf, count);
return 0;
}
ssize_t write(file* filp, char* buf, size_t count, loff_t* f_pos)
{
printk(KERN_INFO "device_write(%p,%s,%d)", filp, buf, count);
return 0;
}
但是当我尝试使用cat /dev/foobar
从文件中读取时,它会完全填充消息缓冲区并且系统停止运行并且我必须删除/var/log/
或其中的一些内容,因为我的虚拟驱动器是满。
我不能用Ctrl-C
或其他东西中止阅读。我怎样才能使这个过程流产?