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


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Zahar Kiselev                        2:5030/382.1   10 Oct 2005  19:08:26
 To : Victor Wagner
 Subject : Кто держит устройство?
 -------------------------------------------------------------------------------- 
 
 
 Oct 10 09:41 05, Victor Wagner wrote to All:
 
  VW> Как узнать, какая бяка заняла устройство и не дает перегрузить 
  VW> модуль?
  VW> $ sudo rmmod maestro3
  VW> ERROR: Module maestro3 is in use
  VW> $ /sbin/lsmod |grep maestro
  VW> maestro3               42120  3 
  VW> ac97_codec             24076  1 maestro3
  VW> Мы видим что на этот модуль имеется аж три ссылки.
 
 Hасколько я понял в результата кодокопания - эта цифра 3 - является значением
 счетчика, называющегося как-то типа mod_use_count, вобщем довольно очевидно.
 Раньше уменьшением/увеличением значения этого счетчика было положено заниматься 
 самому модулю в функциях открытия и закрытия устройства. Потом "вести учет" ядро
 стало само, хотя из модуля по-прежнему до счетчика добраться можно. В процессе
 экспериментов с написанием собственного модуля под одну крайне экзотическую
 плату (многоканальный АЦП на шину ISA, да еще и отечественный) - у меня из-за
 ошибок бывало так, что программа, взаимодействующая с этим модулем, тоже своя,
 завершилась аварийно, и по всей 
 видимости не выполнила правильное закрытие устройства. Или по каким-то иным
 причинам счетчик не обнулился. Вот тогда модуль выгрузить не удавалось.
 Это я все к чему говорю - к тому, что кроме счетчика, я не нашел какую можно
 добыть информацию о том, кто лезет к обслуживаемому модулем устройству, если
 лезущий процесс уже завершился. Так что цифра "3" есть, ядро ее проверяет и
 модуль выгрузить не дает, а информации о том кто счетчик увеличил - уже нет, как
 и законного способа записать в него ноль.
 
 Естественно - все вышесказанное относится к ядру 2.4, более новые я не копал.
 
 Кстати - модуль для той платы АЦП я доделал до состояния, когда он уже мог по
 запросу программы прочитать значение. Вот с работе по прерываниям не разобрался 
 пока - а именно - как из находящегося в модуле обработчика прерывания доступить 
 к общим переменным модуля чтобы положить туда то, что прочитал из ацп этот
 обработчик. Контекст-то разный при вызове функций модуля по случаю обращения
 программы к устройству или при вызове прерывания железкой.
 Впрочем - мне на тот случай опроса хватило, так как измеряемый процесс очень
 медленный и достаточно "спрашивать" значение раз в минуту. Если потребуются
 прерывания - буду копать дальше.
 
 Zahar
 
 --- Msged/LNX 6.1.1
  * Origin: mobile point - Compaq Armada 1750 + Siemens ME45 (2:5030/382.1)
 
 

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

 Тема:    Автор:    Дата:  
 Кто держит устройство?   Victor Wagner   10 Oct 2005 09:41:13 
 Кто держит устройство?   Zahar Kiselev   10 Oct 2005 19:08:26 
 Кто держит устройство?   Oleg Fedorov   11 Oct 2005 01:59:10 
 Re: Кто держит устройство?   Victor Wagner   11 Oct 2005 08:46:42 
 Кто держит устройство?   Oleg Fedorov   12 Oct 2005 00:03:28 
 Re: Кто держит устройство?   Zahar Kiselev   12 Oct 2005 05:27:38 
 Кто держит устройство?   Pavel Borisov   13 Oct 2005 22:20:30 
 Кто держит устройство?   Zahar Kiselev   14 Oct 2005 19:17:20 
 Кто держит устройство?   Pavel Borisov   15 Oct 2005 18:56:28 
 Кто держит устройство?   Zahar Kiselev   16 Oct 2005 15:51:26 
 Проблема с драйвером maestro3 в 2.6.11 (Re: Кто держит устройство?)   Victor Wagner   11 Oct 2005 09:05:44 
 Re: Проблема с драйвером maestro3 в 2.6.11 (Re: Кто держит устройство?)   Victor Wagner   11 Oct 2005 10:49:18 
 Re: Проблема с драйвером maestro3 в 2.6.11 (Re: Кто держит устройство?)   Victor Wagner   12 Oct 2005 11:50:31 
Архивное /ru.linux/3288434a5db6.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional