perfsrv/memspy/memspy_plat/memspy_api/include/memspy/driver/shared/MemSpyDriverObjectsShared.h
author hgs
Tue, 26 Oct 2010 16:20:32 +0300
changeset 62 1c2bb2fc7c87
parent 51 98307c651589
permissions -rw-r--r--
201043
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
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
#ifndef MEMSPYDRIVEROBJECTSSHARED_H
hgs
parents:
diff changeset
    19
#define MEMSPYDRIVEROBJECTSSHARED_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
// System includes
hgs
parents:
diff changeset
    22
#include <u32std.h>
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
// User includes
hgs
parents:
diff changeset
    25
#include <memspy/driver/memspydriverenumerationsshared.h>
hgs
parents:
diff changeset
    26
#include <memspy/driver/memspydriverobjectssharedrheap.h>
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
// Classes referenced
hgs
parents:
diff changeset
    29
class CActiveScheduler;
hgs
parents:
diff changeset
    30
class CTrapCleanup;
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
/**
hgs
parents:
diff changeset
    35
 * ARM user registers.
hgs
parents:
diff changeset
    36
 * Size must be multiple of 4 bytes.
hgs
parents:
diff changeset
    37
 */
hgs
parents:
diff changeset
    38
class TMemSpyDriverRegSet
hgs
parents:
diff changeset
    39
	{
hgs
parents:
diff changeset
    40
public:
hgs
parents:
diff changeset
    41
	enum { KRegCount = 16 };
hgs
parents:
diff changeset
    42
	TUint32 iRn[KRegCount];
hgs
parents:
diff changeset
    43
	TUint32 iCpsr;
hgs
parents:
diff changeset
    44
	};
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
/** 
hgs
parents:
diff changeset
    48
 * ARM-specific exception-related data.
hgs
parents:
diff changeset
    49
 * Size must be multiple of 4 bytes.
hgs
parents:
diff changeset
    50
 */ 
hgs
parents:
diff changeset
    51
class TMemSpyDriverCpuExcInfo
hgs
parents:
diff changeset
    52
	{
hgs
parents:
diff changeset
    53
public:
hgs
parents:
diff changeset
    54
	enum TExcCode 
hgs
parents:
diff changeset
    55
		{ 
hgs
parents:
diff changeset
    56
		EPrefetchAbort=0,
hgs
parents:
diff changeset
    57
		EDataAbort=1,
hgs
parents:
diff changeset
    58
		EUndefinedOpcode=2,
hgs
parents:
diff changeset
    59
		};
hgs
parents:
diff changeset
    60
public:
hgs
parents:
diff changeset
    61
	TExcCode iExcCode;
hgs
parents:
diff changeset
    62
	/** Point to instruction which caused exception */
hgs
parents:
diff changeset
    63
	TUint32 iFaultPc;
hgs
parents:
diff changeset
    64
	/** 
hgs
parents:
diff changeset
    65
     Address which caused exception (System Control Coprocessor Fault
hgs
parents:
diff changeset
    66
	 Address Register)
hgs
parents:
diff changeset
    67
	*/
hgs
parents:
diff changeset
    68
	TUint32 iFaultAddress;
hgs
parents:
diff changeset
    69
	/** System Control Coprocessor Fault Status Register */
hgs
parents:
diff changeset
    70
	TUint32 iFaultStatus;
hgs
parents:
diff changeset
    71
	/** R13 supervisor mode banked register */
hgs
parents:
diff changeset
    72
	TUint32 iR13Svc;
hgs
parents:
diff changeset
    73
	/** R14 supervisor mode banked register */
hgs
parents:
diff changeset
    74
	TUint32 iR14Svc;
hgs
parents:
diff changeset
    75
	/** SPSR supervisor mode banked register */
hgs
parents:
diff changeset
    76
	TUint32 iSpsrSvc;
hgs
parents:
diff changeset
    77
	};
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
/**
hgs
parents:
diff changeset
    84
 * Stack water mark parameters
hgs
parents:
diff changeset
    85
 */
