千家信息网

Android/Linux系统怎么调用

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍了Android/Linux系统怎么调用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android/Linux系统怎么调用文章都会有所收获,下面我们一起
千家信息网最后更新 2025年01月19日Android/Linux系统怎么调用

这篇文章主要介绍了Android/Linux系统怎么调用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android/Linux系统怎么调用文章都会有所收获,下面我们一起来看看吧。

在调试Android 设备驱动时 ,应用层总是被各种权限束缚,这里给出其中一种解决方案。

一 kernel 层修改

drivers/input/fingerprint/zpx_fp_mtk_tee/zpx_fp_mtk_tee.c

     #include         static 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_ 391int main(int argc,char **argv){   syscall(_SYSCALL_zpx_,13);        return 0;}

三 结果

无需任何权限

k39_bsp:/data/local/tmp $ ls -ltotal 80-rwxrwxrwx 1 shell shell 78968 2020-07-20 09:28 driver_testk39_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系统怎么调用"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

0