これは、I/O ポートアクセスの単純なコーディング例です:
/* * example.c: とっても簡単なポートI/Oの例 * * なにも役にたつことはしていません。ポートに書き込み、一時停止して、 * ポートから読み出すだけです。「gcc -O2 -o example example.c」で * コンパイルして、ルートユーザになって「./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);} /* ポートのデータ (D0-D7)を全て low (0) にする */ outb(0, BASEPORT); /* しばらくの間 (100 ms) スリープ */ usleep(100000); /* ステータスポート (BASE+1) から読み出して、表示する */ printf("status: %d\n", inb(BASEPORT + 1)); /* もうポートを使わないので後始末 */ if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);} exit(0); } /* example.c おわり */ |