LINUX.ORG.RU

IO port


0

0

#include <stdio.h> #include <errno.h> #include <unistd.h> #include <sys/io.h>

int main() {

unsigned char c; if (ioperm(0x378,1,1) < 0) { perror("ioperm"); return 1; } c = inb_p(0x378); putchar(c); return 0; }

Пускаю от rootа, Segmentation Fault Что делаю не так?


Re: IO port

> c = inb_p(0x378);

это где определено?

если вы тащите это определение из kernel headers,
то там засада: slow_down_io()

idle ★★★★★ ()

Re: IO port

На порт 0x80 тоже ioperm делать надо, эти макросы туда задержку справляют

Chumka ★★★ ()

Re: IO port

Эта ошибка возникает, если порт занят
А он и блокируется програмой после первого выполнения.
К конце кода нужно добавить ioperm(PORT+,1,0); для его закрытия

anonymous ()
Ответ на: Re: IO port от anonymous

Re: IO port

> Эта ошибка возникает, если порт занят
> К конце кода нужно добавить ioperm(PORT+,1,0); для его закрытия

это вы что-то очень неправильное говорите.

ioperm не занимает и не блокирует порт, а только
разрешает/запрещает читать/писать в него.

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