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);
}