ioctl
をLinuxカーネルモジュールから呼び出すことはできますか? 誰がどのように使用されているかの例を提供できますか?Linuxのカーネル空間からioctl()を使用するには?
答えて
sys_ioctl
に電話することができます。
カーネルをCONFIG_COMPAT
でコンパイルするとエクスポートされます。
また、デバイスドライバのstruct file_operations
がある場合は、ioctl
ハンドラを直接呼び出すことができます。
しかし、ioctlハンドルは、カーネルアドレス空間ではなく、現在実行中のプロセスのアドレス空間にポインタパラメータがあることを期待しています。 copy_from_user
がそれらを読み取るために使用されます。カーネルアドレス空間へのポインタを与えると、copy_from_user
は失敗します。私はあなたがこれを回避する方法を見ていない。
編集:
あなたが失敗することはありませんcopy_from_user
よりも、コードの下の間のioctlハンドラが呼び出されます場合。
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 */
file_operationsのioctlハンドラは推奨されていません。あなたはioctlを使う新しい方法を理解できますか? – iammurtaza
get_fs()とset_fs()がカーネルスペースがシステムコールを実行することを魔法のように許可する方法と、この "copy_from_user()"がもはや問題を生成しなくなった後の仕方を詳しく説明できますか? –
'set_fs'は、' copy_to_user'に渡されたアドレスが実際に現在のユーザのアドレス空間にあることを検証するメカニズムに影響します。カーネルは、現在のアドレス空間がカーネルアドレス空間であると考えさせます。 – ugoren
- 1. Linuxカーネルからユーザー空間のメモリにアクセスするには?
- 2. linuxカーネル空間のユーザー空間スタックトレースを表示するには
- 3. 、Linuxではカーネル空間
- 4. Linuxカーネルのユーザー空間ライブラリmodal - テスト用
- 5. Linuxユーザー空間とカーネル空間スケジューリング
- 6. i386 linuxカーネルにqemuを使用したアドレス空間識別子
- 7. カーネル空間からlinux/procファイルを読み書きするには?
- 8. ポインタを使用してLinuxカーネル空間のメモリページにアクセスする方法
- 9. MonoでLinux ioctlを使用する
- 10. カーネル空間からユーザ空間にパケットをバイパスする
- 11. 構造体配列をカーネル空間に格納する、Linux
- 12. カーネル空間からパケットにデータを追加するには?
- 13. Linuxカーネル空間内でリングバッファを読み取る方法は?
- 14. カーネル空間からユーザ空間関数を実行
- 15. ユーザ空間からカーネル空間へのmemcpy
- 16. Linuxカーネル空間からUEFI SMBIOSテーブルにアクセスするにはどうすればよいですか?
- 17. netlinkソケットを使用してLinuxカーネルのユーザー空間アプリケーションと文字デバイス間で通信するときのエラー
- 18. SKBをカーネル空間から送信するために
- 19. Linuxカーネルがユーザー空間と通信できる方法は何ですか?
- 20. ユーザ空間とカーネル空間の間でメモリを共有する
- 21. Linuxカーネル空間での "Magic ring buffer"の実装?
- 22. Linuxドライバ:ioctlまたはsysfs?
- 23. LinuxからWindowsカーネルをデバッグする
- 24. x86_64 Linuxで定義されているioctlシステムコールのユーザー空間ラッパーはどこですか?
- 25. Linuxカーネルでvfs_readdirはどのように使用しますか?
- 26. キャッシュのためにLinuxユーザ空間メモリを使用する
- 27. Linuxカーネルモジュールのioctlの上ENOTTY
- 28. Linuxのrawソケットのioctl FIOREAD
- 29. メモリマップの構造カーネル空間
- 30. ユーザ空間バスエラーからのLinux DMA
あなたは本当にそのようなことをするつもりはありません。検索を行うと、カーネル空間内から任意のシステムコールを行う方法の実装依存のコードがいくらか見つかりますが、実際の目的を達成する方法があるかどうかを考えてください。 –