linux數(shù)據(jù)結(jié)構(gòu)map armlinux怎么把內(nèi)核空間的寄存器映射到用戶空間?
armlinux怎么把內(nèi)核空間的寄存器映射到用戶空間?如果是通過allocupage()獲取與高端內(nèi)存相對應(yīng)的頁面。如何為它找到一個線性空間?內(nèi)核為此預(yù)留了一個線性空間,從pkmapubase到fix
armlinux怎么把內(nèi)核空間的寄存器映射到用戶空間?
如果是通過allocupage()獲取與高端內(nèi)存相對應(yīng)的頁面。如何為它找到一個線性空間?內(nèi)核為此預(yù)留了一個線性空間,從pkmapubase到fixaddrustart,用于映射高端內(nèi)存。在2.6內(nèi)核上,地址范圍是4g-8m到4g-4m。這個空間稱為“內(nèi)核永久映射空間”或“永久內(nèi)核映射空間”。這個空間使用與其他空間相同的頁目錄表,對于內(nèi)核,它是一個swappgudir,對于普通進(jìn)程,通過CR3寄存器指向。通常,空間是4m,所以只需要一個頁表,內(nèi)核使用pkmappageutable查找頁表。通過Kmap(),您可以將頁面映射到此空間。因為這個空間的大小是4米,它可以同時映射1024頁。因此,對于應(yīng)該從此空間釋放的未使用頁(即釋放映射關(guān)系),kunmap()可以從此空間釋放與頁對應(yīng)的線性地址。