我想实现我自己的系统调用。(见下面的链接)
http://www.tldp.org/HOWTO/html_single/Implement-Sys-Call-Linux-2.6-i386/
但是添加新的系统调用需要内核编译。
如何在不重新编译Linux内核的情况下实现自己的系统调用?
我想实现我自己的系统调用。(见下面的链接)
http://www.tldp.org/HOWTO/html_single/Implement-Sys-Call-Linux-2.6-i386/
但是添加新的系统调用需要内核编译。
如何在不重新编译Linux内核的情况下实现自己的系统调用?
你不能。
如果不重新编译内核,你所能做的就是构建和加载内核模块,内核模块不能添加新的系统调用。
你当然可以。
简而言之,您需要修补正在运行的内核。
至少有两种方法可以添加新的系统调用:
sys_call_table
和)并在任何系统调用条目(等...)处ia32_sys_call_table
修补系统调用限制检查指令(通常cmp
在 x86 上)system_call
ia32_system_all
call
在 x86 上)以指向表的副本,并在任何系统调用条目处修补系统调用限制检查指令。有关详细信息,请参阅此答案:
32 位应用程序如何在 64 位 Linux 上进行系统调用?
:)