hgs
parents:
diff changeset
    86
struct TMemSpyDriverStackWatermarkParams
hgs
parents:
diff changeset
    87
    {
hgs
parents:
diff changeset
    88
    TUint8* iStackDataAddress;
hgs
parents:
diff changeset
    89
    TInt iStackDataLength;
hgs
parents:
diff changeset
    90
    TRequestStatus* iStatus;
hgs
parents:
diff changeset
    91
    TLinAddr iUserStackPointer;
hgs
parents:
diff changeset
    92
    };
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
/**
hgs
parents:
diff changeset
    98
 * Stack information block.
hgs
parents:
diff changeset
    99
 */
hgs
parents:
diff changeset
   100
class TMemSpyDriverStackInfo
hgs
parents:
diff changeset
   101
	{
hgs
parents:
diff changeset
   102
public:
hgs
parents:
diff changeset
   103
    TUint iUserStackPointer;
hgs
parents:
diff changeset
   104
	TUint32 iUserStackBase;
hgs
parents:
diff changeset
   105
	TInt iUserStackSize;
hgs
parents:
diff changeset
   106
    TUint32 iUserStackHighWatermark;
hgs
parents:
diff changeset
   107
    //
hgs
parents:
diff changeset
   108
    TUint iSupervisorStackPointer;
hgs
parents:
diff changeset
   109
	TUint32 iSupervisorStackBase;
hgs
parents:
diff changeset
   110
	TInt iSupervisorStackSize;
hgs
parents:
diff changeset
   111
    TUint32 iSupervisorStackHighWatermark;
hgs
parents:
diff changeset
   112
	};
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
/**
hgs
parents:
diff changeset
   116
 * Basic thread information block
hgs
parents:
diff changeset
   117
 */
hgs
parents:
diff changeset
   118
class TMemSpyDriverThreadInfoBase
hgs
parents:
diff changeset
   119
	{
hgs
parents:
diff changeset
   120
public:
hgs
parents:
diff changeset
   121
    // Registers
hgs
parents:
diff changeset
   122
    TMemSpyDriverRegSet iCpu;
hgs
parents:
diff changeset
   123
    
hgs
parents:
diff changeset
   124
    // Stack
hgs
parents:
diff changeset
   125
    TMemSpyDriverStackInfo iStackInfo;
hgs
parents:
diff changeset
   126
    
hgs
parents:
diff changeset
   127
    // User thread framework
hgs
parents:
diff changeset
   128
	RAllocator* iAllocator;
hgs
parents:
diff changeset
   129
    CActiveScheduler* iScheduler;
hgs
parents:
diff changeset
   130
	};
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
/**
hgs
parents:
diff changeset
   134
 * Thread information block.
hgs
parents:
diff changeset
   135
 */
hgs
parents:
diff changeset
   136
class TMemSpyDriverThreadInfo : public TMemSpyDriverThreadInfoBase
hgs
parents:
diff changeset
   137
	{
hgs
parents:
diff changeset
   138
public:
hgs
parents:
diff changeset
   139
	TFullName iFullName;
hgs
parents:
diff changeset
   140
 
hgs
parents:
diff changeset
   141
    // Basic properties
hgs
parents:
diff changeset
   142
	TUint iPid;
hgs
parents:
diff changeset
   143
    TThreadPriority iThreadPriority;
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
    // Exit information
hgs
parents:
diff changeset
   146
	TInt iExitReason;
hgs
parents:
diff changeset
   147
    TExitType iExitType;
hgs
parents:
diff changeset
   148
    TExitCategoryName iExitCategory;
hgs
parents:
diff changeset
   149
	};
hgs
parents:
diff changeset
   150
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
/**
hgs
parents:
diff changeset
   153
 * Process information block.
hgs
parents:
diff changeset
   154
 */
hgs
parents:
diff changeset
   155
