官方QQ群收藏本站

百问linux嵌入式论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15|回复: 2

ioctl中copy_from_user的使用

[复制链接]

11

主题

23

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2019-10-9 10:08:22 | 显示全部楼层 |阅读模式
注意:如果点击空白处无法输入,则点击字会有输入提示符 | 则可以使用键盘进行输入!
此板块为[第二期Linux驱动开发]
  • 问题所在章节:
  • 发生问题的运行环境:
  • 问题发生描述:
   在read/write中使用copy_from_user和copy_to_user没问题,但是在ioctl中使用就出问题了:
驱动ioctl:
static long tiny4412_pwm0_ioctl(struct file *filep, unsigned int cmd,   
  unsigned long arg)   
{            
    int args[2];
void __user *p = (void __user *)arg;

switch (cmd) {   
        case PWM_IOCTL_SET_FREQ:
    pwm_set_freq(0, (int)arg, (int)(arg / 2));
          break;
  case PWM_IOCTL_SET_ARGS:
       if (copy_from_user(args, p, 8)) {
       printk("fuck!\n");
                  return -1;
    }
     
    printk("period = %d, high_val = %d\n", args[0], args[1]);
    pwm_set_freq(0, args[0], args[1]);
    break;
  case PWM_IOCTL_STOP:   
  default:   
    pwm_stop(0);   
    break;   
}   
     
return 0;   
}  


用户空间:
jint set_pwm_args(JNIEnv *env, jobject cls, jint num, jint period, jint high_val)
{
     int ret;
     static int args[2];
  args[0] = period;
  args[1] = high_val;
  return  ioctl(fd[num], PWM_IOCTL_SET_ARGS, args);
}


求老师解答!!!!!!

  • 输出的错误信息:

回复

使用道具 举报

8

主题

1505

帖子

4673

积分

版主

Rank: 7Rank: 7Rank: 7

积分
4673
发表于 2019-10-9 21:27:57 | 显示全部楼层
内核里那么多ioctl,参考一下别人是如何使用的
我是百问网www.100ask.org答疑助手,有关技术问题请与我联系。
韦东山视频开发板购买店铺:https://100ask.taobao.com/
微信公众平台:baiwenkeji
回复 支持 反对

使用道具 举报

0

主题

1186

帖子

3623

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3623
发表于 2019-10-9 21:39:33 | 显示全部楼层
增加打印看看ioctl调用到了哪里
我是百问网www.100ask.org答疑助手,有关站务问题请与我联系。
韦东山视频开发板购买店铺https://100ask.taobao.com/
微信公众平台:baiwenkeji
回复 支持 反对

使用道具 举报

技术支持
在线咨询
咨询热线
0755-86200561
微信扫一扫
获取更多资讯!

Archiver|小黑屋|百问linux嵌入式论坛     

GMT+8, 2019-10-17 14:07 , Processed in 0.066225 second(s), 9 queries , File On.

Powered by Discuz! X3.3 Licensed

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

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