kerneltest/e32test/defrag/d_pagemove.cpp
changeset 36 538db54a451d
parent 0 a41df078684a
equal deleted inserted replaced
34:f497542af8e4 36:538db54a451d
    39 	}
    39 	}
    40 
    40 
    41 const TInt KMajorVersionNumber=0;
    41 const TInt KMajorVersionNumber=0;
    42 const TInt KMinorVersionNumber=1;
    42 const TInt KMinorVersionNumber=1;
    43 const TInt KBuildVersionNumber=1;
    43 const TInt KBuildVersionNumber=1;
    44 
       
    45 
       
    46 _LIT(KLddName,"PageMove");
       
    47 
    44 
    48 class DPageMove;
    45 class DPageMove;
    49 
    46 
    50 class DPageMoveFactory : public DLogicalDevice
    47 class DPageMoveFactory : public DLogicalDevice
    51 //
    48 //
   102 TInt DPageMoveFactory::Install()
    99 TInt DPageMoveFactory::Install()
   103 //
   100 //
   104 // Install the LDD - overriding pure virtual
   101 // Install the LDD - overriding pure virtual
   105 //
   102 //
   106     {
   103     {
   107     return SetName(&KLddName);
   104     return SetName(&KPageMoveLddName);
   108     }
   105     }
   109 
   106 
   110 void DPageMoveFactory::GetCaps(TDes8& aDes) const
   107 void DPageMoveFactory::GetCaps(TDes8& aDes) const
   111 //
   108 //
   112 // Get capabilities - overriding pure virtual
   109 // Get capabilities - overriding pure virtual
   325 		DBG(Kern::Printf("DPageMove::DoPageMove() returns %d", r));
   322 		DBG(Kern::Printf("DPageMove::DoPageMove() returns %d", r));
   326 	return r;
   323 	return r;
   327 	}
   324 	}
   328 
   325 
   329 
   326 
       
   327 #ifndef __MSVC6__ 	// VC6 can't cope with variable arguments in macros.
       
   328 #define KERN_PRINTF(x...) Kern::Printf(x)
       
   329 #endif
       
   330 
   330 //#define EXTRA_TRACE
   331 //#define EXTRA_TRACE
   331 #ifdef EXTRA_TRACE
   332 #ifdef EXTRA_TRACE
   332 #define KERN_PRINTF(x...) Kern::Printf(x)
   333 #define PRINTF(x)	x
   333 #else
   334 #else
   334 #define KERN_PRINTF(x...)
   335 #define PRINTF(x)
   335 #endif
   336 #endif
       
   337 
   336 
   338 
   337 TInt DPageMove::KernelDataMovePerformance(void)
   339 TInt DPageMove::KernelDataMovePerformance(void)
   338 {
   340 {
   339 	const TInt KHeapPagesToMove = 2000;
   341 	const TInt KHeapPagesToMove = 2000;
   340 	const TInt KMoveAttempts = 50;
   342 	const TInt KMoveAttempts = 50;
   362 	for (; i < heapArraySize; i++)
   364 	for (; i < heapArraySize; i++)
   363 		{
   365 		{
   364 		heapArray[i] = i;
   366 		heapArray[i] = i;
   365 		}
   367 		}
   366 
   368 
   367 	KERN_PRINTF("Testing Performance of Moving Kernel Data Pages");
   369 	PRINTF(KERN_PRINTF("Testing Performance of Moving Kernel Data Pages"));
   368 
   370 
   369 	TInt moveMode = EKMoveStack;
   371 	TInt moveMode = EKMoveStack;
   370 	for (; moveMode < EKMoveModes; moveMode++)
   372 	for (; moveMode < EKMoveModes; moveMode++)
   371 		{
   373 		{
   372 		TLinAddr pageAddr = NULL;
   374 		TLinAddr pageAddr = NULL;
   377 			case EKMoveHeap:
   379 			case EKMoveHeap:
   378 				pageAddr = _ALIGN_DOWN((TLinAddr)heapArray, iPageSize);
   380 				pageAddr = _ALIGN_DOWN((TLinAddr)heapArray, iPageSize);
   379 				baseAddr = pageAddr;
   381 				baseAddr = pageAddr;
   380 				endAddr = _ALIGN_UP((TLinAddr)heapArray + heapArraySize, iPageSize);
   382 				endAddr = _ALIGN_UP((TLinAddr)heapArray + heapArraySize, iPageSize);
   381 				actualHeapPages = (endAddr - baseAddr) / iPageSize;
   383 				actualHeapPages = (endAddr - baseAddr) / iPageSize;
   382 				KERN_PRINTF("heap baseAddr %x endAddr %x", baseAddr, endAddr);
   384 				PRINTF(KERN_PRINTF("heap baseAddr %x endAddr %x", baseAddr, endAddr));
   383 				break;
   385 				break;
   384 
   386 
   385 			case EKMoveStack:
   387 			case EKMoveStack:
   386 				pageAddr = _ALIGN_DOWN((TLinAddr)stackArray, iPageSize);
   388 				pageAddr = _ALIGN_DOWN((TLinAddr)stackArray, iPageSize);
   387 				baseAddr = pageAddr;
   389 				baseAddr = pageAddr;
   388 				endAddr = _ALIGN_UP((TLinAddr)stackArray + KStackSize, iPageSize);
   390 				endAddr = _ALIGN_UP((TLinAddr)stackArray + KStackSize, iPageSize);
   389 				KERN_PRINTF("stack baseAddr %x endAddr %x", baseAddr, endAddr);
   391 				PRINTF(KERN_PRINTF("stack baseAddr %x endAddr %x", baseAddr, endAddr));
   390 				break;
   392 				break;
   391 			}
   393 			}
   392 
   394 
   393 		TUint32 minTime = KMaxTUint32;
   395 		TUint32 minTime = KMaxTUint32;
   394 		TUint32 maxTime = 0; 
   396 		TUint32 maxTime = 0;