diff -r 5e441a173c63 -r d9f1e5bfe28c kernel/eka/klib/kheap.cpp --- a/kernel/eka/klib/kheap.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/klib/kheap.cpp Thu Jun 10 11:48:01 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);