Dostaje błąd segmentacji pamięci kiedy dobieram się do portów
Albo twój program nie ma uprawnień root'a bądź wywołanie
ioperm() nie powiodło się z jakiegoś innego powodu.
Sprawdź wartość powrotną funkcji ioperm(). Sprawdź również czy rzeczywiśćie
operujesz na portach do których uzyskałeś dostęp za pomocą ioperm() (zobacz P3).
Jeśli używasz makr opóźniających (inb_p(), outb_p(), itd), pamiętaj aby
wywołać ioperm() również wtedy jeśli chcesz uzyskać dostęp do portu 0x80
Nie mogę nigdzie znaleść deklaracji funkcji in*(), out*()
i gcc narzeka na niezdefiniowane referencje.
Nie kompilowałeś z włączoną optymalizacją (-O),
i w ten sposób gcc nie mógł odnaleźć makr w katalogu asm/io.h. Albo
nie włączyłeś w ogóle <asm/io.h> do swojego programu.
Wywołąnie out*() nie robi nic bądź robi coś dziwnego.
Sprawdź kolejność parametrów; powinno być
outb(wartość, port), a nie outportb(port, wartość) co jest popularne w MS-DOS.
Chcę sterować standardowym urządzeniem RS-232/portem równoległym/drukarką/joystickiem
Lepiej będzie jak użyjesz istniejących sterowników z jądra, X serwera lub czegoś innego. Sterowniki te są zazwyczaj dosyć wszechstronne więc nawet lekko niestandardowe urządzenia z nimi współpracują. Zobacz wyżej informacje o zwykłych portach, są tam odnośniki do stosownej dokumentacji.