资源描述
添加系统调用(模块添加法fedora10:2.6.27.5内核)
一、为什么要使用内核模块的方式添加系统调用?
n 编译内核的方式费时间,一般的PC机都要两三个小时。
n 不方便调试,一旦出现问题前面的工作都前功尽弃。
二、用内核模块的方式实现系统调用有个前提,就是系统必须导出sys_call_table内核符号,但是在2.6内核和2.4.18以上版本中,sys_call_table不再导出。也就是说模块中不能再通过简单的extern void *sys_call_table[];来获得系统调用表地址。但是,即使内核不导出sys_call_table,也可以在内存中找到它的地址,下面是它的实现方法:
第1步:编写 syscall_my.c程序:
pptprogram/syscall/module_syscall/syscall_my.c
第2步:编写Makefie文件
见pptprogram/syscall/module_syscall/Makefile
第3步.执行make命令编译模块
第4步:执行insmod命令插入模块,此时会把自己编写的系统调用插入到系统调用表中。
第5步:编写测试程序test.c
见pptprogram/syscall/module_syscall/test.c
第6步,编译测试程序,执行测试程序,查看结果(控制台终端下)中间的输出语句就是我们自己定义的系统调用的输出。
下图是在图形用户终端下的结果
展开阅读全文