LINUX.ORG.RU

Не удаётся писать в порт из модуля ядра


0

0

Написал простейший модуль ядра. В модуле пытаюсь писать в порт клавиатуры:

outb_p(0xED, 0x60);
outb_p(num, 0x60);
Но ничего не происходит (по идее должен Num Lock загораться), а ядро говорит: atkbd.c: Spurious ACK isa0060/serio0. Some program might be trying access hardware directly.
То есть ядру не нравится, что мой модуль пишет напрямую в хардварный порт, но ведь модули работают в kernel-space и как я думал могут делать с компьютером всё, что угодно.
Подскажите, что нужно для того, чтобы получить доступ к железу из модуля ядра, в частности напрямую работать с портами?
ОС Ubuntu 10.04, работает в VirtualBox-е.

Дело в том, что для контроллера i8042 уже загружен соотв. модуль(он всегда вкомпилен в ядро), с ним и происходит конфликт.

anon_666 ()
Ответ на: комментарий от anonymous2

To anon_666: Понятно, спасибо.
To anonymous2: С помощью uinput скорее всего можно сделать то, что я хотел сделать через порты ввода вывода, но у меня-то интерес именно напрямую с железом поработать.

raynor_666 ()

если я правильно понял, тебе не хватает numlockx

xydo ★★ ()
Ответ на: комментарий от raynor_666

> у меня-то интерес именно напрямую с железом поработать.

тогда вы выбрали не ту платформу...

xydo ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.