首先将内核文件移至/usr/src/下并解压。
过程参考http://www.cnblogs.com/kavs/p/4607371.html
然后。。开始增加系统调用。。
sudo gedit /usr/src/linux-4.0.6/kernel/sys.c
插入头文件 #include <linux/linkage.h>
1: /*
2: *leemo‘s own define task
3: */
4: asmlinkage int sys_leemohello(char * buf){
5: printk(KERN_EMERG"===this is leemo‘s work =====");
6: printk(KERN_EMERG"==2012221107110095 leemo",buf);
7: return 1;
8: }
sudo gedit /usr/src/linux-4.0.6/arch/x86/syscalls/syscall_32.tbl
记住增加的系统号 如上面的359
sudo gedit /usr/src/linux-4.0.6/arch/x86/include/asm/syscalls.h
编译内核。。。。过程参考http://www.cnblogs.com/kavs/p/4607371.html
编译完成后重启。
编写测试代码
1、先建个文件夹mkdir leemotest
2、创建测试代码sudo gedit testleemohello.c 键入代码:
1: #include <stdio.h>
2: int main()
3: {
4: int rs;
5: char * buf="leemo";
6: rs=syscall(359,buf);
7: printf("%d %s \n",rs,buf);
8: if(rs==1){
9: printf("system call is success!\n");
10: }
11: else
12: printf("sorry,failed!\n");
13: return 0;
14: }
编译测试代码:
gcc testleemohello.c -o testleemohello
运行测试代码:
./testleemohello
结果截图:
接着输入dmesg
调用完成。
时间: 2024-10-17 13:40:16