--- a/memspy/Engine/Source/SysMemTracker/MemSpyEngineHelperSysMemTrackerCycle.cpp Fri Aug 27 11:37:29 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,382 +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:
-*
-*/
-
-#include <memspy/engine/memspyenginehelpersysmemtrackercycle.h>
-
-// System includes
-#include <e32debug.h>
-#include <hal.h>
-#include <hal_data.h>
-
-// User includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineutils.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyenginehelperheap.h>
-#include <memspy/engine/memspyenginehelperchunk.h>
-#include <memspy/engine/memspyengineoutputsink.h>
-#include <memspy/engine/memspyengineoutputlist.h>
-#include <memspy/engine/memspyengineoutputsink.h>
-#include <memspy/engine/memspyenginehelpersysmemtrackercyclechange.h>
-
-// Literal constants
-_LIT( KMemSpySWMTDataFolderSpecification, "Data" );
-_LIT( KMemSpySWMTFolderSpecification, "System Wide MT\\Cycle %04d" );
-
-
-
-CMemSpyEngineHelperSysMemTrackerCycle::CMemSpyEngineHelperSysMemTrackerCycle( const TMemSpyEngineHelperSysMemTrackerConfig& aConfig, const CMemSpyEngineHelperSysMemTrackerCycle* aPreviousCycle )
-: iConfig( aConfig ), iPreviousCycle( aPreviousCycle ), iCycleNumber( 1 )
- {
- iTime.HomeTime();
- if ( aPreviousCycle )
- {
- iCycleNumber = aPreviousCycle->CycleNumber() + 1;
- }
- }
-
-
-CMemSpyEngineHelperSysMemTrackerCycle::~CMemSpyEngineHelperSysMemTrackerCycle()
- {
- delete iFixedItems;
- delete iCaption;
- delete iTimeFormatted;
- //
- DiscardChanges();
- iChangeDescriptors.Close();
- }
-
-
-void CMemSpyEngineHelperSysMemTrackerCycle::ConstructL()
- {
- iFixedItems = CMemSpyEngineOutputList::NewL();
-
- // Get time stamp
- TBuf<128> timeBuf;
- MemSpyEngineUtils::FormatTimeSimple( timeBuf, iTime );
- iTimeFormatted = timeBuf.AllocL();
-
- // Get free ram
- TInt freeRam = KErrNotFound;
- User::LeaveIfError( HAL::Get( HALData::EMemoryRAMFree, freeRam ) );
- iMemoryFree = freeRam;
- }
-
-
-CMemSpyEngineHelperSysMemTrackerCycle* CMemSpyEngineHelperSysMemTrackerCycle::NewLC( const TMemSpyEngineHelperSysMemTrackerConfig& aConfig, const CMemSpyEngineHelperSysMemTrackerCycle* aPreviousCycle )
- {
- CMemSpyEngineHelperSysMemTrackerCycle* self = new(ELeave) CMemSpyEngineHelperSysMemTrackerCycle( aConfig, aPreviousCycle );
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-EXPORT_C TInt CMemSpyEngineHelperSysMemTrackerCycle::CycleNumber() const
- {
- return iCycleNumber;
- }
-
-
-EXPORT_C const TTime& CMemSpyEngineHelperSysMemTrackerCycle::Time() const
- {
- return iTime;
- }
-
-
-EXPORT_C const TDesC& CMemSpyEngineHelperSysMemTrackerCycle::TimeFormatted() const
- {
- return *iTimeFormatted;
- }
-
-
-EXPORT_C const TDesC& CMemSpyEngineHelperSysMemTrackerCycle::Caption() const
- {
- return *iCaption;
- }
-
-
-EXPORT_C const TInt64& CMemSpyEngineHelperSysMemTrackerCycle::MemoryFree() const
- {
- return iMemoryFree;
- }
-
-
-EXPORT_C TInt64 CMemSpyEngineHelperSysMemTrackerCycle::MemoryFreePreviousCycle() const
- {
- TInt64 ret = MemoryFree();
- //
- if ( iPreviousCycle )
- {
- ret = iPreviousCycle->MemoryFree();
- }
- //
- return ret;
- }
-
-
-EXPORT_C TInt64 CMemSpyEngineHelperSysMemTrackerCycle::MemoryDelta() const
- {
- const TInt64 ret = ( iMemoryFree - iMemoryUsed );
- return ret;
- }
-
-
-EXPORT_C TInt CMemSpyEngineHelperSysMemTrackerCycle::ChangeCount() const
- {
- return iChangeCount;
- }
-
-
-EXPORT_C TInt CMemSpyEngineHelperSysMemTrackerCycle::MdcaCount() const
- {
- return iFixedItems->Count();
- }
-
-
-EXPORT_C TPtrC CMemSpyEngineHelperSysMemTrackerCycle::MdcaPoint( TInt aIndex ) const
- {
- return iFixedItems->MdcaPoint( aIndex );
- }
-
-
-void CMemSpyEngineHelperSysMemTrackerCycle::FinalizeL()
- {
- _LIT( KChange, "change" );
- _LIT( KChanges, "changes" );
-
- // Save change count
- iChangeCount = iChangeDescriptors.Count();
-
- // First make the main caption
- TMemSpySizeText sizeText;
- TMemSpySizeText deltaText;
- TPtrC pChangeText( KChange );
-
- // Get free RAM formatted as a descriptor
- sizeText = MemSpyEngineUtils::FormatSizeTextPrecise( MemoryFree() );
-
- // Get delta formatted as a descriptor
- const TInt64 delta( MemoryDelta() );
- deltaText = MemSpyEngineUtils::FormatSizeTextPrecise( delta );
-
- // Get number of changed threads as a descriptor
- if ( ChangeCount() == 0 || ChangeCount() > 1 )
- {
- pChangeText.Set( KChanges );
- }
-
- // Now make the caption
- if ( MemoryDelta() != 0 )
- {
- TBuf<300> buf;
- _LIT( KMainCaption1, "\t[%03d] F: %S\t\tD: %S, %d %S" );
- buf.Format( KMainCaption1, CycleNumber(), &sizeText, &deltaText, ChangeCount(), &pChangeText );
- HBufC* caption = buf.AllocL();
- delete iCaption;
- iCaption = caption;
- }
- else
- {
- TBuf<300> buf;
- _LIT( KMainCaption2, "\t[%03d] F: %S\t\tNo Delta, %d %S" );
- buf.Format( KMainCaption2, CycleNumber(), &sizeText, ChangeCount(), &pChangeText );
- HBufC* caption = buf.AllocL();
- delete iCaption;
- iCaption = caption;
- }
-
- // Now make the child entries
- if ( CycleNumber() > 0 )
- {
- _LIT(KItem1a, "Cycle");
- iFixedItems->AddItemL( KItem1a, CycleNumber() );
- }
- else
- {
- _LIT(KItem1a, "Baseline");
- iFixedItems->AddItemL( KItem1a );
- }
- //
- _LIT(KItem1c, "Time");
- iFixedItems->AddItemL( KItem1c, iTimeFormatted );
- //
- _LIT(KItem2, "Memory Free");
- iFixedItems->AddItemL( KItem2, sizeText );
- //
- if ( CycleNumber() > 0 )
- {
- _LIT(KItem2b, "Memory Change (vs. Last Cycle)");
- sizeText = MemSpyEngineUtils::FormatSizeTextPrecise( MemoryFree() - MemoryFreePreviousCycle() );
- iFixedItems->AddItemL( KItem2b, sizeText );
- //
- _LIT(KItem3, "Number of Changes");
- iFixedItems->AddItemL( KItem3, ChangeCount() );
- }
- }
-
-
-void CMemSpyEngineHelperSysMemTrackerCycle::DiscardChanges()
- {
- iChangeDescriptors.ResetAndDestroy();
- }
-
-
-CMemSpyEngineHelperSysMemTrackerCycleChange& CMemSpyEngineHelperSysMemTrackerCycle::ChangeAt( TInt aIndex )
- {
- return *iChangeDescriptors[ aIndex ];
- }
-
-
-void CMemSpyEngineHelperSysMemTrackerCycle::GetDataFolderL( RFs& aFsSession, TDes& aFolder )
- {
- TFileName fileName;
- fileName.Format( KMemSpySWMTFolderSpecification, CycleNumber() );
-
- CMemSpyEngineSinkMetaData* metaData = CMemSpyEngineSinkMetaData::NewL( KNullDesC, fileName, KNullDesC, ETrue, EFalse, Time() );
- CleanupStack::PushL( metaData );
- MemSpyEngineUtils::GetFolderL( aFsSession, aFolder, *metaData );
- CleanupStack::PopAndDestroy( metaData );
-
- // This get's us something like:
- //
- // E:\MemSpy\System Wide MT\Data - Cycle 001\Log.txt
- //
- // Now we must strip off the filename and return just the folder specification
- const TParsePtrC parser( aFolder );
- if ( parser.NamePresent() && parser.ExtPresent() )
- {
- const TPtrC nameAndExt( parser.NameAndExt() );
- aFolder.SetLength( aFolder.Length() - nameAndExt.Length() );
- }
-
- // Add "Data" on to the end so that we put all data in a clearly marked subdir)
- aFolder.Append( KMemSpySWMTDataFolderSpecification );
- TRACE( RDebug::Print(_L("CMemSpyEngineHelperSysMemTrackerCycle::GetDataFolderL() - folder1: %S"), &aFolder ) );
-
- // Now we should return something like:
- //
- // E:\MemSpy\System Wide MT\Data - Cycle 001
- TRACE( RDebug::Print(_L("CMemSpyEngineHelperSysMemTrackerCycle::GetDataFolderL() - folder2: %S"), &aFolder ) );
-
- const TInt err = aFsSession.MkDirAll( aFolder );
- if ( !(err == KErrNone || err == KErrAlreadyExists ) )
- {
- User::LeaveIfError( err );
- }
- }
-
-
-void CMemSpyEngineHelperSysMemTrackerCycle::DataStreamBeginL( CMemSpyEngineOutputSink& aSink, const TDesC& aContext )
- {
- // First make the folder...
- HBufC* folder = HBufC::NewLC( KMemSpySWMTFolderSpecification().Length() + 10 );
- TPtr pFolder( folder->Des() );
- pFolder.Format( KMemSpySWMTFolderSpecification, CycleNumber() );
-
- // Now start the data stream
- aSink.DataStreamBeginL( aContext, pFolder, KMemSpyLogDefaultExtension, ETrue, EFalse );
- CleanupStack::PopAndDestroy( folder );
- }
-
-
-void CMemSpyEngineHelperSysMemTrackerCycle::DataStreamEndL( CMemSpyEngineOutputSink& aSink )
- {
- aSink.DataStreamEndL();
- }
-
-
-void CMemSpyEngineHelperSysMemTrackerCycle::AddAndPopL( CMemSpyEngineHelperSysMemTrackerCycleChange* aInfo )
- {
- iChangeDescriptors.AppendL( aInfo );
- CleanupStack::Pop( aInfo );
- }
-
-
-const TMemSpyEngineHelperSysMemTrackerConfig& CMemSpyEngineHelperSysMemTrackerCycle::Config() const
- {
- return iConfig;
- }
-
-
-void CMemSpyEngineHelperSysMemTrackerCycle::AddToMemoryUsed( TInt aValue )
- {
- iMemoryUsed += aValue;
- }
-
-
-void CMemSpyEngineHelperSysMemTrackerCycle::AddToMemoryHeapAllocs( TInt aValue )
- {
- iMemoryHeapAllocs += aValue;
- }
-
-
-void CMemSpyEngineHelperSysMemTrackerCycle::AddToMemoryHeapFrees( TInt aValue )
- {
- iMemoryHeapFrees += aValue;
- }
-
-
-void CMemSpyEngineHelperSysMemTrackerCycle::AddToCellCountFree( TInt aValue )
- {
- iCellCountsFrees += aValue;
- }
-
-
-void CMemSpyEngineHelperSysMemTrackerCycle::AddToCellCountAlloc( TInt aValue )
- {
- iCellCountsAllocs += aValue;
- }
-
-
-const TInt64& CMemSpyEngineHelperSysMemTrackerCycle::MemoryUsed() const
- {
- return iMemoryUsed;
- }
-
-
-const TInt64& CMemSpyEngineHelperSysMemTrackerCycle::MemoryHeapAllocs() const
- {
- return iMemoryHeapAllocs;
- }
-
-
-const TInt64& CMemSpyEngineHelperSysMemTrackerCycle::MemoryHeapFrees() const
- {
- return iMemoryHeapFrees;
- }
-
-
-const TInt64& CMemSpyEngineHelperSysMemTrackerCycle::MemoryHeapCellCountAlloc() const
- {
- return iCellCountsAllocs;
- }
-
-
-const TInt64& CMemSpyEngineHelperSysMemTrackerCycle::MemoryHeapCellCountFree() const
- {
- return iCellCountsFrees;
- }
-
-
-
-
-
-
-