--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/memspy/Driver/Kernel/Include/MemSpyDriverOSAdaption.h Tue Feb 02 01:57:15 2010 +0200
@@ -0,0 +1,504 @@
+/*
+* 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 <kernel.h>
+#include <e32const.h>
+
+// 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* GetFirstThread( 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;
+
+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