ユーザー空間プログラムにioctl
カーネルモジュールで使用されるコードを含める一般的な方法はありますか?
mydev.h :
#ifndef MYDEV_H
#define MYDEV_H
#define <linux/ioctl.h>
#define MYDEV_IOC_MAGIC 'C'
#define MYDEV_IOC_FOO _IO(MYDEV_IOC_MAGIC, 0)
#define MYDEV_IOC_BAR _IOW(MYDEV_IOC_MAGIC, 1, int)
#endif
私は通常、ioctl
コードをヘッダーに入れ、それをカーネル モジュール コードに含めます。ユーザー空間アプリケーションにこのヘッダーを含めることだけを検討しましたが、linux/ioctl.hファイル パスがほとんどのシステム (エクスポートされたカーネル ヘッダーのないシステムなど) に存在しない可能性があることに気付きました。
解決策は、インクルード行を次のように変更することです#include <sys/ioctl.h>
。しかし、カーネルモジュールにこのヘッダーを使用できませんでした。
この問題に対するより良い解決策はありますか? それとも、2 つの別個のほぼ同一のヘッダー ファイルを持つのが一般的ですか?