diff -r 947f0dc9f7a8 -r ef2a444a7410 kernel/eka/memmodel/epoc/flexible/mmu/mptalloc.cpp --- a/kernel/eka/memmodel/epoc/flexible/mmu/mptalloc.cpp Fri Apr 16 16:24:37 2010 +0300 +++ b/kernel/eka/memmodel/epoc/flexible/mmu/mptalloc.cpp Mon May 03 13:47:38 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)); }