1

カーネル モジュールのioctlコードは通常、.cまたは.hファイル内のマクロとして定義されます。

#define DRV_CTL_RESET          _IO(DRV_MAGIC, 0x01)
#define DRV_CTL_DSP_TO         _IO(DRV_MAGIC, 0x02)

Userspace プログラムでの使用法は次のとおりです。

ioctl(drv_fd, DRV_CTL_DSP_TO, (unsigned long)tmo);

すべて順調ですが..

問題は、カーネルとユーザー空間の間でioctlコードを同期するための良い方法は何ですか?

私の現在の解決策は、カーネル モジュールのソースから API ヘッダー ファイルを自動生成し、それをユーザー空間プログラムに含めることです。しかし、もっと便利な方法があるかもしれません。

4

1 に答える 1

2

ioctl コードを .h ファイルに入れて、カーネル空間とユーザー空間から同じ .h を使用するだけです。それよりも便利なことは何ですか?;)

于 2013-01-31T13:53:53.983 に答える