|
3#
樓主 |
發表於 2009-5-8 18:09:19
|
只看該作者
剛剛似乎試出來一些成果
* M9 s J! W. Z) b; i! i+ t方法就是在上一篇的基礎上- S, N5 ^9 E% q8 A, |3 m
+ A2 Q& d8 e3 a3 G1) 找到task_struct
7 V" J" C6 e0 \* \" J% K2) 找到所屬的 mm
( [4 n! |. j" I6 [2) 找到 mm 中的 pgd (page descriptor)4 q6 g, r6 a% n
3) 有了pgd就可以用系統的函式,找到對應的 page table entry(pte), r& P- }+ g& X1 Y0 X
例如: pgd_offset(), pmd_offset(), pte_offset()等等( Y8 o8 z& d: s$ L
4) pa = (virtual address & 0xfffff000) | (pte & 0xfff)7 ]$ ~- G7 `3 Z# {+ Z
, ~7 x3 T- s) l7 ?
應該就可以得到physical address。以上不知道有沒有錯誤或例外狀況。5 c- y1 J. {) u( f
目前猜想trust zone可能會造成加在 driver的這段code沒有access某些
! X; k7 a3 E) @, ]& P1 l, _資料的權利。但是對trush zone不是相當了解,不知道page table是不是8 U$ K' T U* c
會被保護到。 |
|