diff -r a232af6b0b1f -r a5496987b1da kerneltest/e32test/defrag/d_ramdefrag.cpp --- a/kerneltest/e32test/defrag/d_ramdefrag.cpp Wed Jun 23 12:58:21 2010 +0100 +++ b/kerneltest/e32test/defrag/d_ramdefrag.cpp Thu Jul 01 17:57:33 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