Простите, за предудущую тему -- случайно сорвалось... ;(
Итак, я немного боюсь что мой вопрос будет из класса "Помогите", но все же...
Ситуация: Есть простая как Чебурашка ISA-шная плата (если вдруг кто в курсе Fastwel Unio-xx5), у нее есть диапаозо портов ввода/вывола, прерывание можно ее заставить генерить, и один канал dma устроить и умеет она вводить и выводить разные сигналы в зависимости от прошивки. Ну да вопрос не в этом. Помимо документации есть с ней примеры под dos, да-да есть такая операционная система... ;)
Первое что сделал ваш покорный слуга -- втупую переписал dos-овский пример под линукс заменяя inportb на inb inport на inw и аналогичные процедуры с outportX, не забыв перед всем этим безобразием вставить
iopl(3);
Тут началось довольно интересное... Код схемы -- прекрасно читается (порт с адресом А), а вот слово состояния (порт с адресом В) -- хрен. Нулики там, чего с ней не делай...
Базовый адрес менял, в /proc/ioports глядел... В общем только "баллоны не пинал"...
Засомневался в железяке -- раскопал где-то дискетку с виндами 98 и компилятор борландовский -- собрал дос-овский пример -- пашет как часы!
Внимание ВОПРОС: понимаю, что ситуация достаточно конкретная, а вопрос абстрактный и на конкретный ответ рассчитывать странно (если только кто-то с этой плятой прямо работал). Но тем не менее апеллирую к опыту и интуиции коллег: если диапазон ввода/выводи никем не занят, то ПОЧЕМУ такая тупая штука работает по разному в доске и linux-e?
PS. Да, в модуль тоже попробовал все это засунуть. С захватом ресурсов и пр... Ресурсы захватываются, а данных как нет так и нет. ;-(((
Простите, за многословность. Если кто будет так добр и потребует подробностей -- подробности будут.