这篇文章主要介绍了Android/Linux系统怎么调用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android/Linux系统怎么调用文章都会有所收获,下面我们一起来看看吧。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、虚拟空间、营销软件、网站建设、海淀网站维护、网站推广。
在调试Android 设备驱动时 ,应用层总是被各种权限束缚,这里给出其中一种解决方案。
一 kernel 层修改
drivers/input/fingerprint/zpx_fp_mtk_tee/zpx_fp_mtk_tee.c
#includestatic long zpx_method(long arg) { printk("%s enter,arg=%ld\n",__func__ ,arg); read_all_reg_test(fp_global); return 0; } SYSCALL_DEFINE1(zpx_method,long,arg)//一个形参 { return zpx_method(arg); }
include/linux/syscalls.h
asmlinkage long sys_zpx_method(long arg);
include/uapi/asm-generic/unistd.h
__SYSCALL(__NR_zpx_method, sys_zpx_method)
arch/arm/include/uapi/asm/unistd.h
#define __NR_zpx_method (__NR_SYSCALL_BASE+391)
arch/arm/kernel/calls.S
CALL(sys_zpx_method) .rept syscalls_padding //注释如下空函数 /* CALL(sys_ni_syscall) */ /*null func*/
arch/arm/include/asm/unistd.h
#define __NR_syscalls (392) // last call +1
二 应用层调用
#include#include #include #define _SYSCALL_zpx_ 391 int main(int argc,char **argv) { syscall(_SYSCALL_zpx_,13); return 0; }
三 结果
无需任何权限
k39_bsp:/data/local/tmp $ ls -l total 80 -rwxrwxrwx 1 shell shell 78968 2020-07-20 09:28 driver_test k39_bsp:/data/local/tmp $ ./driver_test k39_bsp:/data/local/tmp $
kernel log
[ 100.325202] (2)[2506:driver_test]zpx_method enter,arg=13 [ 100.325234] (2)[2506:driver_test][zpx] zpx_spi_clk_enable enter [ 100.325249] (2)[2506:driver_test][zpx] zpx_spi_clk_enable finsish [ 100.325469] (2)[2506:driver_test][zpx] [0]=FF [ 100.325483] (2)[2506:driver_test][zpx] [1]=0 [ 100.325490] (2)[2506:driver_test][zpx] [2]=0 [ 100.325497] (2)[2506:driver_test][zpx] [3]=3F [ 100.325503] (2)[2506:driver_test][zpx] [4]=0 [ 100.325510] (2)[2506:driver_test][zpx] [5]=57
关于“Android/Linux系统怎么调用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Android/Linux系统怎么调用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。