1、添加系统调用(模块添加法 fedora10:2.6.27.5 内核)一、为什么要使用内核模块的方式添加系统调用? 编译内核的方式费时间,一般的 PC 机都要两三个小时。 不方便调试,一旦出现问题前面的工作都前功尽弃。二、用内核模块的方式实现系统调用有个前提,就是系统必须导出sys_call_table 内核符号,但是在 2.6 内核和 2.4.18 以上版本中,sys_call_table 不再导出。也就是说模块中不能再通过简单的 extern void *sys_call_table;来获得系统调用表地址。但是,即使内核不导出sys_call_table,也可以在内存中找到它的地址,下面是它
2、的实现方法:第 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 步,编译测试程序,执行测试程序,查看结果(控制台终端下)中间的输出语句就是我们自己定义的系统调用的输出。下图是在图形用户终端下的结果