Linuxでカーネルスペースにアクセスするためにinb
、inl
、およびinw
を使用するユーザースペースの例は何ですか?
inb
、outb
およびその仲間は、カーネル↔ユーザースペース通信用ではなく、プラットフォーム固有のIOポートからの読み取りおよび書き込みに使用されます。
これらの機能の一般的な使用法は、シリアルポートまたはパラレルポート(したがって接続されているデバイス)との直接の相互作用であり、特定のカーネルデバイスドライバーを作成する必要はありません。
Xサーバーは、ビデオ(または場合によっては入力デバイス)ハードウェアとの低レベル通信にもこれらを使用できます。
ユーザースペースからこれらの呼び出しを使用するには、次の2つのことが必要です。
ioperm
または iopl
システムコールを使用して、必要なポートを使用するためのアクセス許可を要求する必要があります。Linux I/Oポートプログラミングミニ-HOWTO 基本事項を説明し、最後に簡単なサンプルプログラムがあります。*。
これを使用するプログラムは、これらのポートの背後にあるハードウェア(またはファームウェア)と直接通信することに注意してください。カーネルは、これらの呼び出しを検証したり、干渉したりしません。したがって、それらを誤用すると、深刻な問題が発生する可能性があります。取り扱い注意。
*コンパイルするには、#include <stdlib.h>
を実行し、<asm/io.h>
を<sys/io.h>
に置き換える必要があります。