6

ioctlLinuxカーネルモジュールから呼び出すことはできますか? 誰かがそれがどのように使用されているかの例を提供できますか?

4

1 に答える 1

6

に電話してみることができますsys_ioctl
カーネルが でコンパイルされている場合、エクスポートされCONFIG_COMPATます。

または、デバイス ドライバーの がある場合は、そのハンドラーを直接struct file_operations呼び出すことができます。ioctl

ただし、ioctl ハンドルは、ポインタ パラメータがカーネル アドレス空間ではなく、現在実行中のプロセスのアドレス空間にあることを期待します。copy_from_userそれらを読み取るために使用されます。カーネル アドレス空間へのポインタを指定すると、copy_from_user失敗します。どうやってこれを回避するのかわかりません。

編集:

以下のコード間で ioctl ハンドラを呼び出すと、copy_from_user失敗することはありません。

 mm_segment_t fs;

  fs = get_fs();     /* save previous value */
  set_fs (get_ds()); /* use kernel limit */

  /* system calls can be invoked */

  set_fs(fs); /* restore before returning to user space */
于 2012-06-21T06:46:43.303 に答える