我想实现自己的系统调用。 (见下面的链接)
http://www.tldp.org/HOWTO/html_single/Implement-Sys-Call-Linux-2.6-i386/
但是添加新的系统调用需要内核编译。
如何在不重新编译Linux内核的情况下实现自己的系统调用?
答案 0 :(得分:15)
你不能。
如果不重新编译内核,您所能做的就是构建和加载内核模块,内核模块无法添加新的系统调用。
答案 1 :(得分:3)
当然,你可以。
简而言之,您需要修补正在运行的内核。
至少有两种方法可以添加新的系统调用:
sys_call_table
和ia32_sys_call_table
)和补丁系统调用限制检查指令(在x86上通常为cmp
) },system_call
等...)ia32_system_all
),以指向任何系统调用项的表的复制和补丁系统调用限制检查指令。 / LI>
醇>
有关详细信息,请参阅此修订:
Implementing Linux System Call using LKM
How do 32-bit applications make system calls on 64-bit Linux?
:)