class TMemSpyDriverProcessInfo
hgs
parents:
diff changeset
   156
    {
hgs
parents:
diff changeset
   157
public:
hgs
parents:
diff changeset
   158
    inline TUint32 SID() const { return iSecurityInfo.iSecureId; }
hgs
parents:
diff changeset
   159
    inline TUint32 VID() const { return iSecurityInfo.iVendorId; }
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
public:
hgs
parents:
diff changeset
   162
    TUidType iUids;
hgs
parents:
diff changeset
   163
    TUint32 iFlags;
hgs
parents:
diff changeset
   164
    TInt iGeneration;
hgs
parents:
diff changeset
   165
    TInt iPriority;
hgs
parents:
diff changeset
   166
    SSecurityInfo iSecurityInfo;
hgs
parents:
diff changeset
   167
    };
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
/** 
hgs
parents:
diff changeset
   171
 * Code Segment Information Block 
hgs
parents:
diff changeset
   172
 */
hgs
parents:
diff changeset
   173
class TMemSpyDriverCodeSegInfo
hgs
parents:
diff changeset
   174
	{
hgs
parents:
diff changeset
   175
public:
hgs
parents:
diff changeset
   176
    inline TMemSpyDriverCodeSegInfo()
hgs
parents:
diff changeset
   177
        : iSize( 0 )
hgs
parents:
diff changeset
   178
        {
hgs
parents:
diff changeset
   179
        }
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
public:
hgs
parents:
diff changeset
   182
    TUint32 iSize;
hgs
parents:
diff changeset
   183
    TCodeSegCreateInfo iCreateInfo;
hgs
parents:
diff changeset
   184
    TProcessMemoryInfo iMemoryInfo;
hgs
parents:
diff changeset
   185
	};
hgs
parents:
diff changeset
   186
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
/**
hgs
parents:
diff changeset
   192
 * Generic object related
hgs
parents:
diff changeset
   193
 */
hgs
parents:
diff changeset
   194
