Модуль ядра реализации Syscall 2.6 - PullRequest
1 голос
/ 21 февраля 2011

после некоторого чтения я понял, что добавление нового системного вызова через LKM усложнилось в 2.6. Кажется, что таблица системных вызовов больше не экспортируется, поэтому делает (невозможно?) Вставку нового вызова во время выполнения.

Вот что я хочу достичь:

У меня есть модуль ядра, который выполняет определенную задачу. Эта задача зависит от входных данных, которые должны быть предоставлены процессом землепользования пользователя. Эта информация должна достигнуть модуля. Для этой цели я бы представил новый системный вызов, который реализован в модуле ядра и вызывается из пользовательского процесса.

Если мне нужно перекомпилировать ядро, чтобы добавить мой новый системный вызов, мне также нужно написать реальную логику системного вызова вне модуля ядра, правильно?

Есть ли другой способ сделать это?

Cheers, Eeknay

Ответы [ 2 ]

5 голосов
/ 21 февраля 2011

Системные вызовы не являются правильным интерфейсом для такого рода работы.По крайней мере, по этой причине разработчики ядра затруднили добавление системных вызовов.

Существует множество различных способов перемещения данных между пользовательским пространством и модулем ядра: псевдо-файловые системы proc и sysfs, интерфейс устройства char(с использованием чтения или записи или ioctl) или локального псевдосетевого интерфейса netlink.

Выбор того, который вы выберете, зависит от количества типов данных, которые вы хотите отправить.Вероятно, вам следует использовать proc / sysfs только в том случае, если вы собираетесь передавать только крошечные объемы данных;для больших объемных пересылок лучше подходят char char или netlink.

0 голосов
/ 22 февраля 2011

Невозможно - нет.AV-модули и руткиты делают это постоянно.

...