Итак.
1. Библиотека libpciaccess версии 0.12.1 на
Код: Выделить всё
Linux localhost 2.6.32-hardened-r34 #1 SMP PREEMPT Thu Feb 24 13:01:00 EET 2011 i686 Intel(R) Pentium(R) Dual CPU T2330 @ 1.60GHz GenuineIntel GNU/LinuxПроблема заключается в том, что в config space (как в /sys, так и в /proc) находятся необновленные данные. Т.е, kernel в процессе загрузки и инициализации устройства обновляет данные о назначенном устройству прерывании в своих внутренних таблицах, но не в PCI config space.
2. Эта же библиотека. Не верно заполняются флаги ресурса (is_IO, is_prefetchable и is_64 в структуре struct pci_mem_region). Мне удалось наблюдать только заполнение флага is_IO. Все остальные никогда не заполняются.
Видимо - это просто еще не доделали. Как не доделали и работу с ресурсом типа Flash ROM.
3. Библиотека libpci в составе pciutils 3.1.4. Не верная работа функции pci_fill_info в случае, если указатель на PCI устройство создан функцией pci_get_dev. Ни одна комбинация flags в функции pci_fill_info не дает полноценного заполнения структуры struct pci_dev данными - не правильно загружаются прерывания, не заполняются размеры областей памяти и так далее.
Пришлось перейти на вариант
Код: Выделить всё
for(dev=pacc->devices; dev; dev=dev->next) {
pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES....);}С уважением.
i Уведомление от модератора /dev/random удалена ссылка