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

驱动程序的write问题

    来源: 互联网  发布时间:2016-07-23

    本文导语:  我整了一个开发板的字符驱动,交叉编译的,运行起来没问题,以后跑客户程序,简单的: open后ioctl然后再write,但问题是open和ioctl都能调用到驱动中的注册函数,即struct file_operations中的 struct file_operations ed_ops ={ ...

我整了一个开发板的字符驱动,交叉编译的,运行起来没问题,以后跑客户程序,简单的:
open后ioctl然后再write,但问题是open和ioctl都能调用到驱动中的注册函数,即struct file_operations中的
struct file_operations ed_ops ={
   .owner = THIS_MODULE,
   .read = device_read,
   .write = device_write,
   .ioctl = device_ioctl,
   .open = device_open,
   ...    
};
到write(fs,buf,len);即开始向设备文件中写的时候就总是返回-1,关键是没有调用到device_write。
而同样的程序在linux2.6版本下,用gcc编译后能write正常。
不知什么原因?如果不行那应该都不行,但是open,和ioctl可以

|
贴代码才是正途。。

|
可以读吗?

|
能看到printk打印信息,说明系统可写.换个内存分配方式.

-- static unsigned char demoBuffer[256]; 
++ char *demoBuffer;

int DEMO_init_module(void) 
{
......
     if(result)
    {
        printk(KERN_NOTICE "Error %d adding DEMOn", result);
        goto fail;
    } 
++ if ((demoBuffer = kmalloc(sizeof(char) * 256, GFP_KERNEL)) == NULL) {

|
会不会是缓冲?用系统调用sys_write 还是直接调用的?
如果是sys_write的话, 使用了页缓冲,并没有马上写,因此不会调用device_write.

|
这个问题我建议你还是一层一层的跟下去, 字符驱动上面的一层是基本的文件调用sys_write, 最低层的write没有调用到可能是在它的上面一层就歇菜了, 你要把那个代码点找到, 然后看看是什么原因导致的.

"__ratelimit: 1692149 messages suppressed
BUG ed0 code -16 qlen 0" 
这个错误说明你在做write的时候陷入一个死循环了, 他在不断得打印BUG ed0 code -16 qlen 0. 这样子当然不会往下走了.

|
  发帖子真是越来越贵了,有钱发帖的也越来越少。

|
楼主是不是开了cache导致无法访问外设?

    
 
 

您可能感兴趣的文章:

  • 我的网卡在redhat7.3下不能自动驱动,但我有for linux的驱动程序,请问如何才能驱动我的网卡,我是菜菜,请详细说明,谢谢!
  • 关于Linux 2.6平台下,自定义的USB HID设备是系统提供驱动程序还是需要自己完成驱动程序?
  • 哪位大哥大姐懂驱动驱动程序开发哇?
  • 有两个USB键盘怎么用自己写的USB键盘驱动程序只替换其中一个驱动?
  • -------------- 请问大家,做好一个PCI设备驱动了,如何做个应用程序来使用这个驱动呢??
  • 请问, linux 驱动中, IO 口变化了,驱动如何通知应用程序?
  • 各位老大,你们是从哪些方面改进网卡驱动程序的效率,欧现在写了一个lan91c嵌入式网卡的驱动,需要帮助
  • USB的ADSL驱动程序!!(可以驱动电信的ADSL)
  • 各位高人,关于IDE的驱动程序,我看蒙了,谁能告诉我到底linux源文件中到底那些是跟IDE硬盘驱动有关的?
  • 有触摸屏驱动程序源代码,怎么写一个命令行的程序测试驱动程序?
  • 驱动程序(模块)怎样与应用层交互呀?也就是应用程序怎样控制驱动程序?让其做什么它就做什么。
  • 谁会在DOS下面安装网卡驱动程序?
  • 两个驱动程序能互相访问么?
  • 驱动程序是否需要修改呢?帮顶有分
  • Norflash是否一定要驱动程序
  • 请问UNIX系统下装上WINDOWS的打印机驱动程序,可否打印?
  • 我太菜!!关于驱动程序的问题,急盼拍砖
  • 驱动程序开发和嵌入式开发有什么联系吗?
  • usbhid妨碍了系统自动加载我的usb驱动程序,求教解决 (主要是加载后设备的驱动被认作usbhid)
  • 用户程序的ioctl是怎么和驱动程序中的ioctl实现联系
  • 谁有LINUX设备驱动程序第三版的程序代码,发我一份,非常的感谢!
  • 请问如何设置驱动程序和应用程序的启动顺序和优先级呢?
  • 请问shell 开发能开发什么样的程序?硬件的驱动程序是否能够开发呢?
  • 两个驱动程序能互相访问么? iis7站长之家
  • linux驱动程序是怎样通过内核和应用程序通信,还有是怎样和硬件通信,跪求求解,谢谢高手留言。
  • 菜鸟请教,应用程序如何判断驱动程序已经挂载成功
  • 在哪里可以下载OREILLY的linux设备驱动程序一书的程序源代码?在线送分!
  • 怎样才能得到Redhat8.0支持的所有打印机的驱动程序列表文件,我程序里要用。先谢过
  • linux初学者一简单问题!在线送分!linux设备驱动程序一书的第一个程序.
  • 开发网卡驱动程序一般用什么现成的程序或者工具来测试(调试)
  • 请教下,应用程序使用通过驱动程序使用设备的过程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有好多关于《linux设备驱动程序第三版》的问题,哪里问合适呢?
  • 有关于驱动程序的问题。一定给分的。
  • linux和windows的驱动程序是一样的吗??
  • 请问哪里有声卡的驱动程序下载?
  • 移植PCI驱动程序,提示找不到iobuf.h
  • 请教!关于linux字符驱动程序
  • 在Linux下作设备驱动程序应如何入手
  • 烦恼:看不懂“Linux设备驱动程序(第二版)”!
  • 动态加载网络驱动程序问题
  • 如何把我的硬件设备和我的驱动程序连接起来
  • Intel显卡的Linux驱动程序
  • Linux下的NTFS驱动程序 NTFS-3G
  • 通过JdbcOdbcDriver连接Access出现“未发现数据源名称并且未指定默认驱动程序”
  • 哪儿可以下载到连接Interbase 的JDBC驱动程序?
  • 驱动程序的问题,急!!!(在线等!!!)
  • 如何获得MYSQL驱动程序接口?
  • 请教各位大大 怎样编写LINUX触摸屏的驱动程序?
  • 关于驱动程序的问题
  • LINUX下如何调用网卡驱动程序?
  • 红旗linux6.0安装提示找不到任何驱动程序,该怎么办啊


  • 站内导航:


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

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

    浙ICP备11055608号-3