当前位置:  技术问答>linux和unix

初学字符设备驱动遇到的问题

    来源: 互联网  发布时间:2016-10-12

    本文导语:  最近在学linux的设备驱动,我把书上的示例简化了下,加载是都正确的,但是用应用程序调用时,会提示段错误。看样子似乎是应用程序打开我的驱动时,驱动没有返回一个正确的指针给应用程序导致的。是不是在写x...

最近在学linux的设备驱动,我把书上的示例简化了下,加载是都正确的,但是用应用程序调用时,会提示段错误。看样子似乎是应用程序打开我的驱动时,驱动没有返回一个正确的指针给应用程序导致的。是不是在写xxx_open函数的时候,需要返回一个指针呢?

|
多加一些perror语句,确认是open还是ioctl之后才段错误的
schar.h 也沾上来

|
宏THIS_MODULE,它的定义如下是#define THIS_MODULE (&__this_module),__this_module是一个struct module变量,代表当前模块,跟current有几分相似。可以通过THIS_MODULE宏来引用模块的struct module结构,试试下面的模块:
    #include 

    MODULE_LICENSE("Dual BSD/GPL");

    static int hello_init(void)
    {
        unsigned int cpu = get_cpu();
        struct module *mod;
        printk(KERN_ALERT "this module: %p==%pn", &__this_module, THIS_MODULE );
        printk(KERN_ALERT "module state: %dn", THIS_MODULE->state );
        printk(KERN_ALERT "module name: %sn", THIS_MODULE->name );
        list_for_each_entry(mod, *(&THIS_MODULE->list.prev), list )
                printk(KERN_ALERT "module name: %sn", mod->name );
        return 0;
    }

    static void hello_exit(void)
    {
        printk(KERN_ALERT "module state: %dn", THIS_MODULE->state );
    }

    module_init(hello_init);
    module_exit(hello_exit);

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 初学 java 的朋友来和我交朋友,我也是初学。我的 QQ 号是 33555085
  • 又一个初学者的困惑!如果您是个大虾,请你一定要进来看看,指点迷津!如果您也是个初学者,那么您也一定要进来,也许我们有一样的遭遇!
  • 初学者的问题我是linux初学者,我想问一下在windows里下载的大于1.44M文件如何转移到linux分区里?
  • 我是个初学者,希望指点明津
  • 初学者用什么工具好?JBUILDER?JDK?
  • 对于初学者应该看什么样的java书籍
  • 初学java应该看那些书?
  • 初学linux看哪本书好?
  • 初学java,该看那些书,请朋友们指教
  • 我是初学者,该用什么java的“编译器”????
  • 初学java什么书好?
  • 对于初学者应该看什么样的书
  • 初学者:不是问题的问题?
  • 初学者这样检验自己的学习效果呢?
  • 初学JAVA,用哪个软件来调试和编译程序?
  • 初学者的问题??在线等待。
  • 各位高手大家好,我是初学LINUX想请教几个问题
  • 初学者的疑问
  • 从初学Linux到内核开发
  • 初学java的话,从何入手呢?vj++,还是jbuilder?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3