piprofiler/piprofiler_plat/inc/ProfilerGenericClassesKrn.h
author hgs
Tue, 25 May 2010 18:01:01 +0300
changeset 21 f5d4820de50d
parent 20 a71a3e32a2ae
permissions -rw-r--r--
201021
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
20
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef PROFILERGENERICCLASSESKRN_H
hgs
parents:
diff changeset
    20
#define PROFILERGENERICCLASSESKRN_H
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
	#include <piprofiler/ProfilerGenericClassesCommon.h>
hgs
parents:
diff changeset
    23
	#include <piprofiler/ProfilerTraces.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
	#include <e32cmn.h>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
	#define PROFILER_KERNEL_MODE
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
#ifdef PROFILER_KERNEL_MODE
hgs
parents:
diff changeset
    30
class DProfilerSampleBuffer;
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
class DProfilerSampleStream
hgs
parents:
diff changeset
    33
    {
hgs
parents:
diff changeset
    34
public:
hgs
parents:
diff changeset
    35
		DProfilerSampleStream();
hgs
parents:
diff changeset
    36
		~DProfilerSampleStream();
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
		void InsertCurrentClient(DThread* aClient);
hgs
parents:
diff changeset
    39
		void AddSampleBuffer(TBapBuf* aBuffer,TRequestStatus* aStatus);
hgs
parents:
diff changeset
    40
		void ReleaseIfPending();
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
		void AddSamples(DProfilerSampleBuffer& aBuffer, TInt aSamplerId);
hgs
parents:
diff changeset
    43
		TInt EndSampling(DProfilerSampleBuffer& aBuffer,TInt aSamplerId);
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
		void PerformCopy(TUint8 aSamplerId,TUint8* aSrc,TPtr8* dst,TInt aOffset,TInt aAmount);
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
private:
hgs
parents:
diff changeset
    48
		TBapBuf*			iCurrentBuffer;
hgs
parents:
diff changeset
    49
		TRequestStatus*		iPendingRequest;
hgs
parents:
diff changeset
    50
		DThread*			iClient;
hgs
parents:
diff changeset
    51
		TInt				iAddingSamples;
hgs
parents:
diff changeset
    52
    };
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
class DProfilerSampleBuffer : public DBase
hgs
parents:
diff changeset
    55
    {
hgs
parents:
diff changeset
    56
		friend class DProfilerSampleStream;
hgs
parents:
diff changeset
    57
public:
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
			enum ProfilerBufferStatus 
hgs
parents:
diff changeset
    60
			    {
hgs
parents:
diff changeset
    61
				BufferOk,
hgs
parents:
diff changeset
    62
				BufferCopyAsap,
hgs
parents:
diff changeset
    63
				BufferBeingCopied,
hgs
parents:
diff changeset
    64
				BufferFull,
hgs
parents:
diff changeset
    65
				BufferDataEnd
hgs
parents:
diff changeset
    66
			    };
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
			DProfilerSampleBuffer(TUint8* aBuffer, TUint8* aDblBuffer, TUint32 aSize);
hgs
parents:
diff changeset
    69
			~DProfilerSampleBuffer();	
hgs
parents:
diff changeset
    70
			TInt	AddSample(TUint8* aSample, TUint32 aLength);
hgs
parents:
diff changeset
    71
			TUint32 GetBufferStatus();
hgs
parents:
diff changeset
    72
			void	ClearBuffer();
hgs
parents:
diff changeset
    73
			void	EndSampling();
hgs
parents:
diff changeset
    74
			void	DataCopied();
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
			TUint32 iBufferStatus;
hgs
parents:
diff changeset
    77
private:
hgs
parents:
diff changeset
    78
			TUint32 iBytesWritten;
hgs
parents:
diff changeset
    79
			TUint32 iDblBytesWritten;
hgs
parents:
diff changeset
    80
			TUint32 iDblBytesRead;
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
			TUint32 iBufferDataSize;
hgs
parents:
diff changeset
    83
			TUint32 iBufferRealSize;
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
			TProfilerSampleBufStruct* iDblBufStruct;
hgs
parents:
diff changeset
    86
			TProfilerSampleBufStruct* iBufStruct;
hgs
parents:
diff changeset
    87
    };
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
#endif
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
 
