Здесь приведен кусок простого примера для доступа к портам ввода/вывода:
/* * example.c: очень простой пример для порта ввода/вывода * * Этот код не делает ничего полезного, только запись в порт, пауза, * и чтение из порта. Откомпилируйте `gcc -O2 -o example example.c', * и запустите под root `./example'. */ #include <stdio.h> #include <unistd.h> #include <asm/io.h> #define BASEPORT 0x378 /* lp1 */ int main() { /* Получить доступ к порту */ if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);} /* Вывод в порт (0) */ outb(0, BASEPORT); /* Задержка (100 мс) */ usleep(100000); /* Чтение из порта (BASEPORT+1) и вывод результатов на экран */ printf("статус: %d\n", inb(BASEPORT + 1)); /* Мы больше не нуждаемся больше в порту */ if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);} exit(0); } /* конец example.c */ |