- 在 kernel/sys.c 新增函式,並EXPORT
- include/asm-xxx/unistd.h 新增中斷號碼。
NR_syscalls 記得+1. - arch/i386/kernel/entry.S ( < 2.6.12 ) or syscall_table.S(>2.6.12)
+.long sys_xxx
- include/asm/unistd_32.h 新增與Kernel相同的號碼的define.
- include/bits/syscall.h
#define SYS_xxx __NR_xxx
static inline _syscall2(long, NEW, int, arg1, int, arg2);
/*linux中一共定義了7種不同的_syscall*,在 unistd.h 裡面
可以看到,若定義 system call 有要傳參數的話必需使用別
的 _syscall
*/_syscall1(int,addtotal,int, num)
- test
#include
_syscall2(long, hello, int, arg1, int, arg2);
int main(){
printf(" %d \n", hello(1, 2) );
return 0;
}
- 新版kernel已改為 syscall ,不再使用舊的那七種方式
- #include
#include
#include
//static inline _syscall2(long, NEW, int, arg1, int, arg2);
int main(){
time_t tt;
// time(&tt );
syscall( 13, &tt );
printf("tt=%d\n", tt );
}
- #include
REF:
- http://www.csie.ncu.edu.tw/~hsufh/COURSES/FALL2007/syscall.html
沒有留言:
張貼留言