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

简单的字符设备驱动程序居然出错!大家帮忙看看哈^_^

    来源: 互联网  发布时间:2015-10-11

    本文导语:  //chardev.c #include  #include  #include      #include                           #define SUCCESS 0 #define DEVICE_NAME "char_dev" #define BUF_LEN 80 static int Device_Open=0; static char Message[BUF_LEN]; static char *Message_Ptr; static i...

//chardev.c
#include 
#include 
#include     
#include 
                        
#define SUCCESS 0
#define DEVICE_NAME "char_dev"
#define BUF_LEN 80
static int Device_Open=0;
static char Message[BUF_LEN];
static char *Message_Ptr;

static int device_open(struct inode *inode,struct file *file)
{
    static int counter=0;
#ifdef DEBUG
    printk("device_open(%p,%p)n",inode,file);
#endif
    if(Device_Open)
        return -EBUSY;
    Device_Open++;
    sprintf(Message,"If I told you once, I told you %d times-Hello,world!n",counter++);
    Message_Ptr=Message;
    MOD_INC_USE_COUNT;
    return SUCCESS;
}
static void device_release(struct inode *inode,struct file *file)
{
#ifdef DEBUG
    printk("device_release(%p,%p)n",inode,file);
#endif
    Device_Open--;
    MOD_DEC_USE_COUNT;
}

static int device_read(struct inode *inode,
                       struct file *file,
                       char *buffer,
                       int length)
{
    int bytes_read=0;
#ifdef DEBUG
    printk("device_read(%p,%p,%p,%d)n",inode,file,buffer,length);
#endif
    if(*Message_Ptr==0)
        return 0;
    while(length && *Message_Ptr)
    {
        put_user(*(Message_Ptr++),buffer++);
        length--;
        bytes_read++;
    }
#ifdef DEBUG
    printk("Read %d bytes,%d leftn",bytes_read,length);
#endif
    return bytes_read;
}
static int device_write(struct inode *inode,
                        struct file *file,
                        const char *buffer,
                        int length)
{
#ifdef DEBUG
    printk("device_write(%p,%p,%s,%d)n",inode,file,buffer,length);
#endif
    return -EINVAL;
}
static int Major;
struct file_operations Fops={
    NULL,
    device_read,
    device_write,
    NULL,
    NULL,
    NULL,
    NULL,
    device_open,
    device_release
};
int init_module()
{
    Major=module_register_chrdev(0,
        DEVICE_NAME,
        &Fops);
    if(Major

    
 
 

您可能感兴趣的文章:

  • linux驱动程序如何加版本字符串
  • 字符设备驱动程序问题
  • 请教!关于linux字符驱动程序
  • 自己编写一个简单的字符设备驱动程序以后,改怎么使用它?
  • 在编译字符驱动程序时,为何总是找不到头文件!急......
  • 字符驱动程序的疑问!
  • 请教高手,有关字符设备驱动程序问题
  • 请问在linux下的字符界面下如何使用优盘?需要安装驱动程序吗?
  • 有关ldd中字符驱动程序的scull_devices
  • 字符设备驱动程序编写中,被读写的数据到底应该定义在什么地方?
  • 段错误____书上的最简单字符驱动,生成了模块.另一个测试程序(写1操作).
  • 简单的字符设备驱动程序问题
  • 弱弱的问一个,简单字符设备驱动程序,打开文件错误问题。
  • 第一人入门字符设备驱动程序的问题
  • 参照网上写的一个简单字符驱动程序,为什么只能用一次
  • 加载混杂字符设备驱动在/dev/下没有出现设备文件,请帮忙分析我程序!
  • 嵌入式系统字符驱动程序(应用)问题(初学),请帮忙回答
  • socket读取中文数字混合字符出错
  • 如何得到一个字符串里的换行次数,我用StringTokenizer来统计的话如果有一个行没内容的话就会统计出错,好烦啊
  • 字符集转换(iconv)出错求教
  • 字符串数组使用的奇怪问题,运行第一次OK,第二次就出错了
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 帮帮忙!!!请问在javascript中判断字符串中包含某一特定字符
  • 请帮忙我看看这个字符串的问题,谢谢!
  • 如何获得string中某特定第二个字符,请帮帮忙!
  • 急,shell字符串转义问题,请高手帮忙,谢谢。
  • 在线等待,java字符集的问题.急,请大家帮帮忙?
  • 如何用shell替换文本中指定的字符串,在线等,急,请各位大侠帮忙!
  • 字符集的问题,请大家帮忙了!分不够再加
  • 帮帮忙了,字符串问题?
  • 请大家帮忙,怎样判断字符串内部有没有空格,并能去掉它们?
  • 帮帮忙,关于分割字符串后的赋值
  • 如何用shell替换文本中每行指定位置的字符串,在线等,急,请各位大侠帮忙!
  • 帮忙看看这个shell脚本,用正则匹配字符串为什么匹配不上
  • 请高手帮忙分析一下这两句代码(关于字符转化) iis7站长之家
  • sed字符替换有个难题,谁帮忙想下办法啊
  • 兄弟姐妹们帮帮忙,如何将一个字符数据写入数据库,急急急急急急急 在线等待
  • 高分急求:UNIX环境下查找字符串的问题 (给出文件路径,和需要查找的字符串)工作急需,恳求各位高手帮忙!!!!
  • LINUX/SOLARIS环境查找字符串的问题,工作急需,再次恳求各位高手帮忙!!!!
  • 帮忙用awk解析一下以下字符串的表达式 多谢 急~
  • [求助] 字符设备驱动,写数据和读数据都有问题,望大家帮忙[已解决,来人接分结贴]。
  • C++ Strings(字符串) 成员 size():返回字符串中字符的数量
  • 关于字符串的操作,我想得到字符串的长度,和他开始两位组成的新的字符串,例如::
  • C++ Strings(字符串) 成员 c_str():将字符串以C字符数组的形式返回
  • 请问怎样判断一个字符是中文字符还是英文字符?(空)
  • C++ Strings(字符串) 成员 find():在字符串中查找字符
  • C语言实现输入一个字符串后打印出该字符串中字符的所有排列
  • C++ Strings(字符串) 成员 end():返回一个迭代器,指向字符串的末尾。(最后一个字符的下一个位置)
  • 用Java正则去掉字符串中重复出现的字符
  • C++ I/O 成员 ignore():读取字符并忽略指定字符
  • 字符字符串加法问题?
  • C++ Strings(字符串) 成员 copy():将内容复制为一个字符数组
  • 怎样去掉字符串中的tab字符?


  • 站内导航:


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

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

    浙ICP备11055608号-3