Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
 Аватар для Allius25
15 / 15 / 8
Регистрация: 17.06.2013
Сообщений: 209

Модуль hello_world и ошибка "Device or resource busy"

06.08.2014, 04:08. Показов 3221. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте многоуважаемые знатоки. Нуждаюсь в вашей помощи.

Этот вариант Hello_world работает исправно
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
 
void sayHello()
{
        printk(KERN_INFO"Hello mad  world\n");
}
EXPORT_SYMBOL(sayHello);
 
static int __init hello_init(void)
{
        sayHello();
        return 0;
}
 
static void __exit hello_exit(void)
{
        printk(KERN_INFO"Goodbye mad world\n");
}
 
module_init(hello_init);
module_exit(hello_exit);
 
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Copyright (c) 2006 by xxxx xxxxx, Inc.");
MODULE_DESCRIPTION("1");

Когда разобрался с ним, решил усложнить задачу, и собрать тот же код из 2х половинок.

"hello2.c"
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include "say.c"
 
static int __init hello_init(void)
{
        sayHello();
        return 0;
}
 
static void __init hello_exit(void)
{
        sayGoodbye();
}
 
module_init(hello_init);
module_exit(hello_exit);
 
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Copyright (c) 2006 by xxxx xxxxx, Inc.");
MODULE_DESCRIPTION("1");

"say.c"
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
 
void sayHello()
{
        printk(KERN_INFO"Hello mad  world\n");
}
 
void sayGoodbye()
{
        printk(KERN_INFO"Goodbye mad  world\n");
}


Второй модуль(hello2.ko) прекрасно встает на место, выводит в dmesg заветное(Hello mad world), но убираться не хочет.
Выдает
C
1
2
sudo rmmod hello2 
ERROR: Removing 'hello2': Device or resource busy
Поностью убрать проблему помогает перезагрузка виртуалки

