The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Поиск:  Каталог документации

Next Previous Contents

8. Troubleshooting

Q1.

I get segmentation faults when accessing ports.

A1.

Either your program does not have root privileges, or the ioperm() call failed for some other reason. Check the return value of ioperm(). Also, check that you're actually accessing the ports that you enabled with ioperm() (see Q3). If you're using the delaying macros (inb_p(), outb_p(), and so on), remember to call ioperm() to get access to port 0x80 too.

Q2.

I can't find the in*(), out*() functions defined anywhere, and gcc complains about undefined references.

A2.

You did not compile with optimisation turned on (-O), and thus gcc could not resolve the macros in asm/io.h. Or you did not #include <asm/io.h> at all.

Q3.

out*() doesn't do anything, or does something weird.

A3.

Check the order of the parameters; it should be outb(value, port), not outportb(port, value) as is common in MS-DOS.

Q4.

I want to control a standard RS-232 device/parallel printer/joystick...

A4.

You're probably better off using existing drivers (in the Linux kernel or an X server or somewhere else) to do it. The drivers are usually quite versatile, so even slightly non-standard devices usually work with them. See the information on standard ports above for pointers to documentation for them.


Next Previous Contents


Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру