Serge wrote:Моя идея: запускаем специальную утилиту и создаём файл с данными pci устройств. Ядро при инициализации грузит этот файл и по нему патчит 0x3Ch. В худшем случае создаём файл ручками. Заодно используем этот файл как диспетчер устройств для бедных, чтобы не сканировать каждый раз шину при поиске устройств.
где то так думал, но не совсем...
В моей концепции типа это сидит в "ступень 1" разворота и инита ядра ОС.
Т.е. "ступень 1" тест и анализ железа в RM.
Слово boot тут ни причем. Ядро уже в памяти.
Юзается все что по BIOSу можно вынюхать + прямые методы работы с портами и... типа патчинг всякого добра. Не исключен unreal в этом этапе, как временная мера, дабы в РМ скажем, не схлопотать "вилы в бок".
Наличие файла или доп утилиты - не вижу смысла. Железо все равно у всех разное. А вот механизм патчинга или развешивания важных вещех перед тем как сигануть в PM, весьма необходим, как предстартовая подготовка ракеты. Типа, чтобы не было "поздно пить Баржоми!"
Интеллектуально продернуть ВСЕ IRQ, которые собираешься юзать в системе, перед тем , как "навесить" нужный драйвер на них в "ступени 2" (или запретить это), на уже проверенный IRQ известного устройства, это считаю верным подходом.
Сканировать шину - мизер. Страха не вижу тут или опасения.
Я так понимаю твоя основная фича пропатчить "правильно" PCI cfg offset 0x3Ch нужными номерами свыше 16, так?
К стати по сабжу
вещица подумать неплохая