红联Linux门户
Linux帮助

一个关于linux/fs.h下file_operations的问题

发布时间:2010-01-23 19:17:32来源:红联作者:pappercut
请问我现在有一段代码,主要功能就是注册一个设备,每次执行写入操作的时候都提示一个错误:这个设备不支持写入功能

于是我有一个结构体:
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。。谢谢大家了
文章评论

共有 1 条评论

  1. pappercut 于 2010-01-24 15:17:28发表:

    第二个问题解决了。。在/lib/modules里

    第一个还是有问题,用ssize_t write(int fd, const void *buf, size_t count)就不会报错
    用echo+重定向就报错///