QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1054|回复: 7

驱动程序里的奇怪错误

[复制链接]
发表于 2004-2-5 13:29:31 | 显示全部楼层 |阅读模式
以下我的第一个驱动程序代码,但似乎我对编写驱动程序的理解不对
在编译时有奇怪的错误,大虾们帮忙指点一下
#include<linux/kernel.h>
#include<linux/module.h>
#include<linux/fs.h>

static int major;

int my_open(struct inode *inode,struct file *filp)
{
    MOD_INC_USE_COUNT;
    printk(KERN_ALERT"Device is open\n");
    return 0;
}

int my_release(struct inode *inode, struct file *filp)
{
    MOD_DEC_USE_COUNT;
    printk(KERN_ALERT"Device is closed\n");
    return 0;
}

struct file_operations my_ops={
                open: my_open,
               release:my_release,
                               };
                           
int init_module(void)
{
    major=register_chrdev(0,"mydriver",&my_ops);
    if(major<=0)
    {
       printk(KERN_ALERT"Fails to register_chrdev()\n");
       return major;
    }
    return 0;
}

void cleanup_module(void)
{
    major=unregister_chrdev(major,"mydriver");
    if(major!=0)
      printk(KERN_ALERT"Fails to call unregister_chrdev()\n");
}


gcc -Wall -O2 -D__KERNEL__ -DMODULE -c mydriver.c

提示错误信息:my_ops的大小不能确定,且不识别open和release
还有警告信息:在用户区程序里使用了核心的头文件
发表于 2004-2-5 20:34:50 | 显示全部楼层

Re: 驱动程序里的奇怪错误

struct file_operations my_ops={
                open: my_open,
               release:my_release,
                               };

c里的结构定义,初始化怎么会这么写呢?
回复

使用道具 举报

 楼主| 发表于 2004-2-5 21:37:30 | 显示全部楼层
是我的struct file_operations用错了吗? 可是不少书上是如此的呀?
回复

使用道具 举报

发表于 2004-2-5 21:45:56 | 显示全部楼层

Re: 驱动程序里的奇怪错误

[quote:595cb68e7f="muddog"]struct file_operations my_ops={
                open: my_open,
               release:my_release,
                               };

c里的结构定义,初始化怎么会这么写呢?[/quote]

gcc对c的扩展
回复

使用道具 举报

发表于 2004-2-5 21:47:31 | 显示全部楼层
release:my_release,


这个后面有逗号??
回复

使用道具 举报

 楼主| 发表于 2004-2-6 00:58:35 | 显示全部楼层
我刚刚找到错误了,是由于Makefile中的头文件地址没写正确,是个老问题了。


[quote:20e0e9ea03="_z_"]release:my_release,


这个后面有逗号??[/quote]

有些书上是没有这个逗号的,但似乎系统源文件中是有的。
回复

使用道具 举报

发表于 2004-2-6 09:45:52 | 显示全部楼层
说说这个扩展的含义,
release:my_release
是不是release是指向my_release的指针?
回复

使用道具 举报

发表于 2004-2-6 13:18:28 | 显示全部楼层
[quote:d43af28b60="muddog"]说说这个扩展的含义,
release:my_release
是不是release是指向my_release的指针?[/quote]

将release初始化my_release
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 10:43 , Processed in 0.070783 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表