piprofiler/plugins/GeneralsPlugin/src/IttSamplerImpl.cpp
changeset 51 98307c651589
parent 42 0ff24a8f6ca2
child 52 c2f44e33b468
--- a/piprofiler/plugins/GeneralsPlugin/src/IttSamplerImpl.cpp	Fri Aug 27 11:37:29 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  
-*
-*/
-
-
-#include <piprofiler/ProfilerVersion.h>
-
-#include <kern_priv.h>
-#include <plat_priv.h>
-
-#include "IttSamplerImpl.h"
-
-#ifdef ITT_EVENT_HANDLER
-_LIT8(KIttVersion, "2.00");
-#else
-_LIT8(KIttVersion, "1.22");
-#endif
-
-/*
- *	ITT sampler definition
- *  	
- */
-IttSamplerImpl::IttSamplerImpl():
-        sampleDescriptor(&(this->sample[1]),0,KITTSampleBufferSize)
-{
-	this->currentLibCount = 0;
-	iTimeToSample = EFalse;
-	this->Reset();
-}
-
-/*
- * destructor
- */
-IttSamplerImpl::~IttSamplerImpl()
-{
-
-}
-
-/*
- * IttSamplerImpl::CreateFirstSample()
- * 
- * Function for creating the first sample to the log file
- */
-TInt IttSamplerImpl::CreateFirstSample() 
-{	
-    Kern::Printf("ittSamplerImpl::createFirstSample\n");
-	this->iVersionData.Zero();
-	this->iVersionData.Append(_L8("Bappea_ITT_V"));
-	this->iVersionData.Append(KIttVersion);
-	this->itt_sample = (TUint8*)iVersionData.Ptr();
-	return iVersionData.Length();
-}
-
-/*
- * IttSamplerImpl::SampleNeeded(TUint32 sampleNum)
- * 
- * @param TUint32 Sample number
- * 
- */
-TBool IttSamplerImpl::SampleNeeded(TUint32 sampleNum)
-{
-#ifdef ITT_EVENT_HANDLER
-    iCount++;
-    if (iCount <= iIttSamplingPeriod && ((iCount % iIttSamplingPeriod) == 0 || (iCount % iIttSamplingPeriodDiv2) == 0))
-    {
-        LOGSTRING2("IttSamplerImpl::SampleNeeded - time: %d", iCount);
-        iTimeToSample = true;
-#else
-    // no need to do anything, always a good time to sample.
-    // Sample time filtering is done in IttSamplerImpl:SampleImpl() function
-#endif
-        return true;
-#ifdef ITT_EVENT_HANDLER    
-    }
-    else 
-    {
-        return false;
-    }
-#endif
-}
-
-/*
- * IttSamplerImpl::SampleImpl(TUint32 pc, TUint32 sampleNum)
- * 
- * @param TUint32 program counter
- * @param TUint32 sample number
- */
-TInt IttSamplerImpl::SampleImpl(TUint32 pc,TUint32 sampleNum)
-{	
-    // in order to avoid overloading the interrupt
-	// only one dynamic file in each 50ms is added to the stream
-	// with the application of the tool in mind, this is
-	// a reasonable measure
-
-    // encode a process binary
-    sampleDescriptor.Zero();
-	// original 
-	if((sampleNum % 20) != 0) return 0;
-	if((sampleNum % 40) == 0)
-	{
-		// encode a library binary
-		sampleDescriptor.Zero();
-		DObjectCon* libs = Kern::Containers()[ELibrary];
-		TInt libCount = libs->Count();
-		
-		// go 20 binaries through at a time
-		for(TInt i=0;i<20;i++)
-		{
-			if(currentLibCount >= libCount)
-			{
-				currentLibCount = 0;
-			}
-			
-			DLibrary* lib = (DLibrary*)(*libs)[currentLibCount];
-			currentLibCount++;
-			
-			DCodeSeg* seg = lib->iCodeSeg;
-			if(seg != 0)
-			{
-				if( (seg->iMark & 0x80) == 0)
-				{
-					this->sample[0] = seg->iFileName->Length();
-					sampleDescriptor.Append(*(seg->iFileName));
-					sampleDescriptor.Append((TUint8*)&(seg->iRunAddress),4);
-					sampleDescriptor.Append((TUint8*)&(seg->iSize),4);
-#ifdef ITT_EVENT_HANDLER
-					sampleDescriptor.Append((TUint8*)&(sampleNum),4);
-					//Kern::Printf("DLL: NM %S : RA:0x%x SZ:0x%x, SN:0x%x",seg->iFileName,seg->iRunAddress,seg->iSize, sampleNum);
-					this->iFirstSampleTaken = ETrue;
-#else
-		            //Kern::Printf("DLL: NM %S : RA:0x%x SZ:0x%x",seg->iFileName,seg->iRunAddress,seg->iSize);
-#endif
-					seg->iMark = (seg->iMark | 0x80);
-					
-					this->sample[0] = sampleDescriptor.Size();
-					return sampleDescriptor.Size()+1;
-				}
-			}
-		}
-	} else
-	{
-		SDblQue* codeSegList = Kern::CodeSegList();
-		//Kern::Printf("PI");
-		//TUint c = 0;
-		// the global list
-		for (SDblQueLink* codeseg= codeSegList->First(); codeseg!=(SDblQueLink*) codeSegList; codeseg=codeseg->iNext)
-		{				
-			DCodeSeg* seg = _LOFF(codeseg, DCodeSeg, iLink);
-			if(seg != 0)
-			{
-				if( (seg->iMark & 0x80) == 0)
-				{
-					this->sample[0] = seg->iFileName->Length();
-					sampleDescriptor.Append(*(seg->iFileName));
-					sampleDescriptor.Append((TUint8*)&(seg->iRunAddress),4);
-					sampleDescriptor.Append((TUint8*)&(seg->iSize),4);
-#ifdef ITT_EVENT_HANDLER
-                    sampleDescriptor.Append((TUint8*)&(sampleNum),4);
-                    //Kern::Printf("EXE2: NM %S : RA:0x%x SZ:0x%x, time: %d",seg->iFileName,seg->iRunAddress,seg->iSize, sampleNum);
-                    this->iFirstSampleTaken = ETrue;                    
-#else
-					//Kern::Printf("EXE2: NM %S : RA:0x%x SZ:0x%x, time: %d",seg->iFileName,seg->iRunAddress,seg->iSize, sampleNum);
-#endif					
-					seg->iMark = (seg->iMark | 0x80);
-					
-					this->sample[0] = sampleDescriptor.Size();
-					return sampleDescriptor.Size()+1;
-				}
-			}
-		}	
-	}
-	return 0;
-}
-
-/*
- * IttSamplerImpl::Reset()
- */
-void IttSamplerImpl::Reset()
-{
-    iTimeToSample = EFalse;
-#ifdef ITT_EVENT_HANDLER
-    iFirstSampleTaken = EFalse;
-#endif
-	this->currentLibCount = 0;
-	this->itt_sample = (TUint8*)&(this->sample[0]);
-	sampleDescriptor.Zero();
-
-//	#ifdef ITT_TEST	
-	SDblQue* codeSegList = Kern::CodeSegList();
-	// the global list
-	for (SDblQueLink* codeseg= codeSegList->First(); codeseg!=(SDblQueLink*) codeSegList; codeseg=codeseg->iNext)
-	{				
-		DCodeSeg* seg = _LOFF(codeseg,DCodeSeg, iLink);
-		//if(seg != 0)
-		{
-			if( (seg->iMark & 0x80) > 0)
-			{
-				seg->iMark = (seg->iMark & ~0x80);
-			}
-		}
-	}	
-	// the garbage list
-	DObjectCon* libs = Kern::Containers()[ELibrary];
-	TInt libCount = libs->Count();
-	for(TInt i=0;i<libCount;i++)
-	{
-		DLibrary* lib = (DLibrary*)(*libs)[i];
-		DCodeSeg* seg = lib->iCodeSeg;
-		if( (seg->iMark & 0x80) > 0)
-		{
-			seg->iMark = (seg->iMark & ~0x80);
-		}
-	}
-	
-	DObjectCon* procs = Kern::Containers()[EProcess];
-	TInt procCount = procs->Count();
-	for(TInt i=0;i<procCount;i++)
-	{
-		DProcess* pro = (DProcess*)(*procs)[i];
-		DCodeSeg* seg = pro->iCodeSeg;
-		if(seg != 0)
-		{
-			if( (seg->iMark & 0x80) > 0)
-			{
-				seg->iMark = (seg->iMark & ~0x80);
-			}
-		}
-	}
-	//#endif   //ITT_TEST
-}
-// end of file