perfsrv/memspy/Engine/Source/SysMemTracker/MemSpyEngineHelperSysMemTrackerEntrySystemMemory.cpp
changeset 51 98307c651589
parent 0 a03f92240627
equal deleted inserted replaced
42:0ff24a8f6ca2 51:98307c651589
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include "MemSpyEngineHelperSysMemTrackerEntrySystemMemory.h"
       
    19 
       
    20 // System includes
       
    21 #include <e32base.h>
       
    22 #include <badesca.h>
       
    23 #include <hal.h>
       
    24 #include <hal_data.h>
       
    25 
       
    26 // Driver includes
       
    27 #include <memspy/driver/memspydriverclient.h>
       
    28 
       
    29 // User includes
       
    30 #include <memspy/engine/memspyengine.h>
       
    31 #include <memspy/engine/memspyengineutils.h>
       
    32 #include <memspy/engine/memspyengineoutputsink.h>
       
    33 #include <memspy/engine/memspyengineoutputlist.h>
       
    34 #include <memspy/engine/memspyenginehelperheap.h>
       
    35 #include <memspy/engine/memspyenginehelperchunk.h>
       
    36 #include <memspy/engine/memspyengineobjectthread.h>
       
    37 #include <memspy/engine/memspyengineobjectprocess.h>
       
    38 #include <memspy/engine/memspyengineobjectcontainer.h>
       
    39 #include <memspy/engine/memspyenginehelpercodesegment.h>
       
    40 #include "MemSpyEngineHelperSysMemTrackerImp.h"
       
    41 #include <memspy/engine/memspyenginehelpersysmemtrackercycle.h>
       
    42 #include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
       
    43 
       
    44 
       
    45 
       
    46 
       
    47 
       
    48 CMemSpyEngineHelperSysMemTrackerEntrySystemMemory::CMemSpyEngineHelperSysMemTrackerEntrySystemMemory( CMemSpyEngineHelperSysMemTrackerImp& aTracker, TSystemMemoryType aType )
       
    49 :   CMemSpyEngineHelperSysMemTrackerEntry( aTracker, EMemSpyEngineSysMemTrackerTypeSystemMemory ), iType( aType )
       
    50     {
       
    51     }
       
    52 
       
    53 
       
    54 CMemSpyEngineHelperSysMemTrackerEntrySystemMemory::~CMemSpyEngineHelperSysMemTrackerEntrySystemMemory()
       
    55     {
       
    56     }
       
    57 
       
    58 
       
    59 void CMemSpyEngineHelperSysMemTrackerEntrySystemMemory::ConstructL()
       
    60     {
       
    61     if ( iType == ETypeFree )
       
    62         {
       
    63         HAL::Get( HALData::EMemoryRAMFree, iCurrent );
       
    64         }
       
    65     else if ( iType == ETypeTotal )
       
    66         {
       
    67         HAL::Get( HALData::EMemoryRAM, iCurrent );
       
    68         }
       
    69     //
       
    70     iLast = iCurrent;
       
    71     }
       
    72 
       
    73 
       
    74 CMemSpyEngineHelperSysMemTrackerEntrySystemMemory* CMemSpyEngineHelperSysMemTrackerEntrySystemMemory::NewLC( CMemSpyEngineHelperSysMemTrackerImp& aTracker, TSystemMemoryType aType )
       
    75     {
       
    76     CMemSpyEngineHelperSysMemTrackerEntrySystemMemory* self = new(ELeave) CMemSpyEngineHelperSysMemTrackerEntrySystemMemory( aTracker, aType );
       
    77     CleanupStack::PushL( self );
       
    78     self->ConstructL();
       
    79     return self;
       
    80     }
       
    81 
       
    82 
       
    83 TUint64 CMemSpyEngineHelperSysMemTrackerEntrySystemMemory::Key() const
       
    84     {
       
    85     const TUint32 val = ( Type() << 28 ); 
       
    86     TUint64 ret = val;
       
    87     ret <<= 32;
       
    88     ret += static_cast<TInt>( iType );
       
    89     return ret;
       
    90     }
       
    91 
       
    92 
       
    93 void CMemSpyEngineHelperSysMemTrackerEntrySystemMemory::UpdateFromL( const CMemSpyEngineHelperSysMemTrackerEntry& aEntry )
       
    94     {
       
    95     const CMemSpyEngineHelperSysMemTrackerEntrySystemMemory& entry = static_cast< const CMemSpyEngineHelperSysMemTrackerEntrySystemMemory& >( aEntry );
       
    96     
       
    97     // Update state
       
    98     iLast = iCurrent;
       
    99     iCurrent = entry.iCurrent;
       
   100     }
       
   101 
       
   102 
       
   103 void CMemSpyEngineHelperSysMemTrackerEntrySystemMemory::CreateChangeDescriptorL( CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
       
   104     {
       
   105     CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory* changeDescriptor = CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory::NewLC( Attributes(), iType, iCurrent, iLast );
       
   106     aCycle.AddAndPopL( changeDescriptor );
       
   107     }
       
   108 
       
   109 
       
   110 TBool CMemSpyEngineHelperSysMemTrackerEntrySystemMemory::HasChangedL( const TMemSpyEngineHelperSysMemTrackerConfig& /*aConfig*/ ) const
       
   111     {
       
   112     const TBool hasChanged = ( iCurrent != iLast );
       
   113     return hasChanged;
       
   114     }
       
   115 
       
   116 
       
   117 
       
   118 
       
   119 
       
   120 
       
   121 
       
   122 
       
   123 
       
   124 
       
   125 
       
   126 
       
   127 
       
   128 
       
   129 
       
   130 
       
   131 
       
   132 
       
   133 
       
   134 
       
   135 
       
   136 
       
   137 
       
   138 
       
   139 
       
   140 
       
   141 
       
   142 
       
   143 
       
   144 
       
   145 
       
   146 CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory::CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory( TUint8 aAttribs, TSystemMemoryType aType, TInt aCurrent, TInt aLast )
       
   147 :   CMemSpyEngineHelperSysMemTrackerCycleChange( aAttribs ), iType( aType ), iCurrent( aCurrent ), iLast( aLast )
       
   148     {
       
   149     }
       
   150 
       
   151 
       
   152 CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory::~CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory()
       
   153     {
       
   154     }
       
   155 
       
   156 
       
   157 void CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory::ConstructL()
       
   158     {
       
   159     BaseConstructL();
       
   160     }
       
   161 
       
   162 
       
   163 CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory* CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory::NewLC( TUint8 aAttribs, TSystemMemoryType aType, TInt aCurrent, TInt aLast )
       
   164     {
       
   165     CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory* self = new(ELeave) CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory( aAttribs, aType, aCurrent, aLast );
       
   166     CleanupStack::PushL( self );
       
   167     self->ConstructL();
       
   168     return self;
       
   169     }
       
   170 
       
   171 
       
   172 TMemSpyEngineSysMemTrackerType CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory::Type() const
       
   173     {
       
   174     return EMemSpyEngineSysMemTrackerTypeSystemMemory;
       
   175     }
       
   176    
       
   177 
       
   178 void CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory::OutputHeaderL( CMemSpyEngineOutputSink& aSink, CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
       
   179     {
       
   180     _LIT( KHeaderSystemMemory, "Type, Name, Size, Attribs");
       
   181     aSink.OutputLineL( KHeaderSystemMemory );
       
   182     }
       
   183  
       
   184 
       
   185 void CMemSpyEngineHelperSysMemTrackerCycleChangeSystemMemory::OutputContentL( CMemSpyEngineOutputSink& aSink, CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
       
   186     {
       
   187     _LIT( KFormat, "%S,%S,%d,%S" );
       
   188     //
       
   189     TMemSpySWMTTypeName category;
       
   190     FormatType( category );
       
   191     //
       
   192     TBuf<20> attribs;
       
   193     FormatAttributes( attribs );
       
   194     //
       
   195     _LIT( KTypeSystemMemoryFree, "Free" );
       
   196     _LIT( KTypeSystemMemoryTotal, "Total" );
       
   197     TBuf<20> type( KTypeSystemMemoryFree );
       
   198     if ( iType == ETypeTotal )
       
   199         {
       
   200         type = KTypeSystemMemoryTotal;
       
   201         }
       
   202     //
       
   203     aSink.OutputLineFormattedL( KFormat, &category, &type, iCurrent, &attribs );
       
   204     }
       
   205 
       
   206