成人免费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位,即頁內偏移值。可以和上文了解到的知識相對應,物理內存地址的計算方式為頁表項的高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-10 15:31:44

鴻蒙HarmonyOS應用

2022-01-12 10:50:23

鴻蒙HarmonyOS應用

2022-04-13 11:02:12

鴻蒙事件模塊事件Event

2022-03-03 18:28:28

Harmony進程任務管理模塊

2021-06-04 09:57:49

鴻蒙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應用

2021-05-25 09:28:34

鴻蒙HarmonyOS應用

2022-04-13 11:12:43

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

2021-10-20 16:08:57

鴻蒙HarmonyOS應用

2022-01-14 08:39:47

鴻蒙HarmonyOS應用

2021-05-31 20:30:55

鴻蒙HarmonyOS應用

2021-06-17 09:36:07

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区在线播放 | 亚洲一级视频在线 | 中日韩毛片 | 国产成人高清在线观看 | 亚洲成人精品在线 | 国产精品久久网 | 91九色porny首页最多播放 | 国产精品一区二区三级 | 国产精品夜间视频香蕉 | 一区二区免费看 | 国产91丝袜在线播放 | 国产乱码精品一区二区三区av | 欧美高清一区 | 激情六月丁香 | 亚洲电影成人 | 色爱综合 | 日韩一区二区免费视频 | 羞羞的视频免费看 | 久久久久国产精品午夜一区 | 日韩在线一区二区 | 精品免费国产一区二区三区 | 精品成人 | 高清欧美性猛交xxxx黑人猛交 | 欧美一级免费 | 成人一区二区三区视频 | 久久99精品久久久久久国产越南 | 婷婷五月色综合香五月 | 美女黄频 | 国产精品久久久久久吹潮 | 国产成人高清视频 | 亚洲成人中文字幕 | 亚洲二区精品 | av网站免费看 | 一级片av| 久久久激情视频 | 久久不卡日韩美女 | 欧美日韩久久精品 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 国产精品一区二区三区四区 | 伊人一区 | 在线观看 亚洲 |