1. get linux kernel source and uncpmpres it.
2. edit /include/linux/syscalls.h and add declaration of the function
asmlinkage long sys_test();
3. edit /kernel/sys.c and add the implement of system call
asmlinkage long sys_test(){
printk("my system call/n");
return 0;
}
4. edit /arch/arm or i86(your object platform)/include/asm/unistd.h. add system call number define
#define __NR_test (__NR_SYSCALL_BASE + 365(inclresed 1 than the last system call).
5. edit /arch/arm/kernel/call.S or /arch/x86/kernel/syscall_table.S add
.long sys_test
6. make to rebuild linux and start kernel. write progra as folowing:
#include <Linux/errno.h>
#include<sys/syscall.h>
#include <Linux/unistd.h>
long errno; //this is the return code from the system call
//this is a macro defined in unistd.h to help prototype sys calls
_syscall2(0, test);
main() {
test();
}