Как реализовать собственный системный вызов без перекомпиляции ядра Linux?
Я хочу реализовать свой собственный системный вызов. (См. ниже ссылку)
http://www.tldp.org/HOWTO/html_single/Implement-Sys-Call-Linux-2.6-i386/
но добавление нового системного вызова требует компиляции ядра.
Как реализовать свой собственный системный вызов без перекомпиляции ядра Linux?
2 ответов
ты не можешь.
без перекомпиляции ядра, все, что вы можете сделать, это построить и загрузить модули ядра, и модули ядра не могут добавлять новые системные вызовы.
конечно, вы можете.
короче говоря, вам нужно будет исправить запущенное ядро.
есть по крайней мере 2 способа добавить новый syscall:
- расширить существующие таблицы системных вызовов (
sys_call_table
иia32_sys_call_table
) и инструкция проверки предела системного вызова заплаты (usallycmp
на x86) в любой из записей системного вызова (system_call
,ia32_system_all
etc...) - скопируйте существующие таблицы системных вызовов, разверните их по мере необходимости, исправьте инструкцию по отправке системных вызовов (обычно
call
на x86), чтобы указать на копию таблицы и исправление инструкции проверки ограничения системного вызова в любой из записей системного вызова.
см. этот anwers для деталей:
реализация системного вызова Linux с помощью LKM
как 32-разрядные приложения делают системные вызовы на 64-разрядном Linux?
:)