溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android/Linux系統(tǒng)怎么調(diào)用

發(fā)布時間:2022-04-07 16:51:29 來源:億速云 閱讀:121 作者:iii 欄目:編程語言

這篇文章主要介紹了Android/Linux系統(tǒng)怎么調(diào)用的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Android/Linux系統(tǒng)怎么調(diào)用文章都會有所收獲,下面我們一起來看看吧。

在調(diào)試Android 設(shè)備驅(qū)動時 ,應(yīng)用層總是被各種權(quán)限束縛,這里給出其中一種解決方案。

一 kernel 層修改

drivers/input/fingerprint/zpx_fp_mtk_tee/zpx_fp_mtk_tee.c

	#include <linux/syscalls.h>

        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  //注釋如下空函數(shù)
        /*      CALL(sys_ni_syscall) */  /*null func*/

arch/arm/include/asm/unistd.h

#define __NR_syscalls  (392) // last call +1

二 應(yīng)用層調(diào)用

#include <unistd.h>
#include <sys/syscall.h>
#include <stdio.h>
#define _SYSCALL_zpx_ 391
int main(int argc,char **argv)
{

   syscall(_SYSCALL_zpx_,13);

	return 0;
}

三 結(jié)果

無需任何權(quán)限

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

關(guān)于“Android/Linux系統(tǒng)怎么調(diào)用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Android/Linux系統(tǒng)怎么調(diào)用”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI