inb、inl、inwを使用してユーザー空間からカーネル空間にアクセスする

inb、inl、inwを使用してユーザー空間からカーネル空間にアクセスする

inbLinuxでカーネルスペースにアクセスするために、およびinlを使用inwするユーザースペースの例は何ですか?

答え1

inboutb友達はカーネル←ユーザー空間通信には使用されず、プラットフォーム固有のIOポートを読み書きするために使用されます。

これらの機能の一般的な用途は、途中で特定のカーネルデバイスドライバを作成するのではなく、シリアルポートまたはパラレルポート(および接続されたデバイス)と直接対話することです。
Xサーバーは、ビデオ(または入力デバイス)ハードウェアとの低レベル通信にも使用できます。

ユーザー空間でこれらの呼び出しを使用するには、次の2つのことを行う必要があります。

  • 呼び出しプロセスにはCAP_SYS_RAWIOが必要です。能力(これは通常、rootとして実行する必要があることを意味します。)
  • 呼び出しプロセスは、目的のポートを使用するための権限を要求する必要があります。iopermまたはioplシステムコール。

Linux I/OポートプログラミングミニHOWTO*最後に簡単なサンプルプログラムを含む基本を案内します。
このポートを使用するプログラムは、このポートの背後にあるハードウェア(またはファームウェア)と直接通信します。カーネルはこれらの呼び出しを確認したり妨げたりしません。したがって、誤用すると重大な問題が発生する可能性があります。慎重に取り扱ってください。

*コンパイルするにはに#include <stdlib.h>置き換える必要があります。<asm/io.h><sys/io.h>

関連情報