如何在内核模块中安装系统调用

时间:2010-07-14 16:37:57

标签: kernel-module

我想在未使用的系统中安装新的系统调用,并等待来自用户空间的指令。我不知道该怎么做。

2 个答案:

答案 0 :(得分:3)

假设您正在讨论Linux ......

搞砸系统调用表是个坏主意。内核有一些防止动态更改的安全防护(这是一件好事),所以你必须重建整个内核才能进行修改。

这是一种更好的方法,同样灵活。构建一个模块,创建一个新的块设备,并在该设备上实现“系统调用”作为ioctl。您不必重新编译内核来实现它,您也不必担心触及汇编文件。当您进行迭代开发时,重新编译和重新插入模块可以让您比需要重新启动以使更改生效更快。

关于编写ioctls的信息,请查看Linux Device Drivers, Ch5

答案 1 :(得分:0)

假设您在谈论Linux 2.6,您应该查看本指南: http://www.ibm.com/developerworks/linux/library/l-system-calls/index.html

更多信息:

http://tldp.org/HOWTO/html_single/Implement-Sys-Call-Linux-2.6-i386/

请注意,您无法在模块中安装系统调用 - 必须重新编译内核映像。