--- a/memspy/Driver/Kernel/Include/MemSpyDriverInspectedProcess.h Thu Sep 02 22:05:40 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +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:
-*
-*/
-
-#ifndef MEMSPYINSPECTEDPROCESS_H
-#define MEMSPYINSPECTEDPROCESS_H
-
-// System includes
-#include <kern_priv.h>
-
-// Shared includes
-#include <memspy/driver/memspydriverobjectsshared.h>
-
-// User includes
-#include "MemSpyDriverUtils.h"
-#include "MemSpyDriverEventMonitor.h"
-
-// Classes referenced
-class DMemSpyInspectedProcessManager;
-class TMemSpyDriverProcessInspectionInfo;
-
-
-
-class TMemSpyTrackedChunk
- {
-public:
- enum TType
- {
- ETypeNotRelevant = -1,
- //
- ETypeChunkHeap = 0,
- ETypeChunkLocal,
- ETypeChunkGlobalData,
- ETypeChunkProcessGlobalDataAndUserStack,
- ETypeChunkShared
- };
-
-public:
- TMemSpyTrackedChunk( DChunk* aChunk, TType aType );
-
-public: // API
- void SetSize( TInt aSize );
- TInt Size() const { return iSize; }
- //
- void SetUnused( TBool aUnused );
- TBool Unused() const { return iUnused; }
- //
- TAny* Handle() const { return iChunk; }
- //
- inline TType Type() const { return iType; }
- inline void SetType( TType aType ) { iType = aType; }
-
-public: // Data members
- SDblQueLink iLink;
- DChunk* iChunk;
- TType iType;
- TInt iSize;
- TBool iUnused;
- };
-
-
-class TMemSpyTrackedChunkChangeInfo
- {
-public: // Data members
- TMemSpyDriverProcessInspectionInfo iInfo;
- SDblQueLink iLink;
- };
-
-
-
-
-
-class DMemSpyInspectedProcess : public DBase, public MMemSpyEventMonitorObserver
- {
-public: // Construct / destruct
- DMemSpyInspectedProcess( DMemSpyDriverDevice& aDevice );
- ~DMemSpyInspectedProcess();
-
-public: // API
- TInt Open( DProcess* aProcess );
- inline TUint ProcessId() const { return iProcessId; }
-
-public: // Change notification API
- TInt NotifyOnChange( DThread* aThread, TRequestStatus* aRequestStatus, TMemSpyDriverProcessInspectionInfo* aInfo );
- TInt NotifyOnChangeCancel();
- TBool NotifyOnChangeQueued() const;
-
-public: // Queue link
- SDblQueLink iLink;
-
-public: // From MMemSpyEventMonitorObserver
- TUint EMTypeMask() const;
- void EMHandleProcessUpdated( DProcess& aProcess );
- void EMHandleProcessRemoved( DProcess& aProcess );
- void EMHandleThreadAdd( DThread& aThread );
- void EMHandleThreadRemoved( DThread& aThread );
- void EMHandleThreadKilled( DThread& aThread );
- void EMHandleChunkAdd( DChunk& aChunk );
- void EMHandleChunkUpdated( DChunk& aChunk );
- void EMHandleChunkDeleted( DChunk& aChunk );
-
- // Internal helper
- void EMHandleThreadChanged( DThread& aThread );
-
-private: // Tracked item management
- void ResetTrackedList();
- void SetTrackedListUnused();
- void SetTrackedListUnusedStatusByType( TMemSpyTrackedChunk::TType aType, TBool aUnusedStatus );
- void DiscardUnusedTrackListItems();
- void AddTrackedChunk( DChunk* aChunk, TMemSpyTrackedChunk::TType aType );
- TMemSpyTrackedChunk* TrackedChunkByHandle( TAny* aHandle );
-
-private: // Internal methods
- DMemSpyInspectedProcessManager& PManager();
- DMemSpyEventMonitor& EventMonitor();
- TMemSpyTrackedChunk::TType ChunkType( DObject* aObject ) const;
- TBool IsHeapChunk( DChunk& aChunk, const TName& aName ) const;
- static TUint32 TotalStatistics( const TMemSpyDriverProcessInspectionInfo& aStats, TBool aIncludeShared = ETrue );
- static TBool IsEqual( const TMemSpyDriverProcessInspectionInfo& aLeft, const TMemSpyDriverProcessInspectionInfo& aRight );
- void ResetStatistics( TMemSpyDriverProcessInspectionInfo& aStats );
- TBool UpdateStatistics();
- void CompleteClientsRequest( TInt aCompletionCode, TMemSpyDriverProcessInspectionInfo* aInfo = NULL );
- void FindChunks( DProcess& aProcess );
- TInt StackSize( DProcess& aProcess );
- void ResetPendingChanges();
- void PrintChunkInfo( DChunk& aChunk ) const;
- TBool IsChunkRelevantToOurProcess( DChunk& aChunk ) const;
- void Lock() const;
- void Unlock() const;
-
-public: // Queue link for process manager
- SDblQueLink iPMLink;
-
-private: // Data members
- DMemSpyDriverDevice& iDevice;
- DMutex* iLock;
- TUint iProcessId;
- DProcess* iProcess;
- TBool iAmDead;
-
- // This differs from the 'inspection info' iMemoryStack field
- // because it just contains the size of all user-thread stacks
- // within the process.
- TInt iUserThreadStackSize;
-
- // Tracking chunks mapped into process
- SDblQue iTrackedChunks;
-
- // Changes that have occurred whilst the client was AWOL
- SDblQue iPendingChanges;
-
- // Tracking totals
- TMemSpyDriverProcessInspectionInfo iInfoLast;
- TMemSpyDriverProcessInspectionInfo iInfoCurrent;
- TMemSpyDriverProcessInspectionInfo iInfoPeaks;
- TMemSpyDriverProcessInspectionInfo iInfoHWMIncShared;
- TMemSpyDriverProcessInspectionInfo iInfoHWMExcShared;
-
- // For change notification
- TInt iChangeDeliveryCounter;
- DThread* iChangeObserverThread;
- TRequestStatus* iChangeObserverRS;
- TMemSpyDriverProcessInspectionInfo* iChangeObserverInfo;
- TBool iEventReceivedWhilstObserverWasAWOL;
- };
-
-
-#endif