请问我现在有一段代码,主要功能就是注册一个设备,每次执行写入操作的时候都提示一个错误:这个设备不支持写入功能
于是我有一个结构体:
static struct file_operations fops = {
.read = device_read,
.write = device_write,
.open = device_open,
.release = device_release
};
其中除了device_write以外都好使。。现在就差这个device_write了
device_write是这样写的:
static ssize_t device_write(struct file *filp
, const char __user *buffer
, size_t length, loff_t *offset)
{
printk(KERN_ALERT "Sorry, this“
” operation isn't suppoerted.\n");
return -EINVAL;
}
注册后设备是这样的 mknod hello c 249 0
然后执行echo "123" > hello的时候就会报一个错误:
bash: echo: write error: 无效的参数
而且我把fs.h里面所有的头文件也都看了一遍。。都没找到file_operations这个结构体定义的地方。。我是2.6.31。。谢谢大家了
pappercut 于 2010-01-24 15:17:28发表:
第二个问题解决了。。在/lib/modules里
第一个还是有问题,用ssize_t write(int fd, const void *buf, size_t count)就不会报错
用echo+重定向就报错///