系统调用的添加
LINUX内核:2.6.36
步骤:
1、 在kernel/sys.c中添加系统调用函数,必须是以sys_开头的,如sys_mycall。
2、 在arch/x86/kernel/syscall_table_32.S中最后添加
.long sys_XXX
如 .long sys_mycall
3、在arch/x86/include/asm/unistd_32.h中合适的位置(什么是合适的位置???下面讲解)添加#define __NR_XXX YYY,XXX是系统调用名字,YYY是偏移值(???谁的???),如#define __NR_mycall 200。YYY必须跟在已有偏移值的后面,比如,已经有了212个偏移值,那么你的系统调用的偏移值为213,这就是合适的位置。
4、重新编译内核。
例子:
asmlinkage int mycall(int number){
return number;
}
#define __NR_mycall 355
实例:
#include <stdio.h>
#define __NR_mycall 355
Void main(){
printf(“%d\n”,mycall(100));
}