diff -r 0ff24a8f6ca2 -r 98307c651589 perfsrv/memspy/Driver/Kernel/Include/MemSpyDriverOSAdaption.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/perfsrv/memspy/Driver/Kernel/Include/MemSpyDriverOSAdaption.h Mon Sep 06 15:00:47 2010 +0300 @@ -0,0 +1,505 @@ +/* +* 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 MEMSPYDRIVEROSADAPTION_H +#define MEMSPYDRIVEROSADAPTION_H + +// System includes +#include +#include + +// User includes +#include "MemSpyDriverObjectIx.h" + +// Classes referenced +class DMemSpyDriverDevice; +class DMemSpyPropertyRef; +class DMemSpyDriverOSAdaption; + + + +class DMemSpyDriverOSAdaptionDObject : public DBase + { +protected: + DMemSpyDriverOSAdaptionDObject( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TUint8 GetContainerID( DObject& aObject ) const; + TObjectType GetObjectType( DObject& aObject ) const; + DObject* GetOwner( DObject& aObject ) const; + DObject* GetOwner( DObject& aObject, TUint8 aExpectedContainerId ) const; + TInt GetAccessCount( DObject& aObject ) const; + TInt GetUniqueID( DObject& aObject ) const; + TUint GetProtection( DObject& aObject ) const; + TUint8* GetAddressOfKernelOwner( DObject& aObject ) const; + +protected: + DMemSpyDriverOSAdaption& OSAdaption() const { return iOSAdaption; } + +private: // Data members + DMemSpyDriverOSAdaption& iOSAdaption; + }; + + + + + +class DMemSpyDriverOSAdaptionDThread : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDThread( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + NThread* GetNThread( DThread& aObject ) const; + TExitType GetExitType( DThread& aObject ) const; + TUint32 GetSupervisorStackBase( DThread& aObject ) const; + TInt GetSupervisorStackSize( DThread& aObject ) const; + RAllocator* GetAllocator( DThread& aObject ) const; + CActiveScheduler* GetActiveScheduler( DThread& aObject ) const; + TUint32 GetUserStackBase( DThread& aObject ) const; + TInt GetUserStackSize( DThread& aObject ) const; + DProcess* GetOwningProcess( DThread& aObject ) const; + TUint GetId( DThread& aObject ) const; + MemSpyObjectIx* GetHandles( DThread& aObject ) const; + TUint GetOwningProcessId( DThread& aObject ) const; + TInt GetPriority( DThread& aObject ) const; + TUint8* GetAddressOfOwningProcess( DThread& aObject ) const; + void GetNameOfOwningProcess( DThread& aObject, TDes& aName ) const; + TBool IsHandleIndexValid( DThread& aObject ) const; + +private: // Internal methods + RAllocator* GetAllocatorAndStackAddress( DThread& aObject, TUint32& aStackAddress ) const; + +private: // Data members + TUint32 iOffset_NThread; + TUint32 iOffset_ExitType; + TUint32 iOffset_SupervisorStackBase; + TUint32 iOffset_SupervisorStackSize; + }; + + + + + + + +class DMemSpyDriverOSAdaptionDProcess : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDProcess( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TUint GetId( DProcess& aObject ) const; + MemSpyObjectIx* GetHandles( DProcess& aObject ) const; + TExitType GetExitType( DProcess& aObject ) const; + DThread* OpenFirstThread( DProcess& aObject ) const; + TUint32 GetSID( DProcess& aObject ) const; + TUint GetSecurityZone( DProcess& aObject ) const; + SSecurityInfo& GetSecurityInfo( DProcess& aObject ) const; + TInt GetFlags( DProcess& aObject ) const; + TInt GetGeneration( DProcess& aObject ) const; + SDblQue& GetThreadQueue( DProcess& aObject ) const; + DThread* GetThread( SDblQueLink* aLink ) const; + void SetSID( DProcess& aObject, TUint32 aSID ) const; + void SetSecurityZone( DProcess& aObject, TUint aSecurityZone ) const; + TUint GetCreatorId( DProcess& aObject ) const; + TInt GetAttributes( DProcess& aObject ) const; + TInt GetPriority( DProcess& aObject ) const; + TUint8* GetAddressOfOwningProcess( DProcess& aObject ) const; + TUint8* GetAddressOfDataBssStackChunk( DProcess& aObject ) const; + TBool IsHandleIndexValid( DProcess& aObject ) const; + TBool IsKernProcess(DProcess& aProcess) const; + +private: // Data members + }; + + + + + + + + + + + + + + + +class DMemSpyDriverOSAdaptionDChunk : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDChunk( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TInt GetSize( DChunk& aObject ) const; + TInt GetMaxSize( DChunk& aObject ) const; + TUint8* GetBase( DChunk& aObject ) const; + DProcess* GetOwningProcess( DChunk& aObject ) const; + TUint GetOwningProcessId( DChunk& aObject ) const; + TUint GetControllingOwnerId( DChunk& aObject ) const; + TChunkType GetType( DChunk& aObject ) const; + TInt GetAttributes( DChunk& aObject ) const; + TUint8* GetAddressOfOwningProcess( DChunk& aObject ) const; + TInt GetBottom( DChunk& aObject ) const; + TInt GetTop( DChunk& aObject ) const; + TInt GetStartPos( DChunk& aObject ) const; + TUint GetRestrictions( DChunk& aObject ) const; + TUint GetMapAttr( DChunk& aObject ) const; + void GetNameOfOwningProcess( DChunk& aObject, TDes& aName ) const; + +private: // Data members + }; + + + + + + + + +class DMemSpyDriverOSAdaptionDServer : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDServer( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + SDblQue& GetSessionQueue( DServer& aObject ) const; + DSession* GetSession( SDblQueLink* aLink ) const; + TInt GetSessionCount( DServer& aObject ) const; + DThread* GetOwningThread( DServer& aObject ) const; + TUint GetOwningThreadId( DServer& aObject ) const; + TIpcSessionType GetSessionType( DServer& aObject ) const; + TUint8* GetAddressOfOwningThread( DServer& aObject ) const; + void GetNameOfOwningThread( DServer& aObject, TDes& aName ) const; + +private: // Data members + }; + + + + + + + +class DMemSpyDriverOSAdaptionDSession : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDSession( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TIpcSessionType GetSessionType( DSession& aObject ) const; + DServer* GetServer( DSession& aObject ) const; + TUint8* GetAddressOfServer( DSession& aObject ) const; + TUint16 GetTotalAccessCount( DSession& aObject ) const; + TUint8 GetSrvSessionType( DSession& aObject ) const; + TInt GetMsgCount( DSession& aObject ) const; + TInt GetMsgLimit( DSession& aObject ) const; + +private: // Data members + }; + + + + + + + + + +class DMemSpyDriverOSAdaptionDCodeSeg : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDCodeSeg( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + DCodeSeg* GetCodeSeg( SDblQueLink* aLink ) const; + DCodeSeg* GetCodeSeg( DLibrary& aLibrary ) const; + DCodeSeg* GetCodeSegFromHandle( TAny* aHandle ) const; + TBool GetIsXIP( DCodeSeg& aCodeSeg ) const; + TInt GetCodeSegQueue( DProcess& aObject, SDblQue& aQueue ) const; + void EmptyCodeSegQueue( SDblQue& aQueue ) const; + TUint32 GetSize( DCodeSeg& aCodeSeg ) const; + void GetCreateInfo( DCodeSeg& aCodeSeg, TCodeSegCreateInfo& aInfo ) const; + TUint8 GetState( DLibrary& aLibrary ) const; + TInt GetMapCount( DLibrary& aLibrary ) const; + +private: // Data members + }; + + + + + +class DMemSpyDriverOSAdaptionDSemaphore : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDSemaphore( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TInt GetCount( DSemaphore& aObject ) const; + TUint8 GetResetting( DSemaphore& aObject ) const; + +private: // Data members + }; + + + + + + + + + +class DMemSpyDriverOSAdaptionDMutex : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDMutex( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TInt GetHoldCount( DMutex& aObject ) const; + TInt GetWaitCount( DMutex& aObject ) const; + TUint8 GetResetting( DMutex& aObject ) const; + TUint8 GetOrder( DMutex& aObject ) const; + +private: // Data members + }; + + + + + + + + +class DMemSpyDriverOSAdaptionDLogicalDevice : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDLogicalDevice( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TInt GetOpenChannels( DLogicalDevice& aObject ) const; + TVersion GetVersion( DLogicalDevice& aObject ) const; + TUint GetParseMask( DLogicalDevice& aObject ) const; + TUint GetUnitsMask( DLogicalDevice& aObject ) const; + +private: // Data members + }; + + + + + + + + + +class DMemSpyDriverOSAdaptionDPhysicalDevice : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDPhysicalDevice( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TVersion GetVersion( DPhysicalDevice& aObject ) const; + TUint GetUnitsMask( DPhysicalDevice& aObject ) const; + TUint8* GetAddressOfCodeSeg( DPhysicalDevice& aObject ) const; + +private: // Data members + }; + + + + + + + + + + + +class DMemSpyDriverOSAdaptionDChangeNotifier : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDChangeNotifier( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TUint GetChanges( DChangeNotifier& aObject ) const; + TUint8* GetAddressOfOwningThread( DChangeNotifier& aObject ) const; + void GetNameOfOwningThread( DChangeNotifier& aObject, TDes& aName ) const; + +private: // Data members + }; + + + + + + + + + + + +class DMemSpyDriverOSAdaptionDUndertaker : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDUndertaker( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TUint8* GetAddressOfOwningThread( DUndertaker& aObject ) const; + void GetNameOfOwningThread( DUndertaker& aObject, TDes& aName ) const; + +private: // Data members + }; + + + + + + + + + + + + +class DMemSpyDriverOSAdaptionDCondVar : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDCondVar( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TUint8 GetResetting( DCondVar& aObject ) const; + TUint8* GetAddressOfMutex( DCondVar& aObject ) const; + void GetNameOfMutex( DCondVar& aObject, TDes& aName ) const; + TInt GetWaitCount( DCondVar& aObject ) const; + SDblQue& GetSuspendedQ( DCondVar& aObject ) const; + DThread* GetThread( SDblQueLink* aLink ) const; + +private: // Data members + }; + + + + + + + + + + + + + + + +class DMemSpyDriverOSAdaptionDTimer : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDTimer( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TTimer::TTimerType GetType( DTimer& aObject ) const; + TTimer::TTimerState GetState( DTimer& aObject ) const; + +private: // Data members + }; + + + + + +class DMemSpyDriverOSAdaptionDPropertyRef : public DMemSpyDriverOSAdaptionDObject + { +public: + DMemSpyDriverOSAdaptionDPropertyRef( DMemSpyDriverOSAdaption& aOSAdaption ); + +public: + TBool GetIsReady( DObject& aObject ) const; + RProperty::TType GetType( DObject& aObject ) const; + TUint GetCategory( DObject& aObject ) const; + TUint GetKey( DObject& aObject ) const; + TInt GetRefCount( DObject& aObject ) const; + TUint GetThreadId( DObject& aObject ) const; + TUint32 GetCreatorSID( DObject& aObject ) const; + +private: // Internal methods + DMemSpyPropertyRef* GetPropertyRef( DObject& aObject ) const; + +private: // Data members + }; + + + + + + +class DMemSpyDriverOSAdaption : public DBase + { +public: + DMemSpyDriverOSAdaption( DMemSpyDriverDevice& aDevice ); + ~DMemSpyDriverOSAdaption(); + TInt Construct(); + +public: // API + inline DMemSpyDriverDevice& Device() { return iDevice; } + inline DMemSpyDriverOSAdaptionDProcess& DProcess() { return *iDProcess; } + inline DMemSpyDriverOSAdaptionDThread& DThread() { return *iDThread; } + inline DMemSpyDriverOSAdaptionDChunk& DChunk() { return *iDChunk; } + inline DMemSpyDriverOSAdaptionDServer& DServer() { return *iDServer; } + inline DMemSpyDriverOSAdaptionDSession& DSession() { return *iDSession; } + inline DMemSpyDriverOSAdaptionDCodeSeg& DCodeSeg() { return *iDCodeSeg; } + inline DMemSpyDriverOSAdaptionDSemaphore& DSemaphore() { return *iDSemaphore; } + inline DMemSpyDriverOSAdaptionDMutex& DMutex() { return *iDMutex; } + inline DMemSpyDriverOSAdaptionDLogicalDevice& DLogicalDevice() { return *iDLogicalDevice; } + inline DMemSpyDriverOSAdaptionDPhysicalDevice& DPhysicalDevice() { return *iDPhysicalDevice; } + inline DMemSpyDriverOSAdaptionDChangeNotifier& DChangeNotifier() { return *iDChangeNotifier; } + inline DMemSpyDriverOSAdaptionDUndertaker& DUndertaker() { return *iDUndertaker; } + inline DMemSpyDriverOSAdaptionDCondVar& DCondVar() { return *iDCondVar; } + inline DMemSpyDriverOSAdaptionDTimer& DTimer() { return *iDTimer; } + inline DMemSpyDriverOSAdaptionDPropertyRef& DPropertyRef() { return *iDPropertyRef; } + +private: // Data members + DMemSpyDriverDevice& iDevice; + DMemSpyDriverOSAdaptionDThread* iDThread; + DMemSpyDriverOSAdaptionDProcess* iDProcess; + DMemSpyDriverOSAdaptionDChunk* iDChunk; + DMemSpyDriverOSAdaptionDServer* iDServer; + DMemSpyDriverOSAdaptionDSession* iDSession; + DMemSpyDriverOSAdaptionDCodeSeg* iDCodeSeg; + DMemSpyDriverOSAdaptionDSemaphore* iDSemaphore; + DMemSpyDriverOSAdaptionDMutex* iDMutex; + DMemSpyDriverOSAdaptionDLogicalDevice* iDLogicalDevice; + DMemSpyDriverOSAdaptionDPhysicalDevice* iDPhysicalDevice; + DMemSpyDriverOSAdaptionDChangeNotifier* iDChangeNotifier; + DMemSpyDriverOSAdaptionDUndertaker* iDUndertaker; + DMemSpyDriverOSAdaptionDCondVar* iDCondVar; + DMemSpyDriverOSAdaptionDTimer* iDTimer; + DMemSpyDriverOSAdaptionDPropertyRef* iDPropertyRef; + }; + + +// KNOWN OMISSIONS: +// +// + kernel container listing & query interface +// + event handler (events: process, threads, code segs, chunks, ... ) +// + kernel heap information +// + end thread / process + + +#endif