hgs
parents:
diff changeset
    93
/*
hgs
parents:
diff changeset
    94
 *	
hgs
parents:
diff changeset
    95
 *	Abstract class CProfilerSamplerBase definition
hgs
parents:
diff changeset
    96
 *	
hgs
parents:
diff changeset
    97
 */
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
#ifdef PROFILER_KERNEL_MODE
hgs
parents:
diff changeset
   100
class DProfilerSamplerBase : public DBase
hgs
parents:
diff changeset
   101
    {
hgs
parents:
diff changeset
   102
public:
hgs
parents:
diff changeset
   103
	DProfilerSamplerBase();
hgs
parents:
diff changeset
   104
			virtual					~DProfilerSamplerBase();
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
			virtual	TInt			Initialise() = 0;
hgs
parents:
diff changeset
   107
			virtual	void			Sample() = 0;
hgs
parents:
diff changeset
   108
			virtual TBool			PostSampleNeeded() = 0;
hgs
parents:
diff changeset
   109
			virtual TInt			PostSample() = 0;
hgs
parents:
diff changeset
   110
			virtual TInt			EndSampling() = 0;
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
			virtual TInt			Reset(DProfilerSampleStream* aStream = 0, TUint32 aSyncOffset = 0) = 0;
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
			virtual void			SetEnabledFlag(TBool aFlag) = 0;
hgs
parents:
diff changeset
   115
			virtual TBool			GetEnabledFlag() = 0;
hgs
parents:
diff changeset
   116
			virtual void			SetOutputCombination(TInt aSettings) = 0;
hgs
parents:
diff changeset
   117
			virtual void 			SetSamplingPeriod(TInt aSettings) = 0;
hgs
parents:
diff changeset
   118
			virtual void			SetAdditionalSettings(TInt aSettings) = 0;
hgs
parents:
diff changeset
   119
			virtual void			SetAdditionalSettings2(TInt aSettings) = 0;
hgs
parents:
diff changeset
   120
			virtual void			SetAdditionalSettings3(TInt aSettings) = 0;
hgs
parents:
diff changeset
   121
			virtual void			SetAdditionalSettings4(TInt aSettings) = 0;
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
			TInt					iSamplerId;
hgs
parents:
diff changeset
   124
			TInt					iOutputCombination;
hgs
parents:
diff changeset
   125
			TBool					iEnabled;
hgs
parents:
diff changeset
   126
    };
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
/*
hgs
parents:
diff changeset
   129
 *	
hgs
parents:
diff changeset
   130
 *	Template abstract class CProfilerGenericSampler definition
hgs
parents:
diff changeset
   131
 *	
hgs
parents:
diff changeset
   132
 */
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
// size parameter given defines the explicit buffer size in bytes for this sampler
hgs
parents:
diff changeset
   135
template <int BufferSize> 
hgs
parents:
diff changeset
   136
