カーネル モジュールの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 ヘッダー ファイルを自動生成し、それをユーザー空間プログラムに含めることです。しかし、もっと便利な方法があるかもしれません。