17

ioctlを使用してカーネルモジュールと通信したい。1つはカーネルモジュール用、もう1つはユーザーモード用の2つのcプログラムを作成しました。カーネルモジュールのコンパイル中にこのエラーが発生します:

エラー:初期化子で指定された不明なフィールド'ioctl'

この行で:

struct file_operations Fops = {
 .read = device_read,
 .write = device_write,
 .ioctl = device_ioctl,  ------> at this point error is occuring.
 .open = device_open,
 .release = device_release,
};

なぜこれが起こっているのか考えてみてください。

ありがとう

4

2 に答える 2

23

新しいカーネルでは、.unlocked_ioctlまたは.compat_ioctlフィールドを使用することをお勧めします。プレーン.ioctlはから削除されましたstruct file_operationsこの議論は、何が起こったのか、そしてそれをどのように扱うのかを明らかにするかもしれません。

于 2011-05-04T04:25:27.480 に答える
4

新しいカーネルでは.unlocked_ioctl、の代わりにを使用し .ioctlます。正常に動作します。

于 2012-10-16T19:08:34.780 に答える