请选择 进入手机版 | 继续访问电脑版

雨滴科技技术论坛

 找回密码
 立即注册
查看: 115|回复: 0

unlocked_ioctl与compat_ioctl的区别

[复制链接]

425

主题

1864

帖子

7629

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7629
QQ
扫一扫,手机访问本帖
发表于 2020-7-24 19:08:44 | 显示全部楼层 |阅读模式

最近在调试驱动的时候遇到这个问题,在这里记录一下。

在做测试驱动的时候是这样写法的,但将驱动加载之后驱动进不去gpio_ioctl里面

  1. 154 static struct file_operations rd_gpio_fops =
  2. 155 {
  3. 156     .owner=        THIS_MODULE,
  4. 157     .unlocked_ioctl=    gpio_ioctl,
  5. 158     
  6. 159     .open=         gpio_open,
  7. 160     .release=      gpio_release,
  8. 161 };
复制代码

注意:

1、compat_ioctl:支持64bit的driver必须要实现的ioctl,当有32bit的userspace application call 64bit kernel的IOCTL的时候,这个callback会被调用到。如果没有实现compat_ioctl,那么32位的用户程序在64位的kernel上执行ioctl时会返回错误:Not a typewriter

2、如果是64位的用户程序运行在64位的kernel上,调用的是unlocked_ioctl,如果是32位的APP运行在32位的kernel上,调用的也是unlocked_ioctl

因此我们只需要添加
.compat_ioctl =     gpio_ioctl,



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
在线咨询
咨询热线
0755-26787502-8006/8016
扫一扫二维码
直接访问本站

QQ|Archiver|手机版|小黑屋|雨滴科技  

GMT+8, 2020-8-15 22:30 , Processed in 0.064173 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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