URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 84511
[ Назад ]

Исходное сообщение
"не компилится модуль на ядрах > 2.6.24"

Отправлено Lynx , 16-Мрт-09 18:52 
Hello.

есть модуль для специализированной железки для рассчетов.
этот модуль прекрасно собирается и работает на ядрах < 2.6.25
на ядрах >= 2.6.25 при компиляции получаем:

error: variable 'fops' has initializer but incomplete type
error: unknown field 'ioctl' specified in initializer
warning: excess elements in struct initializer
warning: (near initialization for 'fops')
error: unknown field 'mmap' specified in initializer
warning: excess elements in struct initializer
warning: (near initialization for 'fops')
error: unknown field 'open' specified in initializer
warning: excess elements in struct initializer
warning: (near initialization for 'fops')
error: unknown field 'release' specified in initializer
warning: excess elements in struct initializer
warning: (near initialization for 'fops')
error: unknown field 'nopage' specified in initializer
warning: initialization from incompatible pointer type
error: unknown field 'nopage' specified in initializer
warning: initialization from incompatible pointer type
In function 'modpci_init':
error: implicit declaration of function 'register_chrdev'
In function 'modpci_exit':
error: implicit declaration of function 'unregister_chrdev'
In function 'modpci_ioctl':
error: implicit declaration of function 'MINOR'
error: dereferencing pointer to incomplete type
warning: ignoring return value of 'copy_from_user', declared with attribute warn_unused_result
warning: ignoring return value of 'copy_from_user', declared with attribute warn_unused_result
warning: ignoring return value of 'copy_to_user', declared with attribute warn_unused_result
warning: ignoring return value of 'copy_to_user', declared with attribute warn_unused_result
warning: ignoring return value of 'copy_to_user', declared with attribute warn_unused_result
In function 'modpci_dmar_vma_nopage':
error: dereferencing pointer to incomplete type
In function 'modpci_dmaw_vma_nopage':
error: dereferencing pointer to incomplete type
In function 'modpci_mmap':
error: dereferencing pointer to incomplete type
In function 'n_modpci_exist':
warning: 'pci_find_device' is
deprecated (declared at include/linux/pci.h:514)
make[2]: *** [modpci.o] Error 1
make[1]: *** [modpci] Error 2
make: *** [default] Error 2

Что за нововведения произошли в более новых ядрах?
Куда смотреть и что починить?
От версии компилятора это не зависит.

Thanx.


Содержание

Сообщения в этом обсуждении
"не компилится модуль на ядрах > 2.6.24"
Отправлено mikra , 16-Мрт-09 20:11 
>этот модуль прекрасно собирается и работает на ядрах < 2.6.25
>на ядрах >= 2.6.25 при компиляции получаем:
>
>error: variable 'fops' has initializer but incomplete type
>error: unknown field 'ioctl' specified in initializer
>Что за нововведения произошли в более новых ядрах?
>Куда смотреть и что починить?

Ну смотри. Во второй же строке говорится о несовместимости структур. Значит в очередном ядре изменился програмный интерфейс взаимодействия с модулями.
1. Можно не ставить новые ядра и все будет работать.
2. Можно обратиться к разработчику модуля за патчем.
3. Можно разобраться как работает драйвер и переписать его под новое ядро.
4. Можно самому научиться кодить, разобраться в тысячах строк кода ядра линукс и написать патч, который будет позволять модулю работать. Это будет эквивалентно
"НОВОЕЯДРО"+"РАБОТА"="СТАРОЕЯДРО"
Получается первый вариант. Может лучше сразу исключить "НОВОЕЯДРО" и "РАБОТА" :)

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


"не компилится модуль на ядрах > 2.6.24"
Отправлено Аноним , 16-Мрт-09 20:52 
Не работает из-за modpci, посмотри может каких нибудь опций нехватает в конфиге