sysanadatacapture/piprofiler/piprofiler/plugins/GeneralsPlugin/inc/GfcSamplerImpl.h
changeset 2 6a82cd05fb1e
parent 1 3ff3fecb12fe
--- a/sysanadatacapture/piprofiler/piprofiler/plugins/GeneralsPlugin/inc/GfcSamplerImpl.h	Thu Feb 11 15:52:57 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +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_GFC_SAMPLER_H
-#define PROFILER_GFC_SAMPLER_H
-
-
-#include "GeneralsConfig.h"
-
-#include <kern_priv.h>
-
-#include <piprofiler/ProfilerGenericClassesKrn.h>
-#include <piprofiler/ProfilerTraces.h>
-#include "GppSamplerImpl.h"
-
-extern void UsrModLr(TUint32*);
-
-
-/*
- *	
- *	GFC sampler definition
- *	
- */
-
-template <int BufferSize>
-class DProfilerGfcSampler : public DProfilerGenericSampler<BufferSize>
-{
-public:
-	DProfilerGfcSampler(struct TProfilerGppSamplerData* );
-	~DProfilerGfcSampler();
-
-	void	Sample();
-	TInt	Reset(DProfilerSampleStream* aStream, TUint32 aSyncOffset);
-private:
-	struct TProfilerGppSamplerData* gppSamplerData;
-	TUint32 gfcSample[3];
-
-	TUint8	encodedSample[15];
-	TUint32	repeat;
-};
-
-/*
- *	
- *	GFC sampler implementation
- *	
- */
-
-template <int BufferSize>
-DProfilerGfcSampler<BufferSize>::DProfilerGfcSampler(struct TProfilerGppSamplerData* gppSamplerDataIn) :
-	DProfilerGenericSampler<BufferSize>(PROFILER_GFC_SAMPLER_ID)
-{
-	this->gppSamplerData = gppSamplerDataIn;
-	LOGSTRING2("CProfilerGfcSampler<%d>::CProfilerGfcSampler",BufferSize);	
-}
-
-template <int BufferSize>
-TInt DProfilerGfcSampler<BufferSize>::Reset(DProfilerSampleStream* aStream, TUint32 aSyncOffset)
-{
-	LOGSTRING2("CProfilerGfcSampler<BufferSize> - entry",BufferSize);
-	
-	this->repeat = 0;
-	for(TInt i=0;i<3;i++)
-	{
-		this->gfcSample[i] = 0;
-	}
-
-	LOGSTRING2("CProfilerGfcSampler<%d>::Reset - calling superclass reset",BufferSize);
-	DProfilerGenericSampler<BufferSize>::Reset(aStream);
-	LOGSTRING2("CProfilerGfcSampler<%d>::Reset - called superclass reset",BufferSize);
-	
-	// add the first sample, indicating the gfc trace version
-	TUint8 firstSample[33];
-	TPtr8 firstSampleDesc(&(firstSample[1]),32);
-	firstSampleDesc.Zero();
-
-	firstSampleDesc.Append(_L8("Bappea_V"));
-	firstSampleDesc.Append(PROFILER_GFC_SAMPLER_VERSION);
-	firstSampleDesc.Append(_L8("_GFC"));
-	firstSample[0] = firstSampleDesc.Size();
-
-	this->iSampleBuffer->AddSample(firstSample,(firstSample[0]+1));
-
-	LOGSTRING2("CProfilerGfcSampler<BufferSize> - exit",BufferSize);
-
-	return KErrNone;
-}
-
-template <int BufferSize>
-void DProfilerGfcSampler<BufferSize>::Sample()
-{
-	LOGSTRING2("CProfilerGfcSampler<%d>::Sample",BufferSize);	
-
-	TUint32 usr_mod_link_reg;
-
-	UsrModLr(&usr_mod_link_reg);
-
-	TUint32 pc = gppSamplerData->lastPcValue;
-	TUint32 lr = usr_mod_link_reg;
-	TUint32 sa = gppSamplerData->sampleNumber;
-
-	if(pc == gfcSample[0] && lr == gfcSample[1] && sa == gfcSample[2]+1)
-	{
-		// encode repeat
-		repeat++;
-		gfcSample[2] = sa;
-		LOGSTRING2("CProfilerGfcSampler<%d>::Sample - repeat",BufferSize);
-		return;
-	}
-	else if(repeat > 0)
-	{
-		TUint8 repeatSample[3];
-		repeatSample[0] = 0xff;
-		repeatSample[1] = (TUint8)(repeat>>8);
-		repeatSample[2] = (TUint8)repeat;
-		this->iSampleBuffer->AddSample(repeatSample,3);
-
-		LOGSTRING3("CProfilerGfcSampler<%d>::Sample - Encoded repeat %d",BufferSize,repeat);
-
-		repeat = 0;
-	}
-
-	TInt ptr = 3;
-
-	// encode program counter value
-	if(pc>=gfcSample[0]) 
-	{
-		pc = (pc-gfcSample[0]);
-		encodedSample[0] = 0x80;
-	}
-	else 
-	{
-		pc = (gfcSample[0]-pc);
-		encodedSample[0] = 0x00;
-	}
-
-	if(pc <= (TUint32)0xff) 
-	{
-		encodedSample[0] |= 1;
-		encodedSample[ptr] = (TUint8)pc;ptr++;
-	}
-	else if(pc <= (TUint32)0xffff) 
-	{
-		encodedSample[0] |= 2;
-		encodedSample[ptr] = (TUint8)pc;ptr++;
-		encodedSample[ptr] = (TUint8)(pc>>8);ptr++;
-	}
-	else if(pc <= (TUint32)0xffffff) 
-	{
-		encodedSample[0] |= 3;
-		encodedSample[ptr] = (TUint8)pc;ptr++;
-		encodedSample[ptr] = (TUint8)(pc>>8);ptr++;
-		encodedSample[ptr] = (TUint8)(pc>>16);ptr++;
-	}
-	else 
-	{
-		encodedSample[0] |= 4;
-		encodedSample[ptr] = (TUint8)pc;ptr++;
-		encodedSample[ptr] = (TUint8)(pc>>8);ptr++;
-		encodedSample[ptr] = (TUint8)(pc>>16);ptr++;
-		encodedSample[ptr] = (TUint8)(pc>>24);ptr++;
-	}
-
-	// encode link register value
-	if(lr>=gfcSample[1]) 
-	{
-		lr = (lr-gfcSample[1]);
-		encodedSample[1] = 0x80;
-	}
-	else 
-	{
-		lr = (gfcSample[1]-lr);
-		encodedSample[1] = 0x00;
-	}
-
-	if(lr <= (TUint32)0xff) 
-	{
-		encodedSample[1] |= 1;
-		encodedSample[ptr] = (TUint8)lr;ptr++;
-	}
-	else if(lr <= (TUint32)0xffff) 
-	{
-		encodedSample[1] |= 2;
-		encodedSample[ptr] = (TUint8)lr;ptr++;
-		encodedSample[ptr] = (TUint8)(lr>>8);ptr++;
-	}
-	else if(lr <= (TUint32)0xffffff) 
-	{
-		encodedSample[1] |= 3;
-		encodedSample[ptr] = (TUint8)lr;ptr++;
-		encodedSample[ptr] = (TUint8)(lr>>8);ptr++;
-		encodedSample[ptr] = (TUint8)(lr>>16);ptr++;
-	}
-	else 
-	{
-		encodedSample[1] |= 4;
-		encodedSample[ptr] = (TUint8)lr;ptr++;
-		encodedSample[ptr] = (TUint8)(lr>>8);ptr++;
-		encodedSample[ptr] = (TUint8)(lr>>16);ptr++;
-		encodedSample[ptr] = (TUint8)(lr>>24);ptr++;
-	}
-	
-	// endcode sample number difference
-	if( (sa - gfcSample[2]) < (TUint8)0xff) 
-	{
-		encodedSample[2] = (sa-gfcSample[2]);
-	}
-	else
-	{
-		encodedSample[2] = 0xff;
-		encodedSample[ptr] = (TUint8)sa;ptr++;
-		encodedSample[ptr] = (TUint8)(sa>>8);ptr++;
-		encodedSample[ptr] = (TUint8)(sa>>16);ptr++;
-		encodedSample[ptr] = (TUint8)(sa>>24);ptr++;
-	}
-
-	// store the values for the next sample
-	gfcSample[0] = gppSamplerData->lastPcValue;
-	gfcSample[1] = usr_mod_link_reg;
-	gfcSample[2] = gppSamplerData->sampleNumber;
-	
-	this->iSampleBuffer->AddSample(encodedSample,ptr);
-
-	LOGSTRING3("CProfilerGfcSampler<%d>::Sample Size %d",BufferSize,ptr);
-
-	return;
-
-}
-
-template <int BufferSize>
-DProfilerGfcSampler<BufferSize>::~DProfilerGfcSampler()
-{
-	LOGSTRING2("CProfilerGfcSampler<%d>::~CProfilerGfcSampler",BufferSize);		
-}
-#endif