Adding a New System Call into the Linux Kernel 2.6

========================================== Stage 1: To modify the kernel to add our own system call ==========================================

1. Edit file /usr/src/linux/arch/i386/kernel/syscall_table.S

Find the 223 syscall and modified like this:

arch/i386/kernel/syscall_table.S …… 233         .long sys_mysyscall 234         .long sys_gettid 235         .long sys_readahead                       /* 225 */ ……

2. Edit file /usr/src/linux/arch/i386/kernel/Makefile Add obj-y += mysyscall.o

3. Create a new file call mysyscall.c under /usr/src/linux/arch/i386/kernel/ directory. Type the following into the file:

#include <linux/linkage.h> #include <linux/kernel.h>

asmlinkage int sys_mysyscall(void) { printk("This is the my new system call build in the kernel!/n"); return 0; }

4. Edit file unistd.h include/asm-i386/unistd.h /usr/include/asm/unistd.h

231 #define __NR_mysyscall                          223      /* mysyscall adds here */

5. At this point, you can start building your new kernel.

make menuconfig && make && make modules_install && make install

6.After a successful build, reboot the machine and boot into the newly built kernel.

=========================== Stage 2: To test the new system call ===========================

7.Create a new file call testsyscall.c in your directory. Type the following into the file:

#include <linux/unistd.h>

_syscall0(long, mysyscall);

int main () { mysyscall(); return 0; }

8.Compile the above testsyscall.c source code with :

gcc -Wall testsyscall.c -o testsyscall

9.If you arrive here without problems, you can now test the newly created system call just type

./testsyscall

10. To check if it works, you can use:

dmesg | tail -n 5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值