Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 cardreader + freebsd = немного неудобно   Alexander V. Ribchansky   26 Sep 2007 18:50:54 
 Re: cardreader + freebsd = немного неудобно   Andrey Zonov   02 Oct 2007 22:44:40 
 Re: cardreader + freebsd = немного неудобно   Alexander V. Ribchansky   07 Oct 2007 18:35:29 
 cardreader + freebsd = немного неудобно   Alex Mogilnikov   07 Oct 2007 21:24:03 
Архивное /ru.unix.bsd/25777b7bb9796.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional