outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, outb_p,
outw_p, outl_p, inb_p, inw_p, inl_p -
ポート入出力
この一連の関数はポートに対する低レベルの入出力に使用する。
out*
関数はポート出力、in*
関数はポート入力を行う。
語尾に b
がついている関数はバイト単位、w
がついている関数はワード単位である。
_p がついている関数は
I/O
が終了するまで待つ。
これらの関数はもともとカーネル内部での使用を想定して設計されているが、
ユーザー空間からでも使用できる。
-O や
-O2
などを指定してコンパイルすること。
これらの関数はインライン・マクロとして定義されており、
最適化を行わないと関数の展開が行われず、
リンクの時に「解決できない参照(unresolved
reference)」が発生する。
ユーザー空間のアプリケーションが
I/O
ポートにアクセスすることを
カーネルに教えるために
ioperm(2) もしくは
iopl(2)
を使用すること。これを忘れるとアプリケーションはセグメンテーション違反
(segmentation fault)
を受けとることになる。
outb()
とその仲間はハードウェア特有である。
value
引数が最初に渡され、
port
引数が二番目に渡される。
この順序はほとんどの
DOS
での実装とは逆である。
関連項目¶
ioperm(2),
iopl(2)
この文書について¶
この man ページは Linux
man-pages
プロジェクトのリリース
3.41 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man-pages/
に書かれている。