Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all bug

名前

       outb,  outw,  outl,  outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, outb_p, outw_p,
       outl_p, inb_p, inw_p, inl_p - ポート入出力

書式

       #include <sys/io.h>

       unsigned char inb(unsigned short int port);
       unsigned char inb_p(unsigned short int port);
       unsigned short int inw(unsigned short int port);
       unsigned short int inw_p(unsigned short int port);
       unsigned int inl(unsigned short int port);
       unsigned int inl_p(unsigned short int port);

       void outb(unsigned char value, unsigned short int port);
       void outb_p(unsigned char value, unsigned short int port);
       void outw(unsigned short int value, unsigned short int port);
       void outw_p(unsigned short int value, unsigned short int port);
       void outl(unsigned int value, unsigned short int port);
       void outl_p(unsigned int value, unsigned short int port);

       void insb(unsigned short int port, void *addr,
                  unsigned long int count);
       void insw(unsigned short int port, void *addr,
                  unsigned long int count);
       void insl(unsigned short int port, void *addr,
                  unsigned long int count);
       void outsb(unsigned short int port, const void *addr,
                  unsigned long int count);
       void outsw(unsigned short int port, const void *addr,
                  unsigned long int count);
       void outsl(unsigned short int port, const void *addr,
                  unsigned long int count);

説明

       この一連の関数はポートに対する低レベルの入出力に使用する。 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.65 の一部  である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。