diff -r 5e441a173c63 -r d9f1e5bfe28c kerneltest/e32test/defrag/d_ramdefrag.cpp --- a/kerneltest/e32test/defrag/d_ramdefrag.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/defrag/d_ramdefrag.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -72,6 +72,7 @@ TInt ZoneAllocToMany2(TInt aZoneIndex, TInt aNumPages); TInt AllocContiguous(TUint aNumBytes); TInt FreeZone(TInt aNumPages); + TInt FreeZoneId(TUint aZoneId); TInt FreeFromAllZones(); TInt FreeFromAddr(TInt aNumPages, TUint32 aAddr); TInt PageCount(TUint aId, STestUserSidePageCount* aPageData); @@ -389,6 +390,10 @@ retVal = DRamDefragFuncTestChannel::FreeZone((TInt)a1); break; + case RRamDefragFuncTestLdd::EFreeZoneId: + retVal = DRamDefragFuncTestChannel::FreeZoneId((TUint)a1); + break; + case RRamDefragFuncTestLdd::EFreeFromAllZones: retVal = DRamDefragFuncTestChannel::FreeFromAllZones(); break; @@ -1512,6 +1517,30 @@ } // +// FreeZoneId +// +// Call Epoc::FreeRamZone() +// +TInt DRamDefragFuncTestChannel::FreeZoneId(TUint aZoneId) + { + NKern::ThreadEnterCS(); + + TInt r = Epoc::FreeRamZone(aZoneId); + if (r == KErrNone) + { + if (iContigAddr == KPhysAddrInvalid) + { + Kern::Printf("Error some how freed a RAM zone that wasn't previously claimed"); + NKern::ThreadLeaveCS(); + return KErrGeneral; + } + iContigAddr = KPhysAddrInvalid; + } + NKern::ThreadLeaveCS(); + return r; + } + +// // FreeFromAllZones // // Call the overloaded Epoc::FreePhysicalRam function