diff -r aa2539c91954 -r 1c2bb2fc7c87 perfsrv/piprofiler/plugins/GeneralsPlugin/inc/GppSamplerImpl.h --- a/perfsrv/piprofiler/plugins/GeneralsPlugin/inc/GppSamplerImpl.h Fri Oct 08 14:56:39 2010 +0300 +++ b/perfsrv/piprofiler/plugins/GeneralsPlugin/inc/GppSamplerImpl.h Tue Oct 26 16:20:32 2010 +0300 @@ -96,6 +96,7 @@ TInt iIsaEnd; TUint32 iMask; TUint32 iCpuSelector; + TInt iPrevTS; // previous sample's timestamp }; struct TProfilerGppSamplerData @@ -118,13 +119,13 @@ ~DProfilerGppSampler(); struct TProfilerGppSamplerData* GetExportData(); - void Sample(); + void Sample(TAny* aPtr); TInt Reset(DProfilerSampleStream* aStream, TUint32 aSyncOffset); TInt GetPeriod(); private: - DGppSamplerImpl gppSamplerImpl; - struct TProfilerGppSamplerData exportData; + DGppSamplerImpl iGppSamplerImpl; + struct TProfilerGppSamplerData iExportData; #ifdef __SMP__ TInt iCpuNumber; #endif @@ -140,97 +141,91 @@ DProfilerGppSampler::DProfilerGppSampler() : DProfilerGenericSampler(PROFILER_GPP_SAMPLER_ID) { - LOGSTRING2("CProfilerGppSampler<%d>::CProfilerGppSampler",BufferSize); + LOGSTRING2("DProfilerGppSampler<%d>::CProfilerGppSampler",BufferSize); } #else template DProfilerGppSampler::DProfilerGppSampler(TInt aCpuNumber) : DProfilerGenericSampler(PROFILER_GPP_SAMPLER_ID+(aCpuNumber*20)), iCpuNumber(aCpuNumber) { - LOGSTRING2("CProfilerGppSampler<%d>::CProfilerGppSampler",BufferSize); + LOGSTRING3("DProfilerGppSampler<%d>::DProfilerGppSampler, cpu %d",BufferSize, iCpuNumber); } #endif template DProfilerGppSampler::~DProfilerGppSampler() { - LOGSTRING2("CProfilerGppSampler<%d>::~CProfilerGppSampler",BufferSize); + LOGSTRING2("DProfilerGppSampler<%d>::~CProfilerGppSampler",BufferSize); } template TInt DProfilerGppSampler::Reset(DProfilerSampleStream* aStream, TUint32 aSyncOffset) { - LOGSTRING2("CProfilerGppSampler<%d>::Reset - calling superclass reset",BufferSize); + LOGSTRING2("DProfilerGppSampler<%d>::Reset - calling superclass reset",BufferSize); DProfilerGenericSampler::Reset(aStream, 0); - LOGSTRING2("CProfilerGppSampler<%d>::Reset - called superclass reset",BufferSize); + LOGSTRING2("DProfilerGppSampler<%d>::Reset - called superclass reset",BufferSize); - this->gppSamplerImpl.Reset(); + iGppSamplerImpl.Reset(); #ifdef __SMP__ - this->gppSamplerImpl.iCpuNumber = this->iCpuNumber; + iGppSamplerImpl.iCpuNumber = iCpuNumber; // set common start time for all CPU samplers - this->gppSamplerImpl.iStartTime = aSyncOffset; + iGppSamplerImpl.iStartTime = aSyncOffset; #endif - this->gppSamplerImpl.iGppSamplingPeriod = this->iSamplingPeriod; - this->gppSamplerImpl.iSampleCount = 0; - this->exportData.sampleNumber = 0; - this->exportData.lastPcValue = 0; - this->exportData.samplingPeriod = this->gppSamplerImpl.iGppSamplingPeriod; + iGppSamplerImpl.iGppSamplingPeriod = DProfilerGenericSampler::iSamplingPeriod; + iGppSamplerImpl.iSampleCount = 0; + iExportData.sampleNumber = 0; + iExportData.lastPcValue = 0; + iExportData.samplingPeriod = iGppSamplerImpl.iGppSamplingPeriod; - TInt length = gppSamplerImpl.CreateFirstSample(); - LOGSTRING3("CProfilerGPPSampler<%d>::Reset - got first sample, size %d",BufferSize,length); + TInt length = iGppSamplerImpl.CreateFirstSample(); + + LOGSTRING3("DProfilerGPPSampler<%d>::Reset - got first sample, size %d",BufferSize,length); - this->iSampleBuffer->AddSample(gppSamplerImpl.tempBuf,length); + //DProfilerGenericSampler::iSampleBuffer->AddSample(iGppSamplerImpl.tempBuf,length); + this->iSampleBuffer->AddSample(iGppSamplerImpl.tempBuf,length); // check if sampling period > 1 ms // NOTE: feature supported in Performance Investigator 2.01 and above - if(this->gppSamplerImpl.iGppSamplingPeriod > 1) + if(iGppSamplerImpl.iGppSamplingPeriod > 1) { // For Address/Thread (GPP) version 2.01 or above, the first word is the sampling period in milliseconds - TUint8* w = gppSamplerImpl.tempBuf; + TUint8* w(iGppSamplerImpl.tempBuf); - (*w++) = (this->gppSamplerImpl.iGppSamplingPeriod >> 24) & 0xFF; - (*w++) = (this->gppSamplerImpl.iGppSamplingPeriod >> 16) & 0xFF; - (*w++) = (this->gppSamplerImpl.iGppSamplingPeriod >> 8) & 0xFF; - (*w++) = (this->gppSamplerImpl.iGppSamplingPeriod) & 0xFF; + (*w++) = (iGppSamplerImpl.iGppSamplingPeriod >> 24) & 0xFF; + (*w++) = (iGppSamplerImpl.iGppSamplingPeriod >> 16) & 0xFF; + (*w++) = (iGppSamplerImpl.iGppSamplingPeriod >> 8) & 0xFF; + (*w++) = (iGppSamplerImpl.iGppSamplingPeriod) & 0xFF; - this->iSampleBuffer->AddSample(gppSamplerImpl.tempBuf,4); + //DProfilerGenericSampler::iSampleBuffer->AddSample(iGppSamplerImpl.tempBuf,4); + this->iSampleBuffer->AddSample(iGppSamplerImpl.tempBuf,4); } - LOGSTRING2("CProfilerGPPSampler<%d>::Reset finished",BufferSize); + LOGSTRING2("DProfilerGPPSampler<%d>::Reset finished",BufferSize); return KErrNone; } template -void DProfilerGppSampler::Sample() +void DProfilerGppSampler::Sample(TAny* aPtr) { - LOGSTRING2("CProfilerGppSampler<%d>::Sample",BufferSize); -// if(this->gppSamplerImpl.iSampleCount % 1000 == 0) -// { -//#ifdef __SMP__ -// if(this->iCpuNumber == 0) // print sample tick only from CPU 0 context -// { -//#endif -// Kern::Printf(("PIPROF SAMPLE TICK, #%d"),exportData.sampleNumber); -//#ifdef __SMP__ -// } -//#endif -// } - - TInt length(gppSamplerImpl.SampleImpl()); + LOGSTRING2("DProfilerGppSampler<%d>::Sample",BufferSize); + + TInt length(iGppSamplerImpl.SampleImpl()); - this->gppSamplerImpl.iSampleCount++; - this->exportData.sampleNumber += this->gppSamplerImpl.iGppSamplingPeriod; - this->exportData.lastPcValue = gppSamplerImpl.iLastPc; + iGppSamplerImpl.iSampleCount++; + iExportData.sampleNumber += iGppSamplerImpl.iGppSamplingPeriod; + iExportData.lastPcValue = iGppSamplerImpl.iLastPc; if(length > 0) { - this->iSampleBuffer->AddSample(gppSamplerImpl.tempBuf,length); + TInt ret(this->iSampleBuffer->AddSample(iGppSamplerImpl.tempBuf,length)); + if (ret != 0) + { + Kern::Printf(("DProfilerGppSampler<%d>::Sample() - add to sample buffer failed, loosing data, error = %d"),BufferSize,ret); + } } - - LOGSTRING3("CProfilerGppSampler<%d>::Sample - length %d",BufferSize,length); - + LOGSTRING3("DProfilerGppSampler<%d>::Sample - length %d",BufferSize,length); return; } @@ -238,14 +233,14 @@ template struct TProfilerGppSamplerData* DProfilerGppSampler::GetExportData() { - LOGSTRING2("CProfilerGppSampler<%d>::GetExportData",BufferSize); - return &(this->exportData); + LOGSTRING2("DProfilerGppSampler<%d>::GetExportData",BufferSize); + return &(iExportData); } template TInt DProfilerGppSampler::GetPeriod() { - return this->gppSamplerImpl.iGppSamplingPeriod; + return iGppSamplerImpl.iGppSamplingPeriod; } #endif