Несомненно, вы можете.
Короче говоря, вам необходимо исправить запущенное ядро.
Есть по крайней мере 2 способа добавить новый системный вызов:
- Расширить существующие таблицы системных вызовов (
sys_call_table
и ia32_sys_call_table
) и система патча вызова инструкцию проверки предела (Usally cmp
на x86) на любом из системные вызовы (system_call
, ia32_system_all
и т. д.)
- Скопируйте существующие таблицы системных вызовов, разложите их по мере необходимости, инструкцию по рассылке системных вызовов (обычно
call
на x86), чтобы указать на команду проверки таблицы и исправления системного вызова таблицы на любой из записей системного вызова.
Смотрите эту anwers Подробности:
Implementing Linux System Call using LKM
How do 32-bit applications make system calls on 64-bit Linux?
:)
Ну, что было коротким и сладким. – BoBTFish
Ну, технически, в зависимости от места и т. Д., С модулем ядра вы можете исправить свой собственный системный вызов в существующую таблицу системных вызовов. Но это грязно, ненадежно и определенно не очень хорошая идея. –
Ну, технически IOCTL - системный вызов. Таким образом, когда вы можете использовать его для обертывания ваших данных и общения на земле пользователя и ядра, зачем вы добавляете новый системный вызов? – Ash