linux make报错 望大侠指点

daybing 2009-04-01 09:27:21
make时错误提示为:
87:警告: 从不兼容的指针类型初始化
88:警告: 众不兼容的指针类型初始化
90:警告: 从不兼容的指针类型初始化
源代码为:
struct file_operations fakedev_fops= {
.read = fakedev_read, //87行
.write = fakedev_write, //88行
.open = fakedev_open, //89行
.release = fakedev_release, //90行
};

这是在开make一个驱动时报的错。按理说这样初始化file_operations没有错啊,奇怪了,第89行为什么就没报错?
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
daybing 2009-04-01
  • 打赏
  • 举报
回复
谢谢两位大侠,果然跟两位大侠说的一样,刚才看了内核fs.h头文件,果然跟定义的参数类型不一样,改过来就不报错了,编译通过。
daybing 2009-04-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 morris88 的回复:]
藐似 fakedev_read, fakedev_write, fakedev_release 的函数定义与 struct file_operations 的申明不一致。
[/Quote]
linux里struct file_operations的定义应该是一样的吧,难道不同的内核版本还有差别?
daybing 2009-04-01
  • 打赏
  • 举报
回复
static ssize_t fakedev_read(struct file *f, char *buf, int size, loff_t off)
static ssize_t fakedev_write(struct file *f, const char *buf, int size, loff_t off)
static void fakedev_release(struct inode *inode, struct file *file)

这是一本驱动开发书上的一个例子,虚拟的一个简单设备,不涉及硬件操作。
morris88 2009-04-01
  • 打赏
  • 举报
回复
藐似 fakedev_read, fakedev_write, fakedev_release 的函数定义与 struct file_operations 的申明不一致。
嵌云阁主 2009-04-01
  • 打赏
  • 举报
回复
你提供的回调函数与定义的不同,查.read, .write, .release的函数原型。

21,609

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