diff -r a232af6b0b1f -r a5496987b1da kernel/eka/klib/kheap.cpp --- a/kernel/eka/klib/kheap.cpp Wed Jun 23 12:58:21 2010 +0100 +++ b/kernel/eka/klib/kheap.cpp Thu Jul 01 17:57:33 2010 +0100 @@ -20,7 +20,7 @@ _LIT(KLitKernHeap,"KernHeap"); RHeapK::RHeapK(TInt aInitialSize) - : RHeap(aInitialSize, 0, EFalse) + : RHybridHeap(aInitialSize, 0, EFalse) { } @@ -59,8 +59,7 @@ // Create a kernel fixed heap. // { - - __ASSERT_ALWAYS(aInitialSize>KMinHeapSize, K::Fault(K::ETHeapMaxLengthNegative)); + __ASSERT_ALWAYS(aInitialSize>(TInt)sizeof(RHeapK), K::Fault(K::ETHeapMaxLengthNegative)); return new(aBase) RHeapK(aInitialSize); } @@ -76,6 +75,20 @@ __ASSERT_CRITICAL; } +void RHybridHeap::Lock() const + { + DMutex* m = *(DMutex**)&iLock; + if (m) + Kern::MutexWait(*m); + } + +void RHybridHeap::Unlock() const + { + DMutex* m = *(DMutex**)&iLock; + if (m) + Kern::MutexSignal(*m); + } + void RHeapK::Fault(TInt aFault) { Kern::Fault("KERN-HEAP", aFault);