А вот эту лабуду он выводит в dmesg при попытке его удалить
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
sudo rmmod hello2
BUG: unable to handle kernel paging request at 00224000
[  370.948050] IP: [<f822488d>] 0xf822488d
[  370.948050] *pdpt = 000000003680c001 *pde = 000000003f4a8067 
[  370.948050] Oops: 0002 [#1] SMP 
[  370.948050] last sysfs file: /sys/module/vboxguest/initstate
[  370.948050] Modules linked in: hello2(-) vboxvfs joydev ppdev fbcon tileblit font bitblit softcursor parport_pc vboxguest lp parport psmouse serio_raw i2c_piix4 vga16fb vgastate usbhid ahci hid e1000
[  370.948050] 
[  370.948050] Pid: 1285, comm: rmmod Not tainted (2.6.32-30-generic-pae #59-Ubuntu) VirtualBox
[  370.948050] EIP: 0060:[<f822488d>] EFLAGS: 00010206 CPU: 0
[  370.948050] EIP is at 0xf822488d
[  370.948050] EAX: 00224000 EBX: 00000000 ECX: 00000018 EDX: 00000008
[  370.948050] ESI: f82210c0 EDI: 00000880 EBP: f6ccbfac ESP: f6ccbf4c
[  370.948050]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0069
[  370.948050] Process rmmod (pid: 1285, ti=f6cca000 task=f6b75940 task.ti=f6cca000)
[  370.948050] Stack:
[  370.948050]  c0188f59 f82210c0 00000880 f6ccbf5c 00000000 6c6c6568 0000326f fffb2ef8
[  370.948050] <0> f688c1e0 f6ccbfb4 007df160 f6ccbfac c05b7cf0 00000000 b7722000 f688c8a0
[  370.948050] <0> 0000007b f68e3738 f6b75940 008e3700 7769a31b bfcc1f40 00000001 bfcc1f40
[  370.948050] Call Trace:
[  370.948050]  [<c0188f59>] ? sys_delete_module+0x169/0x200
[  370.948050]  [<c05b7cf0>] ? do_page_fault+0x160/0x3a0
[  370.948050]  [<c01097ac>] ? syscall_call+0x7/0xb
[  370.948050] Code: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 25 40 ce 3f 00 <00> 00 00 25 70 cd 3f 00 00 00 00 25 60 cd 3f 00 00 00 00 25 50 
[  370.948050] EIP: [<f822488d>] 0xf822488d SS:ESP 0069:f6ccbf4c
[  370.948050] CR2: 0000000000224000
[  371.489228] ---[ end trace a1e105a36f52c753 ]---


Если есть тот, кто понимает strace, то таким еще один бонус
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
sudo strace rmmod hello2 
execve("/sbin/rmmod", ["rmmod", "hello2"], [/* 23 vars */]) = 0
brk(0)                                  = 0x8fb2000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77c6000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=27304, ...}) = 0
mmap2(NULL, 27304, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb77bf000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000m\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1405508, ...}) = 0
mmap2(NULL, 1415592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xbc3000
mprotect(0xd16000, 4096, PROT_NONE)     = 0
mmap2(0xd17000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x153) = 0xd17000
mmap2(0xd1a000, 10664, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xd1a000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77be000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb77be8d0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xd17000, 8192, PROT_READ)     = 0
mprotect(0x804a000, 4096, PROT_READ)    = 0
mprotect(0x6af000, 4096, PROT_READ)     = 0
munmap(0xb77bf000, 27304)               = 0
brk(0)                                  = 0x8fb2000
brk(0x8fd3000)                          = 0x8fd3000
open("/proc/modules", O_RDONLY)         = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77c5000
read(3, "hello2 840 0 - Unloading 0xf8221"..., 1024) = 794
close(3)                                = 0
munmap(0xb77c5000, 4096)                = 0
delete_module("hello2", O_RDONLY|O_EXCL|O_NONBLOCK) = -1 EBUSY (Device or resource busy)
write(2, "ERROR: Removing 'hello2': Device"..., 50ERROR: Removing 'hello2': Device or resource busy
) = 50
exit_group(1)                           = ?


Очень надеюсь на вас. Спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.08.2014, 04:08
Ответы с готовыми решениями:

ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
Подскажите что это, я даже не понял что изменилось

1С выпадает с ошибкой, про sql: server too busy to accept new connections or a resource limitation
Здравствуйте! Я новый сервер настроила. Там 2 в 1: sql+1c-сервер приложений. Запустили перепроведение – это процедура в 1с:Управлении...

Ошибка создания Device в DirectSound. Не видит namespace Device
хочу в примитивной игрушке (сделанной не на Direct3D) добавить звуковое оформление через DirectSound. 1. Скачал и установил DirectX...

12
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
11.08.2014, 12:22
А можно посмотреть выхлоп
Bash
1
modinfo имя_твоего_модуля
для первого и второго случаев?
0
 Аватар для Allius25
15 / 15 / 8
Регистрация: 17.06.2013
Сообщений: 209
12.08.2014, 02:20  [ТС]
drfaust,
Цитата Сообщение от drfaust Посмотреть сообщение
А можно посмотреть выхлоп
Первый вариант.
Bash
1
2
3
4
5
6
7
8
modinfo hello.ko
filename:       hello.ko
description:    1
author:         Copyright (c) 2006 by xxxx xxxxx, Inc.
license:        GPL
srcversion:     BABF59DDB068F0060B69995
depends:        
vermagic:       2.6.32-30-generic-pae SMP mod_unload modversions 586TSC
Второй вариант.
Bash
1
2
3
4
5
6
7
8
modinfo hello2.ko
filename:       hello2.ko
description:    1
author:         Copyright (c) 2006 by xxxx xxxxx, Inc.
license:        GPL
srcversion:     D94CBD7661317B217EBC6B2
depends:        
vermagic:       2.6.32-30-generic-pae SMP mod_unload modversions 586TSC
0
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
12.08.2014, 13:11
ОК, тут всё хорошо. А выхлоп
Bash
1
lsmod | grep hello2.ko
И в четвёртом поле посмотреть кто использует модуль (третье поле - кол-во ссылок_использования, второе - размер модуля, а первое имя самого модуля).
Например, тут я вижу,
Bash
1
2
i8042                  13666  1 libps2
serio                  11018  6 serio_raw,atkbd,i8042,psmouse
что драйвер клавы использует какая-то либа libps2 и пока она его использует выгрузить i8042 я не смогу - будет "Device or resource busy"
0
 Аватар для Allius25
15 / 15 / 8
Регистрация: 17.06.2013
Сообщений: 209
12.08.2014, 15:12  [ТС]
drfaust,
Bash
1
2
3
lsmod 
Module                  Size  Used by
hello2                   840   0
При выгрузке пишет killed, хотя обычно в shell ничего не выводит
Bash
1
2
sudo rmmod hello2 
Killed
И остается активным(это после rmmod)
Bash
1
2
3
lsmod 
Module                  Size  Used by
hello2                   840   0
0
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
13.08.2014, 09:49
А если выгрузить так:
Bash
1
modprobe -r -v hello2
0
 Аватар для Allius25
15 / 15 / 8
Регистрация: 17.06.2013
Сообщений: 209
13.08.2014, 14:37  [ТС]
drfaust,
Bash
1
2
sudo modprobe -r -v hello2
FATAL: Module hello2 not found.
Это при том, чтоя его подклчил, он вывел сообщение в dmesg, и прописан как существующий в lsmod
0
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
13.08.2014, 15:35
https://www.google.ru/webhp?so... +not+found
Первая же ссылка - ответ в предпоследнем посте:
в мане на modprobe проглядел.
0
 Аватар для Allius25
15 / 15 / 8
Регистрация: 17.06.2013
Сообщений: 209
13.08.2014, 19:12  [ТС]
drfaust, Ничего.
Только при первом rmmod начал выдавать "segmentation fault", а при последующих "ERROR: Removing 'hello2': Device or resource busy"
0
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
14.08.2014, 09:39
Я имел ввиду depmod -a . Тогда modprobe должен будет увидеть модуль.

А вот про "seg. fault" думаю надо сначала с hello v.1 разобраться, почему rmmod сегфолтится.
0
 Аватар для Allius25
15 / 15 / 8
Регистрация: 17.06.2013
Сообщений: 209
14.08.2014, 13:38  [ТС]
drfaust,
Так нужно сделать?
Bash
1
2
sudo depmod -a
sudo modprobe hello2.ko
Если да, то вот ответ
Bash
1
FATAL: Module hello2.ko not found.
0
deleted
177 / 50 / 5
Регистрация: 29.03.2013
Сообщений: 365
17.08.2014, 19:34
Знатно ты сам себя [cut], перед hello_exit сотри __init и будет тебе счастье
2
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
18.08.2014, 11:51
Цитата Сообщение от _1_ Посмотреть сообщение
сотри __init и будет тебе счастье
Замени на __exit.
Блин, за что я люблю С и С++ из-за мелкой опечатки можно попасть в хорошую опу. И самое главное я тоже этот код "под лупой" разглядывал, искал, и фиг что нашёл
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.08.2014, 11:51
Помогаю со студенческими работами здесь

Что означает ошибка device missing or unknow device (-24)?
Пытаюсь хотя бы считать данные с микроконтроллера через PonyProg. Выдает ошибку. Вроде все работает. Программатор UsBasp 2.0 + две...

Ошибка "Device missing or unknown device (-24)"
Приветствую всех. При попытке прочитать или записать данные из/в Tiny13 через PonyProk2000 версии 2.08С получаю указанную ошибку....

We're just busy hiding, we're just busy ridin’
Здравствуйте! Я хотел бы привести здесь текст песни Paul McCartney - The Back Seat Of My Car. Words &amp; Music by Paul McCartney ©...

Ошибка Table is busy
необходимо сделать сортировку по допиндексу, созданного программно. Вот код, в чём проблема? DataModule2.fak.Active:=false; ...

Модуль resource для Винды
У меня возникла проблема. Мой скрипт использует модуль resource, но насколько я понял его нет в windiws. Какой библиотекой можно заменить? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru