Цитата(3.14 @ Nov 5 2005, 17:42)
Блин, чем дальше, тем ...
На самом деле - ничего страшного. Все эти проблемы от того, что нет ясности в том, как драйвер должен работать.
Цитата
На данный момент, мой "кастрат" не выходит из request (или не так выходит). Создал тестик, который открывает файл устройства и читает из него 10 байт и закрывает файл. Для отладки, натыкал в драйвере индикаторов выполнения.
После вызова fread, ядро вызвает xsysace_do_request, выполняет команду READ, после этого система виснет, но не так чтобы совсем замереть, терминалка реагирует на нажатие клавиш.

Явная проблема xsysace_do_request - нарушена логика его работы. Поясню. Драйвер должен работать следующим образом:
1. Выполняется инициализация и регистрируется блочное устройство. При этом выделяются и резервируются все те аппаратные ресурсы (порты, области памяти, прерывания), которые использует устройство.
2. Рабочий цикл драйвера, в котором он принимает запросы ввода-вывода от различных подсистем ядра (файловая система, интерфейс с пользовательским ПО). При приходе запроса ввода-вывода вызывается зарегистрированная функция-обработчик запросов, которая выполняет передачу данных в запрошенном направлении (READ или WRITE), при этом очередь запросов должна быть обработана полностью. (В этом, кстати, проблема твоего драйвера, но об этом ниже). Обработка запросов может выполняться в отложенном режиме (по таймеру, по прерыванию или иначе), но главное -
должна выполняться. Если запрос на ввод-вывод не будет обработан, но подсистема или процесс его сделавший будет "висеть" до тех пор, пока запрос не завершится тем или иным образом. А у тебя этого не происходит, т.к. в функции обработки запросов нет цикла (а должет быть). При этом цикл должен в общем случае выполняться до тех пор, пока есть запросы в очереди (условие ! QUERY_EMPTY).
3. Останов драйвера.
Цитата
Насчет MBR, меня смутило то что FAT может сохранять свои параметры прямо в MBR.
Откуда дровишки?

Не имеет FAT права сохранять что-либо в MBR. В Boot Record раздела - пожалуйста, но в MBR - никогда.
Цитата
Насчет цилиндров, например, если посчитать суммарную емкость флешки из параметров которые показывает WinHex, то она не совпадает с общей на 9000 секторов, хотя FAT занимает 971х2, резервных 34 и скрытых 32 сектора.
Нужно смотреть на то, что показывает fdisk под линуксом. Он не обманет.
Цитата
Еще, когда мой драйвер грузится, то вываливается сообщение о неизвестной таблице партишинов, это что означает, что я не смогу его смонтировать?
Нет, твой драйвер умеет работать с таблицей разделов, просто на карточке ее нет. Т.е. FAT занимает всю карточк монопольно.