|
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 |