如何解决copy_to_user 传递 int 数据类型 - 对象
我有一个 int
变量,我正在尝试使用 copy_to_user(buf,intflag_obj,sizeof(int))
但它给了我段错误。如何解决这个问题
更新
static ssize_t mychardev_read(struct file *file,char __user *buf,size_t count,loff_t *offset)
{
int flag=10;
wait_event_interruptible(wq,flag != 0);
int *data =flag;
size_t datalen = strlen(data);
flag=0;
printk("Reading device: %d\n",MINOR(file->f_path.dentry->d_inode->i_rdev));
if (count > datalen) {
count = datalen;
}
if (copy_to_user(buf,&data,count)) {
return -EFAULT;
}
return count;
}
解决方法
由于您想将 flag
的值与单词“hello”连接起来,我猜您希望将 flag
的值作为字符串读取。
您可以使用 char []
变量和 snprintf
函数来构造要读取的值:
char data[11 + sizeof("hello")];
size_t datalen;
snprintf(data,sizeof(data),"%dhello",flag);
datalen = strlen(data);
if (count > datalen) {
count = datalen;
}
if (copy_to_user(buf,data,count)) {
return -EFAULT;
}
return count;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。