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. i386 linuxカーネルにqemuを使用したアドレス空間識別子
- 4. カーネル空間からlinux/procファイルを読み書きするには?
- 5. MonoでLinux ioctlを使用する
- 6. 構造体配列をカーネル空間に格納する、Linux
- 7. カーネル空間からパケットにデータを追加するには?
- 8. Linuxカーネル空間内でリングバッファを読み取る方法は?
- 9. カーネル空間からユーザ空間関数を実行
- 10. ユーザ空間からカーネル空間へのmemcpy
- 11. netlinkソケットを使用してLinuxカーネルのユーザー空間アプリケーションと文字デバイス間で通信するときのエラー
- 12. ユーザ空間とカーネル空間の間でメモリを共有する
- 13. Linuxカーネルがユーザー空間と通信できる方法は何ですか?
- 14. キャッシュのためにLinuxユーザ空間メモリを使用する
- 15. LinuxからWindowsカーネルをデバッグする
- 16. メモリマップの構造カーネル空間
- 17. Linuxカーネルでvfs_readdirはどのように使用しますか?
- 18. Linuxのrawソケットのioctl FIOREAD
- 19. Linuxカーネルの人間が読めるタイムスタンプ
- 20. カーネル空間とユーザ空間の時間の差異
- 21. Linux Charドライバ:ioctlコールをブロックする
- 22. 新しいIOCTLをカーネルに追加する(番号範囲)
- 23. Linuxカーネルでのfor_each_processマクロの使用
- 24. カーネルからユーザー空間で作成されたノードにアクセスする方法は?
- 25. std :: threadsはユーザ空間またはカーネル空間で管理されますか?
- 26. Linuxカーネルでは
- 27. ioctlコマンドでユーザー空間から構造体をコピーできないのはなぜですか?
- 28. 64ビットLinuxでは、どのアドレス空間がカーネルによって占有されていますか?
- 29. linuxでは、ユーザー空間プログラムがどのようにカーネル関数を使用できますか?私は本当にインスピレーションが必要です
- 30. Linuxカーネルのadd_keyとkeyctl syscallsをグループキーリングで使用する
あなたは本当にそのようなことをするつもりはありません。検索を行うと、カーネル空間内から任意のシステムコールを行う方法の実装依存のコードがいくらか見つかりますが、実際の目的を達成する方法があるかどうかを考えてください。 –