Linux でハードなポートを触る方法
お約束
ハード直接は危険なので、root 権限でないと実行できません。
コンパイラーに最適化しないようにオプション指定します。 gcc -o
インクルードするファイルは asm/io.h です。

手順その1
ioperm( from, num, turn_on ) で許可してもらう。
コード例
ioperm( 0x300,8, 1 );
0x300 から 8byte (0x300-0x307) 使用する
正常にアクセスする許可が得られれば 0 が返ってきます。
エラーがある場合は -1 が返ってきます。

手順その2
ポートからの入力
バイト単位で入力する場合は inb( port )
ワード単位で入力する場合は inw( port )

少しだけウエイトする時は
inb_p, inw_p で約1マイクロ秒待ちます
ウエイト時間をもう少しのばしたい時は
asm/io.h をインクルードする前に REALLY_SLOW_IO を #define で定義すると
約4マイクロ秒にできます。

手順その3
ポートへ出力する場合
バイト単位で出力する場合は outb( value, port )
ワード単位で出力する場合は outw( value, port )

少しだけウエイトを入れる場合は入力と同じように
outb_p, outw_p を使います。