2020/2/3

android hardware hidl ioctl return fail

kernel driver 用 standalone C program 寫 ioctl 是 OK 的。
但是在 hardware module hidl c program 中用一樣的方法,卻 return fail
在 driver 放 printk, 發現根本沒 call 到。

最後有人發現,android hardware module call ioctl 會 call 到 compact_ioctl, 和 standalone c program call 的 unlocked_ioctl 不一樣。
所以在 driver 層 implement compact_ioctl 後 (其實就是跟 unlocked_ioctl 一樣,只有 function name 不一樣),舊 OK了。

這樣說來,android hardware module 是 compile 成 32bit?

用 ninja -v command 把 該 module build 的 command 列出,發現,同一個 shared library, build 了兩次,
一次target 是 aarch64-linux-android,一次是 arm-linux-androideabi 同時 enable thumb.

所以 android 有可能 load 32bit shared library

沒有留言:

張貼留言