intel13h Гость
|
Добавлено: Вт Авг 13 2002 15:33 Заголовок сообщения: Обработчики прерываний в драйвере freeBSD |
|
|
Здорово народ. У меня такая проблема. Я написал PCI драйвер для устройства, который компилируется в ядро или подгружается динамически. Если драйвер компилить в ядро то все тип топ, а если подгружать, то возникает проблема с обработкой прерываний (а вот проблем с записью и чтением не наблюдается). Проблема следующая - если прерывания возникают когда драйвер ещё загружается и мой обработчик уже установлен, то я их перехватываю без проблем. Как только драйвер загрузился полностью и запускается какая нибудь программка, то прерывания моим обработчиком не перехватываются (а они - прерывания - есть). Суть в том еще что данная версия freeBSD не поддерживает динамическую загрузку драйверов (KLD), но есть динамическая загрузка модулей (LKM). Вот в виде LKM мой драйвер и недорабатывает с прерываниями. Я точно знаю что нужно системе как то сказать, что обработчик прерывания был перенастроен на определенную функцию, а вот в какой переменной (структуре) должна храниться эта информация я не совсем знаю, точнее догадываюсь, но получить доступ к ней из вне нельзя (она и все функции, работающие сней, в исходниках объявлена как static). Можно конечно сбросить static и собрать новое ядро, но делать этого не стоит, так как это уже будет другое (нестандартное) ядро. Если у кого то есть какие нибудь идеи, как можно обойти static не сбрасывая его (не пересобирая ядро) или может другая информация (например, по работе с ситемными таблицами в UNIX) буду признателен. А вообще версия UNIX, с которой я работаю - freeBSD 2.1 (может кто ковырял такую? :>) )
Thanks... |
|