class DProfilerGenericSampler : public DProfilerSamplerBase
hgs
parents:
diff changeset
   137
    {
hgs
parents:
diff changeset
   138
public:
hgs
parents:
diff changeset
   139
			DProfilerGenericSampler(TInt aSamplerId);
hgs
parents:
diff changeset
   140
			virtual					~DProfilerGenericSampler();
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
			TInt					Initialise();
hgs
parents:
diff changeset
   143
			virtual	void			Sample() = 0;
hgs
parents:
diff changeset
   144
			TBool					PostSampleNeeded();
hgs
parents:
diff changeset
   145
			TInt					PostSample();
hgs
parents:
diff changeset
   146
			TInt					EndSampling();
hgs
parents:
diff changeset
   147
			virtual TInt			Reset(DProfilerSampleStream* aStream = 0, TUint32 aSyncOffset = 0);
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
			void					SetEnabledFlag(TBool aFlag);
hgs
parents:
diff changeset
   151
			TBool					GetEnabledFlag();
hgs
parents:
diff changeset
   152
			void					SetOutputCombination(TInt aComb);
hgs
parents:
diff changeset
   153
			void 					SetSamplingPeriod(TInt aSettings);
hgs
parents:
diff changeset
   154
			void					SetAdditionalSettings(TInt aSettings);
hgs
parents:
diff changeset
   155
			void					SetAdditionalSettings2(TInt aSettings);
hgs
parents:
diff changeset
   156
			void					SetAdditionalSettings3(TInt aSettings);
hgs
parents:
diff changeset
   157
			void					SetAdditionalSettings4(TInt aSettings);
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
			DProfilerSampleBuffer*	iSampleBuffer;
hgs
parents:
diff changeset
   160
			DProfilerSampleStream*	iStream;
hgs
parents:
diff changeset
   161
hgs
parents:
diff changeset
   162
			// for right alignment
hgs
parents:
diff changeset
   163
			TUint8					iBuffer[BufferSize+4];
hgs
parents:
diff changeset
   164
			TUint8					iDblBuffer[BufferSize+4];
hgs
parents:
diff changeset
   165
			
hgs
parents:
diff changeset
   166
			TInt					iSamplingPeriod;
hgs
parents:
diff changeset
   167
			TInt					iAdditionalSettings;
hgs
parents:
diff changeset
   168
			TInt					iAdditionalSettings2;
hgs
parents:
diff changeset
   169
			TInt					iAdditionalSettings3;
hgs
parents:
diff changeset
   170
			TInt					iAdditionalSettings4;
hgs
parents:
diff changeset
   171
    };
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
/*
hgs
parents:
diff changeset
   174
 *	
hgs
parents:
diff changeset
   175
 *	Template abstract class CProfilerGenericSampler implementation
hgs
parents:
diff changeset
   176
 *
hgs
parents:
diff changeset
   177
 */
hgs
parents:
diff changeset
   178
hgs
parents:
diff changeset
   179
template <int BufferSize>
hgs
parents:
diff changeset
   180
DProfilerGenericSampler<BufferSize>::DProfilerGenericSampler(TInt aSamplerId)
hgs
parents:
diff changeset
   181
    {
hgs
parents:
diff changeset
   182
	iSamplerId = aSamplerId;
hgs
parents:
diff changeset
   183
	iEnabled = false;
hgs
parents:
diff changeset
   184
	iSampleBuffer = 0;
hgs
parents:
diff changeset
   185
	iAdditionalSettings = 0;
hgs
parents:
diff changeset
   186
	iAdditionalSettings2 = 0;
hgs
parents:
diff changeset
   187
    iAdditionalSettings3 = 0;
hgs
parents:
diff changeset
   188
    iAdditionalSettings4 = 0;
hgs
parents:
diff changeset
   189
	iStream = 0;
hgs
parents:
diff changeset
   190
	Initialise();
hgs
parents:
diff changeset
   191
    }
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
template <int BufferSize> 
hgs
parents:
diff changeset
   194
DProfilerGenericSampler<BufferSize>::~DProfilerGenericSampler()
hgs
parents:
diff changeset
   195
    {
hgs
parents:
diff changeset
   196
	LOGSTRING2("CProfilerGenericSampler<%d>::CProfilerGenericSampler",BufferSize);	
hgs
parents:
diff changeset
   197
	
hgs
parents:
diff changeset
   198
	if(iSampleBuffer != 0)
hgs
parents:
diff changeset
   199
		delete iSampleBuffer;
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
    }
hgs
parents:
diff changeset
   202
 
hgs
parents:
diff changeset
   203
template <int BufferSize> 
hgs
parents:
diff changeset
   204
