成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

鴻蒙輕內核A核源碼分析系列之虛實映射(4)虛實映射查詢

開發 前端
虛實映射其實就是一個建立頁表的過程。MMU支持多級頁表,LiteOS-A內核采用二級頁表描述進程空間。首先介紹下一級頁表和二級頁表。

[[438478]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

4、虛實映射查詢函數LOS_ArchMmuQuery

給定一個虛擬內存地址,可以查詢其映射到的物理內存地址,還可以查詢映射標簽屬性信息,函數LOS_ArchMmuQuery負責完成這些信息的查詢。

4.1 函數LOS_ArchMmuQuery

函數LOS_ArchMmuQuery用于獲取進程空間虛擬地址對應的物理地址以及映射標簽屬性,其中輸入參數為虛擬內存地址vaddr,輸出參數為物理內存地址*paddr和標簽屬性*flags。⑴處獲取虛擬地址對應的頁表項。⑵處如果虛擬地址對應的頁表項描述符類型無效,返回錯誤碼。⑶處如果頁表項描述符類型為L1頁表Section類型映射,則執行⑷獲取映射的物理地址,其中MMU_DESCRIPTOR_L1_SECTION_ADDR(l1Entry)為L1頁表項的高12位,(vaddr & (MMU_DESCRIPTOR_L1_SMALL_SIZE - 1))為虛擬地址的低20位,即頁內偏移值??梢院蜕衔牧私獾降闹R相對應,物理內存地址的計算方式為頁表項的高12位加上虛擬內存地址的低20位,如下圖所示。⑸處獲取映射的標簽屬性,把MMU標簽轉換為內存區域標簽。

鴻蒙輕內核A核源碼分析系列五 虛實映射(4)虛實映射查詢-鴻蒙HarmonyOS技術社區

如果虛擬地址對應的頁表項描述符類型為頁表Page Table,則執行⑹調用內聯函數OsGetPte2BasePtr()計算L2頁表項基地址,計算方法為:取L1頁表項的高22位,低10位置0,得到L2頁表項物理內存基地址,然后轉化為L2頁表項虛擬內存基地址。⑺處計算虛擬地址對應的L2頁表項數值,從上文可知,L2頁表項的指針地址在頁表項基地址加上虛擬內存地址的高20位,取該地址的數據即為L2頁表項數據。如果L2頁表項描述符類型為小頁,則執行⑻計算物理內存地址,其中MMU_DESCRIPTOR_L2_SMALL_PAGE_ADDR(l2Entry)為L2頁表項的高20位;vaddr & (MMU_DESCRIPTOR_L2_SMALL_SIZE - 1)為虛擬地址的低12位,如下圖所示。然后計算相應的標簽值。⑼處表示當前輕內核還不支持大頁類型。

鴻蒙輕內核A核源碼分析系列五 虛實映射(4)虛實映射查詢-鴻蒙HarmonyOS技術社區
  1. STATUS_T LOS_ArchMmuQuery(const LosArchMmu *archMmu, VADDR_T vaddr, PADDR_T *paddr, UINT32 *flags) 
  2. ⑴  PTE_T l1Entry = OsGetPte1(archMmu->virtTtb, vaddr); 
  3.     PTE_T l2Entry; 
  4.     PTE_T* l2Base = NULL
  5.  
  6. ⑵  if (OsIsPte1Invalid(l1Entry)) { 
  7.         return LOS_ERRNO_VM_NOT_FOUND; 
  8. ⑶  } else if (OsIsPte1Section(l1Entry)) { 
  9.         if (paddr != NULL) { 
  10. ⑷          *paddr = MMU_DESCRIPTOR_L1_SECTION_ADDR(l1Entry) + (vaddr & (MMU_DESCRIPTOR_L1_SMALL_SIZE - 1)); 
  11.         } 
  12.  
  13.         if (flags != NULL) { 
  14. ⑸          OsCvtSecAttsToFlags(l1Entry, flags); 
  15.         } 
  16.     } else if (OsIsPte1PageTable(l1Entry)) { 
  17. ⑹      l2Base = OsGetPte2BasePtr(l1Entry); 
  18.         if (l2Base == NULL) { 
  19.             return LOS_ERRNO_VM_NOT_FOUND; 
  20.         } 
  21. ⑺      l2Entry = OsGetPte2(l2Base, vaddr); 
  22.         if (OsIsPte2SmallPage(l2Entry) || OsIsPte2SmallPageXN(l2Entry)) { 
  23.             if (paddr != NULL) { 
  24. ⑻               *paddr = MMU_DESCRIPTOR_L2_SMALL_PAGE_ADDR(l2Entry) + (vaddr & (MMU_DESCRIPTOR_L2_SMALL_SIZE - 1)); 
  25.             } 
  26.  
  27.             if (flags != NULL) { 
  28.                 OsCvtPte2AttsToFlags(l1Entry, l2Entry, flags); 
  29.             } 
  30. ⑼      } else if (OsIsPte2LargePage(l2Entry)) { 
  31.             LOS_Panic("%s %d, large page unimplemented\n", __FUNCTION__, __LINE__); 
  32.         } else { 
  33.             return LOS_ERRNO_VM_NOT_FOUND; 
  34.         } 
  35.     } 
  36.  
  37.     return LOS_OK; 

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-12-02 15:08:23

鴻蒙HarmonyOS應用

2021-12-03 16:20:26

鴻蒙HarmonyOS應用

2021-12-01 15:59:22

鴻蒙HarmonyOS應用

2022-03-11 20:23:14

鴻蒙源碼分析進程管理

2022-01-12 10:50:23

鴻蒙HarmonyOS應用

2022-01-10 15:31:44

鴻蒙HarmonyOS應用

2022-04-13 11:02:12

鴻蒙事件模塊事件Event

2022-03-03 18:28:28

Harmony進程任務管理模塊

2021-06-04 09:57:49

鴻蒙HarmonyOS應用

2021-05-25 09:28:34

鴻蒙HarmonyOS應用

2022-04-13 11:12:43

鴻蒙輕內核信號量模塊操作系統

2021-10-20 16:08:57

鴻蒙HarmonyOS應用

2021-11-05 15:00:33

鴻蒙HarmonyOS應用

2021-05-08 15:14:50

鴻蒙HarmonyOS應用

2021-11-08 15:06:15

鴻蒙HarmonyOS應用

2021-06-04 14:15:10

鴻蒙HarmonyOS應用

2021-05-17 09:28:59

鴻蒙HarmonyOS應用

2022-01-14 08:39:47

鴻蒙HarmonyOS應用

2021-05-31 20:30:55

鴻蒙HarmonyOS應用

2021-06-17 09:36:07

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品久久久一区二区三区 | 91精品久久久久久久久久入口 | 精品视频一区二区 | 中文字幕国产精品 | 欧美精品第一页 | 91精品国产综合久久婷婷香蕉 | 天天干视频| 亚洲va中文字幕 | 香蕉一区二区 | 亚洲区一区二区 | 国产激情福利 | 国产精品久久久久久亚洲调教 | 九九久久精品视频 | 日韩精品无码一区二区三区 | 一区二区三区欧美在线 | 夜色www国产精品资源站 | 久久综合伊人 | www久久国产| 欧美日韩精品一区 | 中文字幕一区二区三区四区五区 | 久久国产精品99久久久久 | 国产成人精品久久 | 91欧美精品成人综合在线观看 | 日韩高清一区 | 在线免费毛片 | 亚洲欧美日韩国产 | 国产精品成人69xxx免费视频 | 欧美黄色片 | 亚洲午夜精品视频 | 99综合网 | 亚洲精品一区在线 | 亚洲一区二区免费 | 欧美日韩视频在线播放 | 国产精品视频久久 | 欧美日韩亚洲一区 | 中国一级特黄真人毛片免费观看 | 亚洲欧美中文日韩在线v日本 | 国产精品69av | 精品欧美乱码久久久久久 | 亚洲高清在线免费观看 | 日韩免费毛片视频 |