diff -r e7d2d738d3c2 -r 2f92ad2dc5db kernel/eka/memmodel/epoc/flexible/mmu/mptalloc.cpp --- a/kernel/eka/memmodel/epoc/flexible/mmu/mptalloc.cpp Mon Mar 15 12:45:50 2010 +0200 +++ b/kernel/eka/memmodel/epoc/flexible/mmu/mptalloc.cpp Wed Mar 31 23:38:45 2010 +0300 @@ -177,6 +177,14 @@ else {// Allocate fixed paged as page tables aren't movable. r = TheMmu.AllocRam(&pagePhys, 1, aMemory->RamAllocFlags(), EPageFixed); + +#ifdef BTRACE_KERNEL_MEMORY + if (r == KErrNone) + { + BTrace4(BTrace::EKernelMemory, BTrace::EKernelMemoryMiscAlloc, KPageSize); + ++Epoc::KernelMiscPages; + } +#endif } RamAllocLock::Unlock(); @@ -241,7 +249,14 @@ if(aDemandPaged) ThePager.PageInFreePages(&pagePhys,1); else + { TheMmu.FreeRam(&pagePhys, 1, EPageFixed); + +#ifdef BTRACE_KERNEL_MEMORY + BTrace4(BTrace::EKernelMemory, BTrace::EKernelMemoryMiscFree, KPageSize); + --Epoc::KernelMiscPages; +#endif + } r = 1; } @@ -362,11 +377,8 @@ { iReserveCount = aReserveCount; iDemandPaged = aDemandPaged; - while(iFreeCountAllocReserve(*this)) - { - __NK_ASSERT_ALWAYS(0); - } + while(iFreeCount < aReserveCount) + __NK_ASSERT_ALWAYS(aAllocator->AllocReserve(*this)); }