class TMemSpyDriverHandleInfoGeneric
hgs
parents:
diff changeset
   195
    {
hgs
parents:
diff changeset
   196
public: // Supported for all types
hgs
parents:
diff changeset
   197
	TBuf8<KMaxName> iName; // FullName
hgs
parents:
diff changeset
   198
    TAny* iHandle;
hgs
parents:
diff changeset
   199
    TMemSpyDriverContainerType iType;
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
public: // Type-specific members
hgs
parents:
diff changeset
   202
hgs
parents:
diff changeset
   203
    // For Process, thread, chunk (owning process id), server (owning thread id)
hgs
parents:
diff changeset
   204
    TInt iId;
hgs
parents:
diff changeset
   205
hgs
parents:
diff changeset
   206
    // For Chunk, Library
hgs
parents:
diff changeset
   207
    TUint32 iSize;
hgs
parents:
diff changeset
   208
   
hgs
parents:
diff changeset
   209
    // For Semaphore, Mutex, Server
hgs
parents:
diff changeset
   210
    TInt iCount;
hgs
parents:
diff changeset
   211
hgs
parents:
diff changeset
   212
    // For Mutex
hgs
parents:
diff changeset
   213
    TInt iWaitCount;
hgs
parents:
diff changeset
   214
hgs
parents:
diff changeset
   215
    // For Server, Session
hgs
parents:
diff changeset
   216
    TIpcSessionType iSessionType;
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
    // For Timer
hgs
parents:
diff changeset
   219
    TMemSpyDriverTimerType iTimerType;
hgs
parents:
diff changeset
   220
    TMemSpyDriverTimerState iTimerState;
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
    // For Logical channel
hgs
parents:
diff changeset
   223
    TInt iOpenChannels;
hgs
parents:
diff changeset
   224
    
hgs
parents:
diff changeset
   225
    // For most of the object types
hgs
parents:
diff changeset
   226
	TBuf8<KMaxName> iNameDetail; // Name
hgs
parents:
diff changeset
   227
    TInt iAccessCount;
hgs
parents:
diff changeset
   228
    TInt iUniqueID;
hgs
parents:
diff changeset
   229
    TUint iProtection;
hgs
parents:
diff changeset
   230
    TUint8* iAddressOfKernelOwner;
hgs
parents:
diff changeset
   231
    TInt iPriority;
hgs
parents:
diff changeset
   232
    TUint8* iAddressOfOwningProcess;
hgs
parents:
diff changeset
   233
    TUint iCreatorId;
hgs
parents:
diff changeset
   234
    TUint iSecurityZone;
hgs
parents:
diff changeset
   235
    TInt iAttributes;
hgs
parents:
diff changeset
   236
    TUint8* iAddressOfDataBssStackChunk;
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
    // For Server, Session
hgs
parents:
diff changeset
   239
    TUint8* iAddressOfOwningThread;
hgs
parents:
diff changeset
   240
    TUint8* iAddressOfServer;
hgs
parents:
diff changeset
   241
    TUint16 iTotalAccessCount;
hgs
parents:
diff changeset
   242
    TUint8 iSvrSessionType;
hgs
parents:
diff changeset
   243
    TInt iMsgCount;
hgs
parents:
diff changeset
   244
    TInt iMsgLimit;
hgs
parents:
diff changeset
   245
    
hgs
parents:
diff changeset
   246
    // For chunk
hgs
parents:
diff changeset
   247
    TInt iMaxSize;
hgs
parents:
diff changeset
   248
    TInt iBottom;
hgs
parents:
diff changeset
   249
    TInt iTop;
hgs
parents:
diff changeset
   250
    TInt iStartPos;
hgs
parents:
diff changeset
   251
    TUint iControllingOwner;
hgs
parents:
diff changeset
   252
    TUint iRestrictions;
hgs
parents:
diff changeset
   253
    TUint iMapAttr;
hgs
parents:
diff changeset
   254
    TUint iChunkType;
hgs
parents:
diff changeset
   255
    TBuf8<KMaxName> iNameOfOwner; // chunk, server
hgs
parents:
diff changeset
   256
    
hgs
parents:
diff changeset
   257
    // For library
hgs
parents:
diff changeset
   258
    TInt iMapCount;
hgs
parents:
diff changeset
   259
    TUint8 iState;
hgs
parents:
diff changeset
   260
    TUint8* iAddressOfCodeSeg;
hgs
parents:
diff changeset
   261
    
hgs
parents:
diff changeset
   262
    // Semaphore, mutex, condvar
hgs
parents:
diff changeset
   263
    TUint8 iResetting;
hgs
parents:
diff changeset
   264
    TUint8 iOrder;
hgs
parents:
diff changeset
   265
    
hgs
parents:
diff changeset
   266
    // For Logical/Physical device
hgs
parents:
diff changeset
   267
    TVersion iVersion;
hgs
parents:
diff changeset
   268
    TUint iParseMask;
hgs
parents:
diff changeset
   269
    TUint iUnitsMask;
hgs
parents:
diff changeset
   270
    
hgs
parents:
diff changeset
   271
    // For change notifier
hgs
parents:
diff changeset
   272
    TUint iChanges;
hgs
parents:
diff changeset
   273
    };
hgs
parents:
diff changeset
   274
hgs
parents:
diff changeset
   275
hgs
parents:
diff changeset
   276
hgs
parents:
diff changeset
   277
/**
hgs
parents:
diff changeset
   278
 *
hgs
parents:
diff changeset
   279
 */
hgs
parents:
diff changeset
   280
