LINUX.ORG.RU

загрузка модуля


0

0

взял пример модуля "hello world" c linux.ru.net . вот исходник: #include <linux/kernel.h> /* We're doing kernel work */ #include <linux/module.h> /* Specifically, a module */ #if CONFIG_MODVERSIONS==1 #define MODVERSIONS #include <linux/modversions.h> #endif int init_module() { printk("Hello, world - this is the kernel speaking\n"); /* If we return a non zero value, it means that * init_module failed and the kernel module * can't be loaded */ return 0; } /* Cleanup - undid whatever init_module did */ void cleanup_module() { printk("Short is the life of a kernel module\n"); } делаю из терминала insmod hello.o (откомпилил нормально), но ничего в консоль не выводится. может я чего-то не понимаю. каким образом можно запустить init_module() программно. разве он не инициализируется при загрузке? при чем по lsmod я его вижу в памяти.

а может он не на консоль, а в сислог должен здороваться? /var/log/messages или куда там syslog.conf говорит

anonymous
()

Для того чтобы он в консоль здоровался, нужно пользоваться другим приемом. В кернеле есть указатель на структуру текущего процесса. В этой структуре есть нечно на подобие "драйвера" терминала (указатель на некую структуру в которой указатели на методы чтения/записи). Можно заюзать write из этой структуры.

Тогда если будешь делать modprobe из консоли, то модуль туда и будет здороваться. Понятное дело, что у демонов этот указатель - NULL

Banshee
()

printk ne pishet v console - eto vyvod kernel messages. Tvoe soobschenie dolgno byt' v
/var/log/messages.
try:
tail -f /var/log/messages
a na drugoi console :
insmod your_module

tvn
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.