Добрый день!Решил я добавить в scheduler парочку новых функций :). Вроде сделал все правильно:
sched.h :
void new_func(int param);
sched.c :
void new_func(int param)
{
.......
}
EXPORT_SYMBOL(new_func);Перекомпилил после этого ядро (make clean потом make xconfig потом make). И вот пытаюсь подключить к ядру insmod-ом модуль, в котором эта функция вызывается. Линукс пишет ошибку
Error inserting ..... -1 Unknown symbol in moduleкак неизвестный символ выдается эта функция. Ядро 2.6.14......
Помогите пожалуйста, может кто-нибудь знает что надо делать - я уже третий день с этим парюсь!
а можно cat /proc/kallsyms | grep new_func в студию?
>а можно cat /proc/kallsyms | grep new_func в студию?
А что значит "в студию"? Нужно этот каталог где-то в Makefile прописать? Если да, то где и как это делается?
>>а можно cat /proc/kallsyms | grep new_func в студию?
>
>
>А что значит "в студию"? Нужно этот каталог где-то в Makefile прописать?
>Если да, то где и как это делается?
в студию значит неплохо было бы проделать вышеуказанную процедуру (cat /proc/kallsyms | grep new_func), после чего результат поместить сюда. В связи с жарой мои телепатические способности резко пошли на спад.
> в студию значит неплохо было бы проделать вышеуказанную процедуру (cat /proc/kallsyms
>| grep new_func), после чего результат поместить сюда. В связи с
>жарой мои телепатические способности резко пошли на спад.:))) Не выдает вообще ничего.
>:))) Не выдает вообще ничего.
из чего следует, что в ядре ваша функция отсутствует. Значит вы скорее всего 1) загрузили не то ядро (поелику make clean вы написали, что сделали)
2) у вас 2.4.х (тогда в студию надо cat /proc/ksyms | grep new_func)
ЗЫ: естесно ,что new_func - имя реальной функции, добавленной вами в ядро
>из чего следует, что в ядре ваша функция отсутствует. Значит вы скорее
>всего 1) загрузили не то ядро (поелику make clean вы написали,
>что сделали)
> 2) у вас 2.4.х (тогда в
>студию надо cat /proc/ksyms | grep new_func)
>
>ЗЫ: естесно ,что new_func - имя реальной функции, добавленной вами в ядро
>В том-то и проблема, что вроде бы делаю все так как надо. Ядро 2.6 железно ( ASP 11 ). Грузил/билдил его тоже по книжке:
сначала исходники распаковываются в usr/src/asplinux/BUILD/kernel-2.6.14
потом содержимое этой папочки копируем в usr/src/linux-2.6.14
делаем на нее символьную ссылочку linux в папке usr/src
залезаем туда и говорим make...Если в свежеустановленном линуксе попытаться написать свой драйвер без отбуилженного таким образом ядра, то он начинает ругаться, что свидетельствует о том, что ядро действительно буилдится.
Так что я вообще в непонятках...
Может, у меня дистрибутив такой долбанутый, что каким-то образом предотвращает появление новых функций? Или я все же делаю что-нибудь не так?
билдится - это хорошо, а вы потом загружаете это свежеотбилженное ядро?
> билдится - это хорошо, а вы потом загружаете это свежеотбилженное ядро?
>Спасибо! Не знал, что его нужно еще и загружать! Горю от нетерпения узнать, как это делается. Если вам не хочется самим все расписывать, то может, знаете где можно это прочитать?
Буду очень благодарен :)))
>Буду очень благодарен :)))google рулит
>>Буду очень благодарен :)))
>
>google рулитВоистину рулит :))) Все нашел. Сенкс!