Автор Тема: rmmod  (Прочитано 5231 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Vena

  • Собеседник
  • ****
  • Сообщений: 375
    • Просмотр профиля
rmmod
« : Пятница, 16 Сентября, 2011, 05:27:19 »
Привет!
Есть такая проблема. Debian lenny с ядром 2.6.30. Установлены "дрова" на карточку захвата изображения tw6815.
Мне нужно поменять при настройке некоторые параметры. Для этого пытаюсь выгрузить модуль
$ sudo rmmod tw68в ответ получаю
ERROR: Module tw68 is in useникак не найду, кто его держит? Как выяснить или принудительно выгрузить модуль?

$ lsmod |grep tw68
tw68                   39484  1
v4l2_common            14116  1 tw68
videodev               31844  4 uvcvideo,tw68,v4l2_common
videobuf_dma_sg        11104  1 tw68
videobuf_core          16064  2 tw68,videobuf_dma_sg
btcx_risc               4420  1 tw68
« Последнее редактирование: Пятница, 16 Сентября, 2011, 05:52:28 от Vena »

vovka

  • Global Moderator
  • Про
  • *****
  • Сообщений: 787
    • Просмотр профиля
    • www.nixzeya.ru.net
Re: rmmod
« Ответ #1 : Пятница, 16 Сентября, 2011, 06:36:21 »
$ sudo rmmod tw68Что по этому поводу пишет syslog ?
Какие зависимости есть у модуля?
modinfo tw68
На выводе:
$ lsmod |grep tw68
tw68                   39484  1
v4l2_common            14116  1 tw68
videodev               31844  4 uvcvideo,tw68,v4l2_common
videobuf_dma_sg        11104  1 tw68
videobuf_core          16064  2 tw68,videobuf_dma_sg
btcx_risc               4420  1 tw68

модуль tw68 используется другими модулями: videodev, videobuf_dma_sg, videobuf_core, btcx_risc  - их все нужно выгрузить перед тем как выгружать основной tw68.
Можно зависимые модули выгружать вручную, а можно попробовать применить команду:
# modprobe -r -v tw68
,где ключ -r  (от англ. "remove") старается выгрузить зависимости, а потом и сам модуль; -v - нужно для вывода отладочной информации.
« Последнее редактирование: Пятница, 16 Сентября, 2011, 06:38:36 от vovka »
*nix - свобода мысли, свобода творчества!

Vena

  • Собеседник
  • ****
  • Сообщений: 375
    • Просмотр профиля
Re: rmmod
« Ответ #2 : Пятница, 16 Сентября, 2011, 07:46:48 »
$ sudo rmmod tw68Что по этому поводу пишет syslog ?


сислог ничего нового не пишет :(
Sep 17 13:29:27 video kernel: [ 9683.807193] tw68_qbuf()
Sep 17 13:29:27 video kernel: [ 9683.807205] buffer_queue(0)
Sep 17 13:29:27 video kernel: [ 9683.807216] tw68_dqbuf()
Sep 17 13:29:27 video kernel: [ 9683.870066] tw68_wakeup()
Sep 17 13:29:28 video kernel: [ 9684.307219] tw68_qbuf()
Sep 17 13:29:28 video kernel: [ 9684.307230] buffer_queue(1)
Sep 17 13:29:28 video kernel: [ 9684.307241] tw68_dqbuf()
Sep 17 13:29:28 video kernel: [ 9684.350106] tw68_wakeup()
Sep 17 13:29:28 video kernel: [ 9684.807256] tw68_qbuf()
Sep 17 13:29:28 video kernel: [ 9684.807266] buffer_queue(2)
Sep 17 13:29:28 video kernel: [ 9684.807278] tw68_dqbuf()
Sep 17 13:29:28 video kernel: [ 9684.870145] tw68_wakeup()
Sep 17 13:29:29 video kernel: [ 9685.307488] tw68_qbuf()
Sep 17 13:29:29 video kernel: [ 9685.307499] buffer_queue(3)
Sep 17 13:29:29 video kernel: [ 9685.307511] tw68_dqbuf()
Sep 17 13:29:29 video kernel: [ 9685.350179] tw68_wakeup()

Какие зависимости есть у модуля?
modinfo tw68

Вот:
$ sudo modinfo tw68
filename:       /lib/modules/2.6.30/kernel/drivers/media/video/tw68.ko
license:        GPL
author:         William M. Brack <wbrack@mmm.com.hk>
description:    v4l2 driver module for tw6800 based video capture cards
alias:          pci:v00001797d00006810sv*sd*bc*sc*i*
alias:          pci:v00001797d00006804sv*sd*bc*sc*i*
alias:          pci:v00001797d00006801sv*sd*bc*sc*i*
alias:          pci:v00001797d00006800sv*sd*bc*sc*i*
depends:        videobuf-core,videobuf-dma-sg,videodev,v4l2-common,btcx-risc
vermagic:       2.6.30 SMP mod_unload modversions 686
parm:           video_debug:enable debug messages [video] (int)
parm:           gbuffers:number of capture buffers, range 2-32 (int)
parm:           noninterlaced:capture non interlaced video (int)
parm:           secam:force SECAM variant, either DK,L or Lc (string)
parm:           core_debug:enable debug messages [core] (int)
parm:           gpio_tracking:enable debug messages [gpio] (int)
parm:           alsa:enable/disable ALSA DMA sound [dmasound] (int)
parm:           latency:pci latency timer (int)
parm:           nocomb:disable comb filter (int)
parm:           video_nr:video device number (array of int)
parm:           vbi_nr:vbi device number (array of int)
parm:           radio_nr:radio device number (array of int)
parm:           tuner:tuner type (array of int)
parm:           card:card type (array of int)



а можно попробовать применить команду:
# modprobe -r -v tw68

ни хрен по деревне :(
# modprobe -r -v tw68
FATAL: Module tw68 is in use.

vovka

  • Global Moderator
  • Про
  • *****
  • Сообщений: 787
    • Просмотр профиля
    • www.nixzeya.ru.net
Re: rmmod
« Ответ #3 : Суббота, 17 Сентября, 2011, 05:52:41 »
Возможные причины: 1) "кривой" модуль, 2) не выгружены зависимости верхнего уровня - собственно программы, эксплуатирующие железку.
 
Есть несколько способов решения:
1. Проверить зависимости верхнего уровня на предмет занятия аппаратуры.
2. Поступить брутально:
# modprobe -r -f -v tw68
3. Если выгружать\загружать нужно только для отладки - методом перезагрузок определяем параметры, с которыми нужно чтобы грузились модули, а затем создаём конфиг или скрипт, куда прописываем нужные параметры, чтобы они применялись автоматом.
*nix - свобода мысли, свобода творчества!