2

ユーザー空間プログラムに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 つの別個のほぼ同一のヘッダー ファイルを持つのが一般的ですか?

4

1 に答える 1