TInt DProfilerGenericSampler<BufferSize>::Initialise()
hgs
parents:
diff changeset
   205
    {
hgs
parents:
diff changeset
   206
	LOGSTRING2("CProfilerGenericSampler<%d>::Initialise - chunk option",BufferSize);
hgs
parents:
diff changeset
   207
hgs
parents:
diff changeset
   208
	// stream is not used in chunk mode
hgs
parents:
diff changeset
   209
	iStream = 0;
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
	// create the sample buffer object with the buffers
hgs
parents:
diff changeset
   212
	if(iSampleBuffer == 0)
hgs
parents:
diff changeset
   213
	    {
hgs
parents:
diff changeset
   214
	    iSampleBuffer = new DProfilerSampleBuffer(iBuffer,iDblBuffer,BufferSize);
hgs
parents:
diff changeset
   215
        }
hgs
parents:
diff changeset
   216
	else
hgs
parents:
diff changeset
   217
	   {
hgs
parents:
diff changeset
   218
		LOGSTRING2("CProfilerGenericSampler<%d>::Initialise - ERROR 1",BufferSize);
hgs
parents:
diff changeset
   219
        }
hgs
parents:
diff changeset
   220
hgs
parents:
diff changeset
   221
	return KErrNone;
hgs
parents:
diff changeset
   222
    }
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
hgs
parents:
diff changeset
   225
hgs
parents:
diff changeset
   226
template <int BufferSize> 
hgs
parents:
diff changeset
   227
TInt DProfilerGenericSampler<BufferSize>::Reset(DProfilerSampleStream* aStream, TUint32 aSyncOffset)
hgs
parents:
diff changeset
   228
    {
hgs
parents:
diff changeset
   229
	LOGSTRING4("CProfilerGenericSampler<%d>::Reset %d, sync offset %d",BufferSize,aStream,aSyncOffset);
hgs
parents:
diff changeset
   230
	// reset the sample buffer and resolve the chunk again
hgs
parents:
diff changeset
   231
hgs
parents:
diff changeset
   232
	// CURRENT VERSION SUPPORTS ONLY STREAM MODE!
hgs
parents:
diff changeset
   233
	LOGSTRING2("CProfilerGenericSampler<%d>::Reset - stream option",BufferSize);
hgs
parents:
diff changeset
   234
hgs
parents:
diff changeset
   235
	// initialise the sampler with the stream option
hgs
parents:
diff changeset
   236
	iStream = aStream;
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
	// clear the sample buffer
hgs
parents:
diff changeset
   239
	if(iSampleBuffer != 0)
hgs
parents:
diff changeset
   240
	    {
hgs
parents:
diff changeset
   241
	    iSampleBuffer->ClearBuffer();
hgs
parents:
diff changeset
   242
        }
hgs
parents:
diff changeset
   243
	else
hgs
parents:
diff changeset
   244
	    {
hgs
parents:
diff changeset
   245
		LOGSTRING2("CProfilerGenericSampler<%d>::Initialise - ERROR no buffer",BufferSize);
hgs
parents:
diff changeset
   246
        }
hgs
parents:
diff changeset
   247
hgs
parents:
diff changeset
   248
	return KErrNone;
hgs
parents:
diff changeset
   249
hgs
parents:
diff changeset
   250
    }
hgs
parents:
diff changeset
   251
hgs
parents:
diff changeset
   252
template <int BufferSize> 
hgs
parents:
diff changeset
   253
TBool DProfilerGenericSampler<BufferSize>::PostSampleNeeded()
hgs
parents:
diff changeset
   254
    {
hgs
parents:
diff changeset
   255
	LOGSTRING4("CProfilerGenericSampler<%d>::PostSampleNeeded - ID %d, state %d",iSamplerId,BufferSize,iSampleBuffer->GetBufferStatus());
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
	TUint32 status = iSampleBuffer->iBufferStatus;
hgs
parents:
diff changeset
   258
hgs
parents:
diff changeset
   259
	if(status == DProfilerSampleBuffer::BufferCopyAsap || status == DProfilerSampleBuffer::BufferFull)
hgs
parents:
diff changeset
   260
	    {
hgs
parents:
diff changeset
   261
		return true;
hgs
parents:
diff changeset
   262
        }
hgs
parents:
diff changeset
   263
	
hgs
parents:
diff changeset
   264
	return false;
hgs
parents:
diff changeset
   265
    }
