私はdrv1というキャラクタードライバーを持っており、ユーザーアプリケーションはioctlそれと通信するために使用し、パラメーターを送信しますstruct file *filp。drv1のコード セグメントのアドレスを知りたいのですが、いくつかの問題に遭遇しました。
最初はstruct file *filp便利かもしれないと思ってソースコードの定義を見て、ポインタを見つけましたstruct inode *f_inode; /* cached value */。そこでざっくりと定義を調べてみましたstruct inode(tmpfsのときは詳しくないので正しいかどうかわかりませんが); struct address_space *i_mappingという名前のポインターが必要なようです。しかし、深く掘り下げて行き詰まる方法がわかりません。には、次のような複雑なデータ構造がいくつかありますstruct address_space。
struct radix_tree_root page_tree; /* radix tree of all pages */
と
struct rb_root i_mmap; /* tree of private and shared mappings */
ドライバdrv1のデータは、という形で整理されているということradix_tree_rootでしょうか。それとも、何か他のものを見逃したということですか?