--- a/kerneltest/e32test/defrag/d_ramdefrag.cpp Fri Apr 16 16:24:37 2010 +0300
+++ b/kerneltest/e32test/defrag/d_ramdefrag.cpp Mon May 03 13:47:38 2010 +0300
@@ -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