hgs
parents:
diff changeset
   266
hgs
parents:
diff changeset
   267
hgs
parents:
diff changeset
   268
template <int BufferSize> 
hgs
parents:
diff changeset
   269
TInt DProfilerGenericSampler<BufferSize>::PostSample()
hgs
parents:
diff changeset
   270
    {
hgs
parents:
diff changeset
   271
	LOGSTRING4("CProfilerGenericSampler<%d>::PostSample - ID %d, state %d",iSamplerId,BufferSize,iSampleBuffer->GetBufferStatus());
hgs
parents:
diff changeset
   272
hgs
parents:
diff changeset
   273
	TUint32 status = iSampleBuffer->iBufferStatus;
hgs
parents:
diff changeset
   274
hgs
parents:
diff changeset
   275
	if(status == DProfilerSampleBuffer::BufferCopyAsap || status == DProfilerSampleBuffer::BufferFull)
hgs
parents:
diff changeset
   276
	    {
hgs
parents:
diff changeset
   277
        // write data to the stream
hgs
parents:
diff changeset
   278
	    iStream->AddSamples(*iSampleBuffer,iSamplerId);
hgs
parents:
diff changeset
   279
		}
hgs
parents:
diff changeset
   280
	
hgs
parents:
diff changeset
   281
	return KErrNone;
hgs
parents:
diff changeset
   282
    }
hgs
parents:
diff changeset
   283
hgs
parents:
diff changeset
   284
template <int BufferSize>
hgs
parents:
diff changeset
   285
TInt DProfilerGenericSampler<BufferSize>::EndSampling()
hgs
parents:
diff changeset
   286
    {
hgs
parents:
diff changeset
   287
	LOGSTRING3("CProfilerGenericSampler<%d>::EndSampling, ID %d",BufferSize,iSamplerId);
hgs
parents:
diff changeset
   288
hgs
parents:
diff changeset
   289
    // only if write to stream option is selected
hgs
parents:
diff changeset
   290
    if(iStream->EndSampling(*iSampleBuffer,iSamplerId) == 0)
hgs
parents:
diff changeset
   291
        {
hgs
parents:
diff changeset
   292
        return KErrNone;
hgs
parents:
diff changeset
   293
        }
hgs
parents:
diff changeset
   294
    else 
hgs
parents:
diff changeset
   295
        {
hgs
parents:
diff changeset
   296
        // there is still data to copy
hgs
parents:
diff changeset
   297
        return KErrNotReady;
hgs
parents:
diff changeset
   298
        }
hgs
parents:
diff changeset
   299
    }
hgs
parents:
diff changeset
   300
hgs
parents:
diff changeset
   301
template <int BufferSize>
hgs
parents:
diff changeset
   302
void DProfilerGenericSampler<BufferSize>::SetEnabledFlag(TBool aFlag)
hgs
parents:
diff changeset
   303
    {
hgs
parents:
diff changeset
   304
	LOGSTRING2("CProfilerGenericSampler<%d>::SetEnabledFlag",BufferSize);
hgs
parents:
diff changeset
   305
	iEnabled = aFlag;
hgs
parents:
diff changeset
   306
    }
hgs
parents:
diff changeset
   307
hgs
parents:
diff changeset
   308
template <int BufferSize>
hgs
parents:
diff changeset
   309
TBool DProfilerGenericSampler<BufferSize>::GetEnabledFlag()
hgs
parents:
diff changeset
   310
    {
hgs
parents:
diff changeset
   311
	LOGSTRING2("CProfilerGenericSampler<%d>::GetEnabledFlag",BufferSize);
hgs
parents:
diff changeset
   312
	return iEnabled;
hgs
parents:
diff changeset
   313
    }
hgs
parents:
diff changeset
   314
hgs
parents:
diff changeset
   315
template <int BufferSize>
hgs
parents:
diff changeset
   316
