|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Alexander V. Ribchansky 2:5020/400 26 Sep 2007 18:50:54 To : All Subject : cardreader + freebsd = немного неудобно --------------------------------------------------------------------------------
Господа!
Hатолкнулся на "неудобность" при использовании внутреннего или, в
меньшей степени - внешнего кардридера. Суть в том, что если во внешний
кардридер ДО его подключения тыкнуть карту, потом подключить его, то все
гуд - хоть ручное, хоть автомонтирование через hal + kde mediamanager
все прекрасно монтирует. Однако в случае если карты небыло ДО втыкания
внешнего кардридера или ДО загрузки компа с внутренним кардридером, то
после втыкания карты не обойтись без танца с бубном, чтоб можно было
монтировать карту. Танец - всем (наверное :о) известный - true >
/dev/da0 и вуаля - волшебным образом появляются раздел(ы) для
монтирования - da0s1 итд итп. Такой танец с бубном есть жутко неудобная
штука. Особенно в десктопном использовании простым пользователем. Ему
сложно объяснить все эти "пинания кардридера" Да и неудобно это
попросту. Что удалось выяснить:
командой true мы собственно fopen("/dev/da0",O_RDWR) да и все. Тоесть
коль пишем мини-праграммулину, которая открывает файл /dev/da0 на
чтение/запись при вставленной карте, то после этого у нас появляются
монтирабельные устройства (или вручную или из hal + друзья)
далее выяснилось, что кардридеры (и не толко они) не умеют сообщать о
том, что в них появился или изчез носитель. Причем это безотносительно
ОС - они этого аппаратно-программно не делают. Посему все ОС должны так
или иначе опрашивать (polling) такого рода устройства на предмет
втыкания/вытыкания собственно носителя. В подсистеме hal для этого
служит hald-addon-storage запускаемый для каждого устройства с удаляемым
носителем. Именно эта приблуда и опрашивает устройство и помогает
автомонтированию. Однако в случае с кардридером внутренним или внешним в
позе "воткнули без карты, а потом карту тыкнули" эта приблуда
непомогает. Чтение исходников фревой версии приблуды привело к тому, что
проверка там идет по fopen(device,O_RDONLY). Грязный хак со сменой
O_RDONLY на O_RDWR не помог. точнее помог, но как-то через одно место -
теперь надо карту ткнуть, вынуть, ткнуть и тогда оно его подхватывает. Жуть!
Теперь что у соперников творится в линухе. Там все то же самое (по
крайней мере по моим экспериментам _скудным_) за исключением того, что
их версия приблуды hald-addon-storage прекрасно детектит втык/вытык
носителя. Копнув дальше, оказалось, что в линухе таки достаточно сделать
fopen(device,O_RDONLY) чтобы пнуть кардридер на предмет наличия
отсутствия носителя в нем.
ВОПРОС! Кто виноват и что делать (с)
Может кто-то с более глубоким знанием подсистем scsi и/или geom смогли
бы глянуть на все это хозяйство и пофиксить столь малоудобное поведение?
Или хотя бы направили бы меня горемыку в нужное русло доки и спеки?
сорсы читал. неосилил :о(
--
AVR39-RIPE
--- ifmail v.2.15dev5.4
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/25777b7bb9796.html, оценка из 5, голосов 10
|