class TMemSpyDriverServerSessionInfo
hgs
parents:
diff changeset
   281
    {
hgs
parents:
diff changeset
   282
public: // Enumerations
hgs
parents:
diff changeset
   283
    enum TOwnerType
hgs
parents:
diff changeset
   284
        {
hgs
parents:
diff changeset
   285
        EOwnerNone = -1,
hgs
parents:
diff changeset
   286
        EOwnerThread = 0,
hgs
parents:
diff changeset
   287
        EOwnerProcess
hgs
parents:
diff changeset
   288
        };
hgs
parents:
diff changeset
   289
hgs
parents:
diff changeset
   290
public:
hgs
parents:
diff changeset
   291
    TInt iOwnerId;
hgs
parents:
diff changeset
   292
    TOwnerType iOwnerType;
hgs
parents:
diff changeset
   293
    TBuf8<KMaxName> iName;
hgs
parents:
diff changeset
   294
    TIpcSessionType iSessionType;
hgs
parents:
diff changeset
   295
    TUint8* iAddress;
hgs
parents:
diff changeset
   296
    };
hgs
parents:
diff changeset
   297
hgs
parents:
diff changeset
   298
hgs
parents:
diff changeset
   299
hgs
parents:
diff changeset
   300
/**
hgs
parents:
diff changeset
   301
 *
hgs
parents:
diff changeset
   302
 */
hgs
parents:
diff changeset
   303
class TMemSpyDriverProcessInspectionInfo
hgs
parents:
diff changeset
   304
    {
hgs
parents:
diff changeset
   305
public:
hgs
parents:
diff changeset
   306
    inline TMemSpyDriverProcessInspectionInfo()
hgs
parents:
diff changeset
   307
        : iProcessId( 0 ),
hgs
parents:
diff changeset
   308
          iMemoryHeap( 0 ),
hgs
parents:
diff changeset
   309
          iMemoryStack( 0 ),
hgs
parents:
diff changeset
   310
          iMemoryGlobalData( 0 ),
hgs
parents:
diff changeset
   311
          iMemoryChunkLocal( 0 ),
hgs
parents:
diff changeset
   312
          iMemoryChunkShared( 0 )
hgs
parents:
diff changeset
   313
        {
hgs
parents:
diff changeset
   314
        }
hgs
parents:
diff changeset
   315
hgs
parents:
diff changeset
   316
public: // API
hgs
parents:
diff changeset
   317
    inline TUint32 TotalIncShared() const
hgs
parents:
diff changeset
   318
        {
hgs
parents:
diff changeset
   319
        const TUint32 ret = TotalExcShared() + iMemoryChunkShared;
hgs
parents:
diff changeset
   320
        return ret;
hgs
parents:
diff changeset
   321
        }
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
    inline TUint32 TotalExcShared() const
hgs
parents:
diff changeset
   324
        {
hgs
parents:
diff changeset
   325
        const TUint32 ret = iMemoryHeap + iMemoryStack + iMemoryChunkLocal + iMemoryGlobalData;
hgs
parents:
diff changeset
   326
        return ret;
hgs
parents:
diff changeset
   327
        }
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
public:
hgs
parents:
diff changeset
   330
    TUint32 iProcessId;
hgs
parents:
diff changeset
   331
    //
hgs
parents:
diff changeset
   332
    TUint32 iMemoryHeap;
hgs
parents:
diff changeset
   333
    TUint32 iMemoryStack;
hgs
parents:
diff changeset
   334
    TUint32 iMemoryGlobalData;
hgs
parents:
diff changeset
   335
    TUint32 iMemoryChunkLocal;
hgs
parents:
diff changeset
   336
    TUint32 iMemoryChunkShared;
hgs
parents:
diff changeset
   337
    //
hgs
parents:
diff changeset
   338
    TInt64 iTime;
hgs
parents:
diff changeset
   339
    };
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
hgs
parents:
diff changeset
   342
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
hgs
parents:
diff changeset
   345
hgs
parents:
diff changeset
   346
