ioctl
Linuxカーネルモジュールから呼び出すことはできますか? 誰かがそれがどのように使用されているかの例を提供できますか?
6479 次
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 に答える