linux 系統調用介紹linux
大致分爲4步:函數
1,定義系統調用號,arch/arm/include/asm/unistd.h 添加#define __NR_add 370 (編號)spa
2,執行中斷 svc 內存
3,跳轉到ENTRY(vector_swi) 在entry-common.s中io
4,調用arch/arm/kernel/calls.s的相應函數 CALL(sys_xx) 這裏的位置與前面的編號對應asm
例子編譯
在kernel/sys.c 添加調用函數call
asmlinkage int sys_add(int a,int b)di
{co
return a+b;
}
2,添加系統調用號#define __NR_add 370
3,添加調用函數 CALL(sys_add);這裏與上面對應
跳轉指令彙編代碼不用關,系統寫好了,寫好後,從新編譯內存
#include <stdio.h>
#include <linux/unistd.h>
main()
{
int result;
result = syscall(370,1,2);
printf("result = ",result);
}