class TMemSpyHeapInfo
hgs
parents:
diff changeset
   347
    {
hgs
parents:
diff changeset
   348
public: // Enumerations
hgs
parents:
diff changeset
   349
    enum THeapImplementationType
hgs
parents:
diff changeset
   350
        {
hgs
parents:
diff changeset
   351
        ETypeUnknown = 0,
hgs
parents:
diff changeset
   352
        ETypeRHeap = 1,
hgs
parents:
diff changeset
   353
		ETypeRHybridHeap = 2,
62
hgs
parents: 51
diff changeset
   354
        ETypeRHybridHeapV2 = 3,
51
hgs
parents:
diff changeset
   355
        };
hgs
parents:
diff changeset
   356
hgs
parents:
diff changeset
   357
public: // Constructor & destructor
hgs
parents:
diff changeset
   358
    inline TMemSpyHeapInfo()
hgs
parents:
diff changeset
   359
        {
hgs
parents:
diff changeset
   360
        }
hgs
parents:
diff changeset
   361
hgs
parents:
diff changeset
   362
public: // API
hgs
parents:
diff changeset
   363
    inline void SetType( THeapImplementationType aType ) { iType = aType; }
hgs
parents:
diff changeset
   364
    inline THeapImplementationType Type() const { return iType; }
hgs
parents:
diff changeset
   365
    //
hgs
parents:
diff changeset
   366
    inline TMemSpyHeapInfoRHeap& AsRHeap() { return iRHeap; }
hgs
parents:
diff changeset
   367
    inline const TMemSpyHeapInfoRHeap& AsRHeap() const { return iRHeap; }
hgs
parents:
diff changeset
   368
    //
hgs
parents:
diff changeset
   369
    inline void SetTid( TUint32 aId ) { iTid = aId; }
hgs
parents:
diff changeset
   370
    inline TUint32 Tid() const { return iTid; }
hgs
parents:
diff changeset
   371
    //
hgs
parents:
diff changeset
   372
    inline void SetPid( TUint32 aId ) { iPid = aId; }
hgs
parents:
diff changeset
   373
    inline TUint32 Pid() const { return iPid; }
hgs
parents:
diff changeset
   374
hgs
parents:
diff changeset
   375
private: // Data members
hgs
parents:
diff changeset
   376
    THeapImplementationType iType;
hgs
parents:
diff changeset
   377
    TMemSpyHeapInfoRHeap iRHeap;
hgs
parents:
diff changeset
   378
    TUint32 iPid;
hgs
parents:
diff changeset
   379
    TUint32 iTid;
hgs
parents:
diff changeset
   380
    };
hgs
parents:
diff changeset
   381
hgs
parents:
diff changeset
   382
hgs
parents:
diff changeset
   383
hgs
parents:
diff changeset
   384
hgs
parents:
diff changeset
   385
hgs
parents:
diff changeset
   386
hgs
parents:
diff changeset
   387
/**
hgs
parents:
diff changeset
   388
 * Chunk info base class
hgs
parents:
diff changeset
   389
 */
hgs
parents:
diff changeset
   390
class TMemSpyDriverChunkInfoWithoutName
hgs
parents:
diff changeset
   391
    {
hgs
parents:
diff changeset
   392
public:
hgs
parents:
diff changeset
   393
    inline TMemSpyDriverChunkInfoWithoutName()
hgs
parents:
diff changeset
   394
        : iHandle( NULL ),
hgs
parents:
diff changeset
   395
          iBaseAddress( NULL ),
hgs
parents:
diff changeset
   396
          iSize( 0 ),
hgs
parents:
diff changeset
   397
          iMaxSize( 0 ),
hgs
parents:
diff changeset
   398
          iOwnerId( 0 ),
hgs
parents:
diff changeset
   399
          iType( EMemSpyDriverChunkTypeUnknown )
hgs
parents:
diff changeset
   400
        {
hgs
parents:
diff changeset
   401
        }
hgs
parents:
diff changeset
   402
hgs
parents:
diff changeset
   403
public:
hgs
parents:
diff changeset
   404
    TAny* iHandle;
hgs
parents:
diff changeset
   405
	TAny* iBaseAddress;
hgs
parents:
diff changeset
   406
	TUint iSize;
hgs
parents:
diff changeset
   407
	TUint iMaxSize;
hgs
parents:
diff changeset
   408
	TUint iOwnerId;
hgs
parents:
diff changeset
   409
    TMemSpyDriverChunkType iType;
hgs
parents:
diff changeset
   410
    TInt iAttributes;
hgs
parents:
diff changeset
   411
    };
