2013-05-17 2 views
0

У меня есть модуль ядра, который я добавил спасибо Modprobe:Как связать модуль ядра с их функцией?

sudo modprobe mymodule 

В этом модуле у меня есть некоторые функции, которые я хочу позвонить.

#include <stdio.h> 
int main() { 
    int f = my_foo(); 
    printf("%d", f); 
    return 0; 
} 

Как мне нужно связать mymodule, чтобы сделать эту работу. Помоги пожалуйста.

+3

Вы не можете вообще вызывать произвольные внутренние функции ядра из пользовательского пространства. Вместо этого вы должны пройти через какой-то существующий интерфейс, например, создать устройство, открыть его и использовать собственный вызов ioctl() в своем файловом дескрипторе или (более предпочтительные) узлы в sysfs или procfs. Функции ядра, вызываемые из пользовательского пространства, называются syscalls, и добавление/изменение этих параметров рассматривает довольно существенное изменение, что требует должной перекомпиляции не просто нового модуля. –

+0

Является ли ваш модуль блоком или устройством char? Как он регистрируется? –

ответ

1

Вы не можете. Модули ядра не являются библиотеками. То, что вы ищете, похоже, является статическими/динамическими библиотеками. Конечно, вам может понадобиться реализовать системный вызов, но действительно ли это стоит того? Вам нужно будет перекомпилировать ядро ​​...

1

Вы можете найти много документации о том, как написать модуль ядра. Вы можете начать here.

Дополнительная документация: Linux Driver Development, Third edition.

Будьте очень осторожны! Плохо написанный модуль ядра может легко свернуть ваше ядро!

Смежные вопросы