我想在一个未使用的地方安装一个新的系统调用并等待来自用户空间的指令。我不知道该怎么做。
问问题
5238 次
2 回答
4
假设您正在讨论 Linux ......
弄乱系统调用表是个坏主意。内核有一些针对动态更改的安全防御(这是一件好事),因此您必须重建整个内核才能进行修改。
这是一种更好的方法,它同样灵活。构建一个模块,该模块创建一个新的块设备并将您的“系统调用”作为该设备上的 ioctl 实现。您不必重新编译内核来实现它,也不必担心接触汇编文件。当您进行迭代开发时,重新编译和重新插入模块可以让您的工作速度比需要重新启动以使更改生效时快得多。
查看Linux Device Drivers, Ch5了解有关编写 ioctls 的信息。
于 2010-07-14T17:06:00.607 回答
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/
请注意,您不能在模块中安装系统调用 - 必须重新编译内核映像。
于 2010-07-14T16:41:42.443 回答