diff -r ef2a444a7410 -r b3a1d9898418 kernel/eka/klib/kheap.cpp --- a/kernel/eka/klib/kheap.cpp Mon May 03 13:47:38 2010 +0300 +++ b/kernel/eka/klib/kheap.cpp Fri May 14 17:13:29 2010 +0300 @@ -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);