欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

初学者有关问题 驱动中copy_to_user有关问题

更新时间: 2014-01-05 03:19:13 责任编辑: Author_N1

 

菜鸟问题 驱动中copy_to_user问题
在驱动里面我需要讲一个char *buf[24]拷贝出来 使应用程序可以read copy_to_usr()应该怎么写呢?
c语言指针问题真是一大学问啊
--参考方法--
ssize_t sil9135_read(struct file *filp, char __user *buf, size_t count, loff_t *offset)
{
    size_t ret = 0;
    int i = 0;
    u32 val = 0;
    char *buf1;
    char *kbuf[28];//指向char类型的指针数组。
    unsigned int temp = 0;
    temp = sil9135_read_byte_data(12);
    printk("DS2782_REG_VOLT_MSB = %d\n",temp);
     
    temp = sil9135_read_byte_data(13);
    printk("DS2782_REG_VOLT_LSB = %d\n",temp);
    for(i=0;i<0x1b;i++)
    {
        val = sil9135_read_byte_data(i);//读I2C寄存器值
        buf1 = kmalloc(3, GFP_KERNEL );
        buf1 = IntToStr(buf1,val);
        kbuf[i] = buf1;//kbuf[i](字符指针)指向新开辟的/处于内核空间的buf1内存单元
    }
    for(i=0;i<0x1b;i++)
    {
        printk("kbuf[%d] = %s\n",i,kbuf[i]);//打印kbuf字符型指针数组各成员所指向的字符串
    }
    for(i=0;i<0x1b;i++)
    {
        kfree(kbuf[i]);//释放kbuf字符型指针数组各成员所指向的字符串的内存单元,但是kbuf[i]仍然指向该内存单元
    }
    printk("****%s*****%d\n",__FUNCTION__,__LINE__);
#if 1
    if(copy_to_user(buf, kbuf, strlen(kbuf)))
          //拷贝kbuf字符指针数组成员的值到buf中(kbuf[i]是指针,指向内核空间)
//strlen ???幸亏内存中的NULL很多.
    {
        printk("copy_to_usr error!\n");
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:19:13
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20724/
本文WWW.DOC100.NET DOC100.NET版权所有。