http://newness.wordpress.com/2008/05/07/how-to-add-a-system-call-in-linuxpart-i/

http://mrmoneyc.wordpress.com/2009/03/30/howto-add-system-call-into-linux-kernel/

以上是參考網頁

這是這次嘗試之後的結果 做了以下的更動

因為每個版本都不一樣 網路上的版本用的也都不一樣 檔名 路徑都不同 還有的不同路徑有同檔名的

弄得我到最後連到底有沒有改對檔案都不知道

以下是推測+嘗試的結果 結果不是有ERROR就是沒有結果 因為根本就不知道自己改的到底對還錯 所以我放棄了 就把這次做的事情記錄一下

換大家都用的版本 結束~


/usr/src/linux/arch/x86/kernel/syscall_table_32.S以更動

加入
.long sys_recvmmsg
.long sys_myfunc                /* 338 */


/usr/src/linux/arch/x86/include/asm/unistd_32.h以更動

加入
#define __NR_myfunc             338    

#ifdef __KERNEL__


#define NR_syscalls 339






/usr/include/asm/unistd_32.h 以更動


#define __NR_inotify_init1 332
#define __NR_myfunc             338             /* 自訂的 system call 定義 */
#endif /* _ASM_X86_UNISTD_32_H */


/usr/src/linux/include/asm-generic/unistd.h 不更動












/usr/src/linux/kernel/ 新增myfunc


#ifndef __LINUX_MYFUNC
#define __LINUX_MYFUNC


#include <linux/linkage.h>
#include <linux/kernel.h>
asmlinkage int sys_myfunc(void){
printk("Success!! --\n");
return 0;
};


#endif





/usr/src/linux/kernel/Makefile 更動
obj-y = myfunc.o sched.o fork.o exec_domain.o panic.o printk.o profile.o \


/usr/src/linux/arch/x86/kernel/Makefile 不更動
obj-y                           += myfunc.o





/usr/include/bits/syscall.h 更動

加入
#define SYS_myfunc __NR_myfunc
#endif /* _ASM_I386_UNISTD_H_ */





/usr/src/linux/arch/x86/include/asm/syscalls.h  不更動
/usr/src/linux/include/asm-generic/syscalls.h 更動

加入
asmlinkage int sys_myfunc(void);


最後編譯

make menuconfig
make
make install

arrow
arrow
    全站熱搜

    a22710518 發表在 痞客邦 留言(0) 人氣()