Всем доброго времени суток. Пишу модуль для ядра (занимаюсь этим впервые), возникла проблема. Прошу помочь кто знает. Итак есть исходник:
// foo.c #define CONFIG_NR_CPUS 1
#define __KERNEL__ #define MODULE
//#include "foo2.h"
#include <linux/kernel.h> #include <linux/module.h>
int oc_kernelmod_init_module(void)
{
printk( KERN_DEBUG "Module OC_KernelMod init\n" );
//foo2f();
return 0;
}
void oc_kernelmod_exit_module(void)
{
printk( KERN_DEBUG "Module OC_KernelMod exit\n" );
}
module_init(oc_kernelmod_init_module); module_exit(oc_kernelmod_exit_module);
-------------------------------------------------------
#Makefile
obj-m := foo.o #foo-objs := foo2.o
------------------------------------
собираю так: make -C /lib/modules/`uname -r`/build SUBDIRS=$PWD M=`pwd` modules
загружаю его,выгружаю - все работает (в логе 2 сообщения, все как положено)
теперь добавляем пару файлов:
// foo2.h
void foo2f(void);
----------------------------------
// foo2.c
#include "foo2.h"
#include <linux/kernel.h>
void foo2f(void)
{
printk(KERN_ALERT "Foo2 function\n");
}
------------------------------------------
раскоментариваю
//#include "foo2.h"
и
//foo2f();
в foo.c
раскоментариваю вторую строку их Makefile: #Makefile obj-m := foo.o foo-objs := foo2.o
собираю (без ошибок), загружаю, lsmod | grepp foo (все отлично, модуль в списке есть), выгружаю.... а лог пуст (всмысле ничего нового, а должно было быть 3 новых сообщения) не пойму, или сообщения не пишутся или функции не вызываются или хз.
уважаемые, подскажите что я сделал не так пожалуйста. ну не писАть же мне модуль одним файлом... почему при сборке модуля из нескольких обьектных файлов получается такая нериятность?
Ответившим огромное спасибо!