piprofiler/plugins/GeneralsPlugin/inc/PriSamplerImpl.h
changeset 51 98307c651589
parent 42 0ff24a8f6ca2
child 52 c2f44e33b468
--- a/piprofiler/plugins/GeneralsPlugin/inc/PriSamplerImpl.h	Fri Aug 27 11:37:29 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +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:  
-*
-*/
-
-
-#ifndef PROFILER_PRI_SAMPLER_H
-#define PROFILER_PRI_SAMPLER_H
-
-#include "GeneralsConfig.h"
-
-#include <kern_priv.h>
-
-#include <piprofiler/ProfilerGenericClassesKrn.h>
-#include <piprofiler/ProfilerTraces.h>
-#include "GppSamplerImpl.h"
-
-// defines the maximum thread amount that is assumed to
-// be possible with PRI trace
-const TInt KProfilerMaxThreadAmount = 512;
-
-/*
- *	
- *	PRI sampler definition
- *	
- */
-
-class DPriSamplerImpl //: public DBase
-{
-public:
-	enum EProcessingState
-	{
-		EStartingToProcess,
-		EProcessingNames,
-		EProcessingData,
-		ENothingToProcess
-	};
-
-	DPriSamplerImpl();
-	~DPriSamplerImpl();
-
-	TInt	CreateFirstSample();
-	TInt	SampleImpl();
-	TBool	SampleNeeded();
-	void	Reset();
-	TInt	ProcessChunks();
-
-	TInt	EncodeChunkData(DThread& thread);
-	TInt	EncodeChunkName(DThread& thread);
-	
-	TInt	EncodeNameCode();
-	TInt	EncodeDataCode();
-
-	TInt		iCountti;
-	DThread*	threadsToSample[KProfilerMaxThreadAmount];
-	DThread*	threadNamesToReport[KProfilerMaxThreadAmount];
-
-	TInt		iThreadCount;
-	TInt		iNewThreadCount;
-
-	TInt		iProcessing;
-	TInt		iPriSamplingPeriod;
-
-	TUint8		sample[257];
-	TPtr8		sampleDescriptor;
-#ifdef __SMP__
-    TInt        iCpuNumber;
-    TUint32     iStartTime;
-#endif   
-
-};
-
-template <int BufferSize>
-class DProfilerPriSampler : public DProfilerGenericSampler<BufferSize>
-{
-public:
-	DProfilerPriSampler(struct TProfilerGppSamplerData*, TInt id);
-	~DProfilerPriSampler();
-
-	void	Sample();
-	TInt	Reset(DProfilerSampleStream* aStream, TUint32 aSyncOffset);
-	TInt	PostSample();
-	TBool	PostSampleNeeded();
-
-private:
-	DPriSamplerImpl				 	priSamplerImpl;
-	struct TProfilerGppSamplerData* 	    gppSamplerData;
-	TBool						 	sampleNeeded;
-	TBool							sampleInProgress;
-#ifdef __SMP__
-    TInt   iCpuNumber;
-#endif
-};
-
-/*
- *	
- *	PRI sampler implementation
- *	
- */
-//#ifndef __SMP__
-template <int BufferSize>
-DProfilerPriSampler<BufferSize>::DProfilerPriSampler(struct TProfilerGppSamplerData* gppSamplerDataIn, TInt id) :
-	DProfilerGenericSampler<BufferSize>(PROFILER_PRI_SAMPLER_ID)
-    {
-	LOGSTRING2("CProfilerPriSampler<%d>::CProfilerPriSampler",BufferSize);
-	this->gppSamplerData = gppSamplerDataIn;
-	this->sampleInProgress = false;
-	this->iSamplingPeriod = 3000;	// set default setting
-    }
-//#else
-//template <int BufferSize>
-//DProfilerPriSampler<BufferSize>::DProfilerPriSampler(struct TProfilerGppSamplerData* gppSamplerDataIn, TInt id, TInt aCpuNumber) :
-//    DProfilerGenericSampler<BufferSize>(PROFILER_PRI_SAMPLER_ID+(aCpuNumber*20)), iCpuNumber(aCpuNumber) 
-//    {
-//    LOGSTRING2("CProfilerGppSampler<%d>::CProfilerGppSampler",BufferSize);
-//    }
-//#endif
-
-template <int BufferSize>
-TInt DProfilerPriSampler<BufferSize>::Reset(DProfilerSampleStream* aStream, TUint32 aSyncOffset)
-    {
-	LOGSTRING2("CProfilerPriSampler<%d>::Reset - calling superclass reset",BufferSize);
-	DProfilerGenericSampler<BufferSize>::Reset(aStream);
-	LOGSTRING2("CProfilerPriSampler<%d>::Reset - called superclass reset",BufferSize);
-	priSamplerImpl.Reset();
-
-#ifdef __SMP__
-//    this->priSamplerImpl.iCpuNumber = this->iCpuNumber;
-//    
-//    // set common start time for all CPU samplers
-//    this->priSamplerImpl.iStartTime = aSyncOffset;
-#endif
-	this->priSamplerImpl.iPriSamplingPeriod = this->iSamplingPeriod;
-
-
-	LOGSTRING3("CProfilerPriSampler<%d>::Reset - set pri sampling period to", 
-							BufferSize,this->priSamplerImpl.iPriSamplingPeriod);
-
-	TInt length(priSamplerImpl.CreateFirstSample());
-	this->iSampleBuffer->AddSample(priSamplerImpl.sample,length);
-
-	this->sampleInProgress = false;	
-	this->sampleNeeded = false;
-
-	return KErrNone;
-    }
-
-template <int BufferSize> 
-TInt DProfilerPriSampler<BufferSize>::PostSample()
-    {
-	if(sampleNeeded)
-	    {
-		this->sampleNeeded = false;
-
-		LOGSTRING3("CProfilerPriSampler<%d>::PostSample - state %d",BufferSize,this->sampleBuffer->GetBufferStatus());
-		
-		//TInt interruptLevel = NKern::DisableInterrupts(0);
-		
-		TInt length(this->priSamplerImpl.SampleImpl());
-		if(length != 0)
-		    {
-			LOGSTRING("PRI sampler PostSample - starting to sample");
-
-			// then, encode the sample to the buffer
-			while(length > 0)
-			    {
-			    this->iSampleBuffer->AddSample(priSamplerImpl.sample,length);
-				length = this->priSamplerImpl.SampleImpl();
-				// indicate that the whole PRI sample ends by having a 0x00 in the end
-				if(length == 0)
-				    {
-					TUint8 number(0);
-					LOGSTRING("PRI sampler PostSample - all samples generated!");
-					
-					this->iSampleBuffer->AddSample(&number,1);
-					LOGSTRING("PRI sampler PostSample - end mark added");
-                    }
-			    }
-			LOGSTRING("PRI sampler PostSample - finished sampling");
-		    }
-		this->sampleInProgress = false;
-		
-		//NKern::RestoreInterrupts(interruptLevel);
-	    }
-	
-	// finally perform superclass postsample
-	TInt i(this->DProfilerGenericSampler<BufferSize>::PostSample());
-	return i; 
-    }
-
-template <int BufferSize> 
-TBool DProfilerPriSampler<BufferSize>::PostSampleNeeded()
-    {
-	LOGSTRING3("CProfilerPriSampler<%d>::PostSampleNeeded - state %d",BufferSize,this->sampleBuffer->GetBufferStatus());
-
-	TUint32 status = this->iSampleBuffer->iBufferStatus;
-
-	if(status == DProfilerSampleBuffer::BufferCopyAsap || status == DProfilerSampleBuffer::BufferFull || this->sampleNeeded == true)
-	    {
-		return true;
-	    }
-	
-	return false;
-    }
-
-
-template <int BufferSize>
-void DProfilerPriSampler<BufferSize>::Sample()
-    {
-	LOGSTRING2("CProfilerPriSampler<%d>::Sample",BufferSize);	
-	
-	if(priSamplerImpl.SampleNeeded() && this->sampleInProgress == false) 
-	    {
-		this->sampleInProgress = true;
-		this->sampleNeeded = true;
-		// start the PRI sample with the sample time
-		TUint8 number(4);
-		this->iSampleBuffer->AddSample(&number,1);
-		this->iSampleBuffer->AddSample((TUint8*)&(gppSamplerData->sampleNumber),4);
-
-		// leave the rest of the processing for PostSample()
-	    }	
-
-	LOGSTRING2("CProfilerPriSampler<%d>::Sample",BufferSize);
-	return;
-    }
-
-template <int BufferSize>
-DProfilerPriSampler<BufferSize>::~DProfilerPriSampler()
-    {
-	LOGSTRING2("CProfilerPriSampler<%d>::~CProfilerPriSampler",BufferSize);		
-    }
-#endif