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

Method releasePages

lab8/src/2/src/kernel/memory.cpp:224–240  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected