MCPcopy Create free account
hub / github.com/YatSenOS/YatSenOS-Tutorial-Volume-1 / releasePages

Method releasePages

lab8/src/5/src/kernel/memory.cpp:228–244  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

226}
227
228void MemoryManager::releasePages(enum AddressPoolType type, const int virtualAddress, const int count)
229{
230 int vaddr = virtualAddress;
231 int *pte;
232 for (int i = 0; i < count; ++i, vaddr += PAGE_SIZE)
233 {
234 // 第一步,对每一个虚拟页,释放为其分配的物理页
235 releasePhysicalPages(type, vaddr2paddr(vaddr), 1);
236
237 // 设置页表项为不存在,防止释放后被再次使用
238 pte = (int *)toPTE(vaddr);
239 *pte = 0;
240 }
241
242 // 第二步,释放虚拟页
243 releaseVirtualPages(type, virtualAddress, count);
244}
245
246int MemoryManager::vaddr2paddr(int vaddr)
247{

Callers 2

copyProcessMethod · 0.45
exitMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected