equal
deleted
inserted
replaced
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; |