添加系统调用(模块添加法2.6内核)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

添加系统调用(模块添加法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,也可以在内存中找到它的地址,下面是它的实现方法:

第1步:编写syscall_my.c程序:

pptprogram/syscall/module_syscall/syscall_my.c

第2步:编写Makefie文件

见pptprogram/syscall/module_syscall/Makefile

第3步.执行make命令编译模块

第4步:执行insmod命令插入模块,此时会把自己编写的系统调用插入到系统调用表中。

相关文档
最新文档