--- a/piprofiler/piprofiler_plat/inc/ProfilerGenericClassesKrn.h Thu Sep 02 22:05:40 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,422 +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 PROFILERGENERICCLASSESKRN_H
-#define PROFILERGENERICCLASSESKRN_H
-
- #include <piprofiler/ProfilerGenericClassesCommon.h>
- #include <piprofiler/ProfilerTraces.h>
-
- #include <e32cmn.h>
-
- #define PROFILER_KERNEL_MODE
-
-#ifdef PROFILER_KERNEL_MODE
-class DProfilerSampleBuffer;
-
-class DProfilerSampleStream
- {
-public:
- DProfilerSampleStream();
- ~DProfilerSampleStream();
-
- void InsertCurrentClient(DThread* aClient);
- void AddSampleBuffer(TBapBuf* aBuffer,TRequestStatus* aStatus);
- void ReleaseIfPending();
-
- void AddSamples(DProfilerSampleBuffer& aBuffer, TInt aSamplerId);
- TInt EndSampling(DProfilerSampleBuffer& aBuffer,TInt aSamplerId);
-
- void PerformCopy(TUint8 aSamplerId,TUint8* aSrc,TPtr8* dst,TInt aOffset,TInt aAmount);
-
-private:
- TBapBuf* iCurrentBuffer;
- TRequestStatus* iPendingRequest;
- DThread* iClient;
- TInt iAddingSamples;
- };
-
-class DProfilerSampleBuffer : public DBase
- {
- friend class DProfilerSampleStream;
-public:
-
- enum ProfilerBufferStatus
- {
- BufferOk,
- BufferCopyAsap,
- BufferBeingCopied,
- BufferFull,
- BufferDataEnd
- };
-
- DProfilerSampleBuffer(TUint8* aBuffer, TUint8* aDblBuffer, TUint32 aSize);
- ~DProfilerSampleBuffer();
- TInt AddSample(TUint8* aSample, TUint32 aLength);
- TUint32 GetBufferStatus();
- void ClearBuffer();
- void EndSampling();
- void DataCopied();
-
- TUint32 iBufferStatus;
-private:
- TUint32 iBytesWritten;
- TUint32 iDblBytesWritten;
- TUint32 iDblBytesRead;
-
- TUint32 iBufferDataSize;
- TUint32 iBufferRealSize;
-
- TProfilerSampleBufStruct* iDblBufStruct;
- TProfilerSampleBufStruct* iBufStruct;
- };
-
-#endif
-
-
-
-/*
- *
- * Abstract class CProfilerSamplerBase definition
- *
- */
-
-#ifdef PROFILER_KERNEL_MODE
-class DProfilerSamplerBase : public DBase
- {
-public:
- DProfilerSamplerBase();
- virtual ~DProfilerSamplerBase();
-
- virtual TInt Initialise() = 0;
- virtual void Sample() = 0;
- virtual TBool PostSampleNeeded() = 0;
- virtual TInt PostSample() = 0;
- virtual TInt EndSampling() = 0;
-
- virtual TInt Reset(DProfilerSampleStream* aStream = 0, TUint32 aSyncOffset = 0) = 0;
-
- virtual void SetEnabledFlag(TBool aFlag) = 0;
- virtual TBool GetEnabledFlag() = 0;
- virtual void SetOutputCombination(TInt aSettings) = 0;
- virtual void SetSamplingPeriod(TInt aSettings) = 0;
- virtual void SetAdditionalSettings(TInt aSettings) = 0;
- virtual void SetAdditionalSettings2(TInt aSettings) = 0;
- virtual void SetAdditionalSettings3(TInt aSettings) = 0;
- virtual void SetAdditionalSettings4(TInt aSettings) = 0;
-
- TInt iSamplerId;
- TInt iOutputCombination;
- TBool iEnabled;
- };
-
-/*
- *
- * Template abstract class CProfilerGenericSampler definition
- *
- */
-
-// size parameter given defines the explicit buffer size in bytes for this sampler
-template <int BufferSize>
-class DProfilerGenericSampler : public DProfilerSamplerBase
- {
-public:
- DProfilerGenericSampler(TInt aSamplerId);
- virtual ~DProfilerGenericSampler();
-
- TInt Initialise();
- virtual void Sample() = 0;
- TBool PostSampleNeeded();
- TInt PostSample();
- TInt EndSampling();
- virtual TInt Reset(DProfilerSampleStream* aStream = 0, TUint32 aSyncOffset = 0);
-
-
- void SetEnabledFlag(TBool aFlag);
- TBool GetEnabledFlag();
- void SetOutputCombination(TInt aComb);
- void SetSamplingPeriod(TInt aSettings);
- void SetAdditionalSettings(TInt aSettings);
- void SetAdditionalSettings2(TInt aSettings);
- void SetAdditionalSettings3(TInt aSettings);
- void SetAdditionalSettings4(TInt aSettings);
-
- DProfilerSampleBuffer* iSampleBuffer;
- DProfilerSampleStream* iStream;
-
- // for right alignment
- TUint8 iBuffer[BufferSize+4];
- TUint8 iDblBuffer[BufferSize+4];
-
- TInt iSamplingPeriod;
- TInt iAdditionalSettings;
- TInt iAdditionalSettings2;
- TInt iAdditionalSettings3;
- TInt iAdditionalSettings4;
- };
-
-/*
- *
- * Template abstract class CProfilerGenericSampler implementation
- *
- */
-
-template <int BufferSize>
-DProfilerGenericSampler<BufferSize>::DProfilerGenericSampler(TInt aSamplerId)
- {
- iSamplerId = aSamplerId;
- iEnabled = false;
- iSampleBuffer = 0;
- iAdditionalSettings = 0;
- iAdditionalSettings2 = 0;
- iAdditionalSettings3 = 0;
- iAdditionalSettings4 = 0;
- iStream = 0;
- Initialise();
- }
-
-template <int BufferSize>
-DProfilerGenericSampler<BufferSize>::~DProfilerGenericSampler()
- {
- LOGSTRING2("CProfilerGenericSampler<%d>::CProfilerGenericSampler",BufferSize);
-
- if(iSampleBuffer != 0)
- delete iSampleBuffer;
-
- }
-
-template <int BufferSize>
-TInt DProfilerGenericSampler<BufferSize>::Initialise()
- {
- LOGSTRING2("CProfilerGenericSampler<%d>::Initialise - chunk option",BufferSize);
-
- // stream is not used in chunk mode
- iStream = 0;
-
- // create the sample buffer object with the buffers
- if(iSampleBuffer == 0)
- {
- iSampleBuffer = new DProfilerSampleBuffer(iBuffer,iDblBuffer,BufferSize);
- }
- else
- {
- LOGSTRING2("CProfilerGenericSampler<%d>::Initialise - ERROR 1",BufferSize);
- }
-
- return KErrNone;
- }
-
-
-
-template <int BufferSize>
-TInt DProfilerGenericSampler<BufferSize>::Reset(DProfilerSampleStream* aStream, TUint32 aSyncOffset)
- {
- LOGSTRING4("CProfilerGenericSampler<%d>::Reset %d, sync offset %d",BufferSize,aStream,aSyncOffset);
- // reset the sample buffer and resolve the chunk again
-
- // CURRENT VERSION SUPPORTS ONLY STREAM MODE!
- LOGSTRING2("CProfilerGenericSampler<%d>::Reset - stream option",BufferSize);
-
- // initialise the sampler with the stream option
- iStream = aStream;
-
- // clear the sample buffer
- if(iSampleBuffer != 0)
- {
- iSampleBuffer->ClearBuffer();
- }
- else
- {
- LOGSTRING2("CProfilerGenericSampler<%d>::Initialise - ERROR no buffer",BufferSize);
- }
-
- return KErrNone;
-
- }
-
-template <int BufferSize>
-TBool DProfilerGenericSampler<BufferSize>::PostSampleNeeded()
- {
- LOGSTRING4("CProfilerGenericSampler<%d>::PostSampleNeeded - ID %d, state %d",iSamplerId,BufferSize,iSampleBuffer->GetBufferStatus());
-
- TUint32 status = iSampleBuffer->iBufferStatus;
-
- if(status == DProfilerSampleBuffer::BufferCopyAsap || status == DProfilerSampleBuffer::BufferFull)
- {
- return true;
- }
-
- return false;
- }
-
-
-template <int BufferSize>
-TInt DProfilerGenericSampler<BufferSize>::PostSample()
- {
- LOGSTRING4("CProfilerGenericSampler<%d>::PostSample - ID %d, state %d",iSamplerId,BufferSize,iSampleBuffer->GetBufferStatus());
-
- TUint32 status = iSampleBuffer->iBufferStatus;
-
- if(status == DProfilerSampleBuffer::BufferCopyAsap || status == DProfilerSampleBuffer::BufferFull)
- {
- // write data to the stream
- iStream->AddSamples(*iSampleBuffer,iSamplerId);
- }
-
- return KErrNone;
- }
-
-template <int BufferSize>
-TInt DProfilerGenericSampler<BufferSize>::EndSampling()
- {
- LOGSTRING3("CProfilerGenericSampler<%d>::EndSampling, ID %d",BufferSize,iSamplerId);
-
- // only if write to stream option is selected
- if(iStream->EndSampling(*iSampleBuffer,iSamplerId) == 0)
- {
- return KErrNone;
- }
- else
- {
- // there is still data to copy
- return KErrNotReady;
- }
- }
-
-template <int BufferSize>
-void DProfilerGenericSampler<BufferSize>::SetEnabledFlag(TBool aFlag)
- {
- LOGSTRING2("CProfilerGenericSampler<%d>::SetEnabledFlag",BufferSize);
- iEnabled = aFlag;
- }
-
-template <int BufferSize>
-TBool DProfilerGenericSampler<BufferSize>::GetEnabledFlag()
- {
- LOGSTRING2("CProfilerGenericSampler<%d>::GetEnabledFlag",BufferSize);
- return iEnabled;
- }
-
-template <int BufferSize>
-void DProfilerGenericSampler<BufferSize>::SetOutputCombination(TInt aComb)
- {
- LOGSTRING2("CProfilerGenericSampler<%d>::SetOutputCombination",BufferSize);
- iOutputCombination = aComb;
- }
-
-template <int BufferSize>
-void DProfilerGenericSampler<BufferSize>::SetAdditionalSettings(TInt aSettings)
- {
- LOGSTRING3("CProfilerGenericSampler<%d>::SetAdditionalSettings to 0x%x",BufferSize,aSettings);
- iAdditionalSettings = aSettings;
- }
-
-template <int BufferSize>
-void DProfilerGenericSampler<BufferSize>::SetAdditionalSettings2(TInt aSettings)
- {
- LOGSTRING3("CProfilerGenericSampler<%d>::SetAdditionalSettings2 to 0x%x",BufferSize,aSettings);
- iAdditionalSettings2 = aSettings;
- }
-
-template <int BufferSize>
-void DProfilerGenericSampler<BufferSize>::SetAdditionalSettings3(TInt aSettings)
- {
- LOGSTRING3("CProfilerGenericSampler<%d>::SetAdditionalSettings3 to 0x%x",BufferSize,aSettings);
- iAdditionalSettings3 = aSettings;
- }
-
-template <int BufferSize>
-void DProfilerGenericSampler<BufferSize>::SetAdditionalSettings4(TInt aSettings)
- {
- LOGSTRING3("CProfilerGenericSampler<%d>::SetAdditionalSettings4 to 0x%x",BufferSize,aSettings);
- iAdditionalSettings4 = aSettings;
- }
-
-template <int BufferSize>
-void DProfilerGenericSampler<BufferSize>::SetSamplingPeriod(TInt aSettings)
- {
- LOGSTRING3("CProfilerGenericSampler<%d>::SetSamplingPeriod to 0x%x",BufferSize,aSettings);
- iSamplingPeriod = aSettings;
- }
-
-/*
- *
- * Just a test class that is derived from CProfilerGenericSampler
- *
- */
-
-template <int BufferSize>
-class DProfilerExampleSampler : public DProfilerGenericSampler<BufferSize>
- {
-public:
- TUint32 iSampleNumber;
-
- DProfilerExampleSampler(TInt aSamplerId);
- ~DProfilerExampleSampler();
-
- void Sample();
- void Sample(TInt aCount, TInt aLastPc);
- };
-
-
-/*
- *
- * Just a test class that is derived from CProfilerGenericSampler
- *
- */
-
-template <int BufferSize>
-DProfilerExampleSampler<BufferSize>::DProfilerExampleSampler(TInt aSamplerId) :
- DProfilerGenericSampler<BufferSize>(aSamplerId)
- {
- iSampleNumber = 0;
- LOGSTRING2("CProfilerExampleSampler<%d>::CProfilerExampleSampler",BufferSize);
- }
-
-template <int BufferSize>
-void DProfilerExampleSampler<BufferSize>::Sample()
- {
- LOGSTRING2("CProfilerExampleSampler<%d>::Sample",BufferSize);
- TBuf8<20>* testiBuf = new TBuf8<20>;
-
- testiBuf->AppendNum((TInt)iSampleNumber);
- iSampleNumber++;
-
- this->iSampleBuffer->AddSample((TUint8*)testiBuf->Ptr(),testiBuf->Length());
- delete testiBuf;
- return;
- }
-
-template <int BufferSize>
-void DProfilerExampleSampler<BufferSize>::Sample(TInt aCount, TInt aLastPc)
- {
- return;
- }
-
-template <int BufferSize>
-DProfilerExampleSampler<BufferSize>::~DProfilerExampleSampler()
- {
- LOGSTRING2("CProfilerExampleSampler<%d>::~CProfilerExampleSampler",BufferSize);
- }
-
-#include <piprofiler/ProfilerGenericClassesKrn.inl>
-
-#endif
-
-
-#endif