增加System Call

来源:互联网 发布:delphi是不是编程语言 编辑:程序博客网 时间:2024/05/22 02:58

1.     首先在 “/usr/src/linux-x.x/kernel/”目录下建议一个文件名为”mysyscall.c”

具体代码如下:


2.    
用vi打开”Makefile”文件并在其”obj-y”后加入”mysyscall.o”如下图所示:

 

3.     在”/usr/src/linux-x.x/include/asm-i386/”目录下,用vi打开”unistd.h”并在”#define”的最后增加如下代码

#define__NR_mysyscall    259


如下图示:

 

4.     在”/usr/src/linux-x.x/arch/i386/kernel/”目录下,用vi打开”entry.S”并在”.long”开始后的第259行处增加如下代码


.longSYMBOL_NAME(sys_mysyscall)

如下图所示:

 

5.     在”/usr/src/linux-x.x/”目录下,输入”make bzImage”进行编译

6.     拷贝”/usr/src/linux-x.x/arch/i386/boot下”的”bzImage”文件到”/boot”目录下

cpbzImage /boot/mybzImage

7.     编辑”menu.list”或者”grub.cfg”文件添加mybzImage的引导后重启系统

Systemcall test:

1.     首先建立一个文件,我们把它命名为”test.c”,里面的代码如下:


2.     用“gcc –I/usr/src/linux-x.x/include/ -o test test.c “命令进行编译

3.     “./test”运行后显示如下


4.     发现在运行编译好的文件后printk的内容并没有正常显示在控制台上

5.     经调查发现是”/proc/sys/kernel/printk”的设置问题,使得printk默认显示在虚拟控制台上。

6.     用管理员权限运行”cat /var/log/message”命令后如下图所示


原创粉丝点击