void DProfilerGenericSampler<BufferSize>::SetOutputCombination(TInt aComb)
hgs
parents:
diff changeset
   317
    {
hgs
parents:
diff changeset
   318
	LOGSTRING2("CProfilerGenericSampler<%d>::SetOutputCombination",BufferSize);
hgs
parents:
diff changeset
   319
	iOutputCombination = aComb;
hgs
parents:
diff changeset
   320
    }
hgs
parents:
diff changeset
   321
hgs
parents:
diff changeset
   322
template <int BufferSize>
hgs
parents:
diff changeset
   323
void DProfilerGenericSampler<BufferSize>::SetAdditionalSettings(TInt aSettings)
hgs
parents:
diff changeset
   324
    {
hgs
parents:
diff changeset
   325
	LOGSTRING3("CProfilerGenericSampler<%d>::SetAdditionalSettings to 0x%x",BufferSize,aSettings);
hgs
parents:
diff changeset
   326
	iAdditionalSettings = aSettings;
hgs
parents:
diff changeset
   327
    }
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
template <int BufferSize>
hgs
parents:
diff changeset
   330
void DProfilerGenericSampler<BufferSize>::SetAdditionalSettings2(TInt aSettings)
hgs
parents:
diff changeset
   331
    {
hgs
parents:
diff changeset
   332
	LOGSTRING3("CProfilerGenericSampler<%d>::SetAdditionalSettings2 to 0x%x",BufferSize,aSettings);
hgs
parents:
diff changeset
   333
	iAdditionalSettings2 = aSettings;
hgs
parents:
diff changeset
   334
    }
hgs
parents:
diff changeset
   335
hgs
parents:
diff changeset
   336
template <int BufferSize>
hgs
parents:
diff changeset
   337
void DProfilerGenericSampler<BufferSize>::SetAdditionalSettings3(TInt aSettings)
hgs
parents:
diff changeset
   338
    {
hgs
parents:
diff changeset
   339
	LOGSTRING3("CProfilerGenericSampler<%d>::SetAdditionalSettings3 to 0x%x",BufferSize,aSettings);
hgs
parents:
diff changeset
   340
	iAdditionalSettings3 = aSettings;
hgs
parents:
diff changeset
   341
    }
hgs
parents:
diff changeset
   342
hgs
parents:
diff changeset
   343
template <int BufferSize>
hgs
parents:
diff changeset
   344
void DProfilerGenericSampler<BufferSize>::SetAdditionalSettings4(TInt aSettings)
hgs
parents:
diff changeset
   345
    {
hgs
parents:
diff changeset
   346
	LOGSTRING3("CProfilerGenericSampler<%d>::SetAdditionalSettings4 to 0x%x",BufferSize,aSettings);
hgs
parents:
diff changeset
   347
	iAdditionalSettings4 = aSettings;
hgs
parents:
diff changeset
   348
    }
hgs
parents:
diff changeset
   349
hgs
parents:
diff changeset
   350
template <int BufferSize>
hgs
parents:
diff changeset
   351
void DProfilerGenericSampler<BufferSize>::SetSamplingPeriod(TInt aSettings)
hgs
parents:
diff changeset
   352
    {
hgs
parents:
diff changeset
   353
	LOGSTRING3("CProfilerGenericSampler<%d>::SetSamplingPeriod to 0x%x",BufferSize,aSettings);
hgs
parents:
diff changeset
   354
	iSamplingPeriod = aSettings;
hgs
parents:
diff changeset
   355
    }
hgs
parents:
diff changeset
   356
hgs
parents:
diff changeset
   357
/*
hgs
parents:
diff changeset
   358
 *	
hgs
parents:
diff changeset
   359
 *	Just a test class that is derived from CProfilerGenericSampler
hgs
parents:
diff changeset
   360
 *	
hgs
parents:
diff changeset
   361
 */
hgs
parents:
diff changeset
   362
hgs
parents:
diff changeset
   363
template <int BufferSize>
hgs
parents:
diff changeset
   364
