微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > Android L版本中实现32bit userspace程序能通过ioctl()系统调用与64bit的kernel dr...

Android L版本中实现32bit userspace程序能通过ioctl()系统调用与64bit的kernel dr...

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]

  32bit的userspace进程通过ioctl()系统调用是不能够调用到64bit的kernel driver中的unlocked_ioctl()接口的。


[SOLUTION]
   通过在driver中实现compat_ioctl()接口来进行中转。具体实现方法如下:
step 1:
   在driver中实现compat_ioctl()接口:


step 2:
    在alps\kernel-3.10\include\linux\sensors_io.h文件中增加compat命令和相关头文件;


step 3:
    参考step1和step2的方法修改完成driver中unlocked_ioctl()接口用到的所有cmd命令。
使用场景举例:
    1.gsensor校准数据在重新开机后被清零;
      --》solution:根据上面的方法实现所用gsensor driver中的compat_ioctl()接口;
    2.msensor daemon是32bit的,kernel 是64bit的,apk读取不到msensor的数据;
      --》solution:根据上面的方法实现所用gsensor driver和msensor driver中的compat_ioctl()接口;


mark....................

mark----------------------------

多谢分享,解决了同样的问题

mark....

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top