|
3#
樓主 |
發表於 2009-5-8 18:09:19
|
只看該作者
剛剛似乎試出來一些成果1 s v f/ h, o, M9 d3 g D
方法就是在上一篇的基礎上! |- i9 E, u' L; ?# S1 ]3 }
; `! @( x4 h5 c- Z
1) 找到task_struct
2 V, y9 y2 o/ y/ C& b5 f" T5 y6 ?* U2) 找到所屬的 mm
$ w; n" I9 K& i' E, f( o2) 找到 mm 中的 pgd (page descriptor)
& t( V% R# A' ~4 k8 [3) 有了pgd就可以用系統的函式,找到對應的 page table entry(pte)
; K4 I# f* h$ R8 G1 Q4 _ 例如: pgd_offset(), pmd_offset(), pte_offset()等等' \/ I) o$ |# f
4) pa = (virtual address & 0xfffff000) | (pte & 0xfff)
# }; i: a0 R* @- x
& b. j3 x' }: p8 \7 `' h0 E應該就可以得到physical address。以上不知道有沒有錯誤或例外狀況。5 r# O. Z: X5 W8 E- h
目前猜想trust zone可能會造成加在 driver的這段code沒有access某些
, r! {- k0 ^& t資料的權利。但是對trush zone不是相當了解,不知道page table是不是
7 U. u- E3 {: ^7 O& b會被保護到。 |
|