hgs
parents:
diff changeset
   412
hgs
parents:
diff changeset
   413
hgs
parents:
diff changeset
   414
/**
hgs
parents:
diff changeset
   415
 * Chunk info 
hgs
parents:
diff changeset
   416
 */
hgs
parents:
diff changeset
   417
class TMemSpyDriverChunkInfo : public TMemSpyDriverChunkInfoWithoutName
hgs
parents:
diff changeset
   418
    {
hgs
parents:
diff changeset
   419
public:
hgs
parents:
diff changeset
   420
    inline TMemSpyDriverChunkInfo()
hgs
parents:
diff changeset
   421
        : TMemSpyDriverChunkInfoWithoutName(),
hgs
parents:
diff changeset
   422
          iName( KNullDesC )
hgs
parents:
diff changeset
   423
        {
hgs
parents:
diff changeset
   424
        }
hgs
parents:
diff changeset
   425
hgs
parents:
diff changeset
   426
public:
hgs
parents:
diff changeset
   427
	TFullName iName;
hgs
parents:
diff changeset
   428
    };
hgs
parents:
diff changeset
   429
hgs
parents:
diff changeset
   430
hgs
parents:
diff changeset
   431
/**
hgs
parents:
diff changeset
   432
 * cell information
hgs
parents:
diff changeset
   433
 */
hgs
parents:
diff changeset
   434
class TMemSpyDriverFreeCell
hgs
parents:
diff changeset
   435
	{
hgs
parents:
diff changeset
   436
public:
hgs
parents:
diff changeset
   437
	TMemSpyDriverCellType iType;
hgs
parents:
diff changeset
   438
	TAny* iAddress;
hgs
parents:
diff changeset
   439
	TInt iLength;
hgs
parents:
diff changeset
   440
	};
hgs
parents:
diff changeset
   441
hgs
parents:
diff changeset
   442
// For compatibility I can't change TMemSpyDriverCell to be the class and typdef/derive TMemSpyDriverFreeCell. Sigh...
hgs
parents:
diff changeset
   443
typedef TMemSpyDriverFreeCell TMemSpyDriverCell;
hgs
parents:
diff changeset
   444
hgs
parents:
diff changeset
   445
hgs
parents:
diff changeset
   446
/** 
hgs
parents:
diff changeset
   447
 * P&S information
hgs
parents:
diff changeset
   448
 */
hgs
parents:
diff changeset
   449
class TMemSpyDriverPAndSInfo
hgs
parents:
diff changeset
   450
    {
hgs
parents:
diff changeset
   451
public:
hgs
parents:
diff changeset
   452
    RProperty::TType iType;
hgs
parents:
diff changeset
   453
    TUint iCategory;
hgs
parents:
diff changeset
   454
    TUint iKey;
hgs
parents:
diff changeset
   455
    TInt iRefCount;
hgs
parents:
diff changeset
   456
    TUint32 iTid;
hgs
parents:
diff changeset
   457
    TUint32 iCreatorSID;
hgs
parents:
diff changeset
   458
    };
hgs
parents:
diff changeset
   459
hgs
parents:
diff changeset
   460
hgs
parents:
diff changeset
   461
/**
hgs
parents:
diff changeset
   462
 * CondVar suspended thread information
hgs
parents:
diff changeset
   463
 */
hgs
parents:
diff changeset
   464
class TMemSpyDriverCondVarSuspendedThreadInfo
hgs
parents:
diff changeset
   465
    {
hgs
parents:
diff changeset
   466
public:
hgs
parents:
diff changeset
   467
    TBuf8<KMaxName> iName;
hgs
parents:
diff changeset
   468
    TUint8* iAddress;
hgs
parents:
diff changeset
   469
    };
hgs
parents:
diff changeset
   470
hgs
parents:
diff changeset
   471
#endif