class DProfilerExampleSampler : public DProfilerGenericSampler<BufferSize>
hgs
parents:
diff changeset
   365
    {
hgs
parents:
diff changeset
   366
public:
hgs
parents:
diff changeset
   367
	TUint32 iSampleNumber;
hgs
parents:
diff changeset
   368
hgs
parents:
diff changeset
   369
	DProfilerExampleSampler(TInt aSamplerId);
hgs
parents:
diff changeset
   370
	~DProfilerExampleSampler();
hgs
parents:
diff changeset
   371
hgs
parents:
diff changeset
   372
	void Sample();
hgs
parents:
diff changeset
   373
	void Sample(TInt aCount, TInt aLastPc);
hgs
parents:
diff changeset
   374
    };
hgs
parents:
diff changeset
   375
hgs
parents:
diff changeset
   376
hgs
parents:
diff changeset
   377
/*
hgs
parents:
diff changeset
   378
 *	
hgs
parents:
diff changeset
   379
 *	Just a test class that is derived from CProfilerGenericSampler
hgs
parents:
diff changeset
   380
 *	
hgs
parents:
diff changeset
   381
 */
hgs
parents:
diff changeset
   382
hgs
parents:
diff changeset
   383
template <int BufferSize>
hgs
parents:
diff changeset
   384
DProfilerExampleSampler<BufferSize>::DProfilerExampleSampler(TInt aSamplerId) :
hgs
parents:
diff changeset
   385
	DProfilerGenericSampler<BufferSize>(aSamplerId) 
hgs
parents:
diff changeset
   386
    {
hgs
parents:
diff changeset
   387
    iSampleNumber = 0;
hgs
parents:
diff changeset
   388
	LOGSTRING2("CProfilerExampleSampler<%d>::CProfilerExampleSampler",BufferSize);	
hgs
parents:
diff changeset
   389
    }
hgs
parents:
diff changeset
   390
hgs
parents:
diff changeset
   391
template <int BufferSize>
hgs
parents:
diff changeset
   392
void DProfilerExampleSampler<BufferSize>::Sample()
hgs
parents:
diff changeset
   393
    {
hgs
parents:
diff changeset
   394
	LOGSTRING2("CProfilerExampleSampler<%d>::Sample",BufferSize);
hgs
parents:
diff changeset
   395
	TBuf8<20>* testiBuf = new TBuf8<20>;
hgs
parents:
diff changeset
   396
hgs
parents:
diff changeset
   397
	testiBuf->AppendNum((TInt)iSampleNumber);
hgs
parents:
diff changeset
   398
	iSampleNumber++;
hgs
parents:
diff changeset
   399
hgs
parents:
diff changeset
   400
	this->iSampleBuffer->AddSample((TUint8*)testiBuf->Ptr(),testiBuf->Length());
hgs
parents:
diff changeset
   401
	delete testiBuf;
hgs
parents:
diff changeset
   402
	return;
hgs
parents:
diff changeset
   403
    }
hgs
parents:
diff changeset
   404
hgs
parents:
diff changeset
   405
template <int BufferSize>
hgs
parents:
diff changeset
   406
void DProfilerExampleSampler<BufferSize>::Sample(TInt aCount, TInt aLastPc)
hgs
parents:
diff changeset
   407
    {
hgs
parents:
diff changeset
   408
	return;
hgs
parents:
diff changeset
   409
    }
hgs
parents:
diff changeset
   410
hgs
parents:
diff changeset
   411
template <int BufferSize>
hgs
parents:
diff changeset
   412
DProfilerExampleSampler<BufferSize>::~DProfilerExampleSampler()
hgs
parents:
diff changeset
   413
    {
hgs
parents:
diff changeset
   414
	LOGSTRING2("CProfilerExampleSampler<%d>::~CProfilerExampleSampler",BufferSize);		
hgs
parents:
diff changeset
   415
    }
hgs
parents:
diff changeset
   416
hgs
parents:
diff changeset
   417
#include <piprofiler/ProfilerGenericClassesKrn.inl>
hgs
parents:
diff changeset
   418
hgs
parents:
diff changeset
   419
#endif
hgs
parents:
diff changeset
   420
hgs
parents:
diff changeset
   421
hgs
parents:
diff changeset
   422
#endif