私は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
でしょうか。それとも、何か他のものを見逃したということですか?