Могу ли я добавить системный вызов из модуля? - PullRequest
1 голос
/ 31 июля 2010

Могу ли я добавить системный вызов из модуля?

Ответы [ 2 ]

3 голосов
/ 31 июля 2010

В некоторых версиях ядра можно добавить или изменить systemcall, изменив таблицу sys_call_table. Но поскольку эта таблица не предназначена для изменения во время выполнения, она не имеет защиты. Изменение таблицы приведет к условиям гонки. Даже без условий гонки существуют проблемы, связанные с удалением модулей, когда они используются или уложены друг на друга. Из-за проблем с изменением sys_call_table из модулей, символ больше не экспортируется в новые ядра. Другими словами, если вы получаете "unresolved symbol sys_call_table" при попытке загрузить модуль, это означает, что в модуле есть ошибка, и ядро ​​больше не принимает такие ошибочные модули.

1 голос
/ 31 июля 2010

Звучит как очень плохая идея, независимо от того, можете ли вы.Если ваш новый системный вызов будет работать с файлами / устройствами, возможно, вы могли бы сделать его ioctl или чем-то подобным, а не делать его собственным системным вызовом?

...