memspy/memspy_plat/memspy_api/include/MemSpyEngineClientInterface.h
changeset 48 516af714ebb4
parent 45 185201be11b0
child 55 f2950aff7424
--- a/memspy/memspy_plat/memspy_api/include/MemSpyEngineClientInterface.h	Thu Sep 02 22:05:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,705 +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 MEMSPYENGINECLIENTINTERFACE_H
-#define MEMSPYENGINECLIENTINTERFACE_H
-
-
-// System includes
-#include <e32base.h>
-#include <u32std.h>
-
-// Constants
-const TInt KMemSpyClientServerVersion           = 2;
-const TInt KMemSpyListInfoForAllThreads         = -1;
-
-/**
- * Special constant to be used to indicate kernel thread id
- * when performing kernel-specific thread agnostic operations.
- *
- * Note that the kernel thread is not supported for all thread-specific
- * operation types. 
- *
- * Use this value to indicate that the kernel thread is the target
- * thread when calling the thread-specific overload of PerformOperation().
- */
-const TUint32 KMemSpyClientServerThreadIdKernel = KMaxTUint32;
-
-// Internal constants
-const TInt KMemSpyOpFlagsTypeMask               = 0x0000FFFF;
-const TInt KMemSpyOpFlagsInclusionMask          = 0xFFFF0000;
-const TInt KMemSpyOpFlagsIncludesThreadId       = 0x00010000;
-const TInt KMemSpyOpFlagsIncludesThreadName     = 0x00020000;
-const TInt KMemSpyOpFlagsAsyncOperation         = 0x00040000;
-// Literal constants
-_LIT( KMemSpyServerName, "MemSpyServer" );
-_LIT( KMemSpyProcessName0, "MemSpyServer.exe" );
-_LIT( KMemSpyProcessName1, "MemSpyUI.exe" );
-//_LIT( KMemSpyProcessName2, "MemSpyConsole.exe" );
-
-//
-// Supported MemSpy operation types
-//
-// Operations which can only be applied to a specific thread are
-// prefixed by [TS] - i.e. it is permitted to use the thread-specific 
-// overload of PerformOperation() for this operation type.
-//
-// Operations that can be applied only to the entire device are
-// prefixed by [ED] - i.e. it is permitted to use the 
-// thread-agnostic overload of PerformOperation() for this operation type.
-//
-// Operations that support kernel-thread-specific requests
-// are prefixed by [KS] - i.e. it is permitted to use the 
-// thread-specific overload of PerformOperation() and the thread
-// identification parameter should correspond to KMemSpyClientServerThreadIdKernel.
-// NB: The overload of PerformOperation() which supports a descriptor cannot
-// be used.
-//
-// Operations that are not relevant to a thread are prefixed
-// by [NT] - i.e. use the thread-agnostic overload of
-// PerformOperation()
-//
-// All other op codes are deemed internal and are not to be
-// used except via provided APIs.
-//
-enum TMemSpyClientServerOp
-    {
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpMarkerFirst = 0,
-
-    /**
-     * [TS][ED]
-     * Show basic summary information about a thread/process
-     */
-    EMemSpyClientServerOpSummaryInfo = EMemSpyClientServerOpMarkerFirst,
-
-    /**
-     * [TS][ED]
-     * Show detailed summary information about a thread/process
-     */
-    EMemSpyClientServerOpSummaryInfoDetailed,
-
-    /**
-     * [TS][ED][KS]
-     * Show heap information & statistics for a user-side thread
-     */
-    EMemSpyClientServerOpHeapInfo,
-
-    /**
-     * [TS][ED]
-     * Prvide heap cell listings for a thread
-     */
-    EMemSpyClientServerOpHeapCellListing,
-
-    /**
-     * [TS][ED][KS]
-     * Dump a thread's heap
-     */
-    EMemSpyClientServerOpHeapData,
-
-    /**
-     * [TS][ED]
-     * Show summary information about a thread's stack
-     */
-    EMemSpyClientServerOpStackInfo,
-
-    /**
-     * [TS][ED]
-     * Dump a thread's user-side stack
-     */
-    EMemSpyClientServerOpStackDataUser,
-
-    /**
-     * [TS][ED]
-     * Dump a thread's kernel-side stack
-     */
-    EMemSpyClientServerOpStackDataKernel,
-
-    /**
-     * [TS][ED]
-     * List all open files in the OS or then the open files
-     * for a given thread.
-     */
-    EMemSpyClientServerOpOpenFiles,
-    
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpMarkerThreadAgnosticFirst,
-
-    /**
-     * [ED]
-     * Provide compact heap information for the entire device, which
-     * can be compared with other similar listings using Heap Analyser.
-     */
-    EMemSpyClientServerOpHeapInfoCompact = EMemSpyClientServerOpMarkerThreadAgnosticFirst,
-
-    /**
-     * [ED]
-     * Show compact stack information for the device
-     */
-    EMemSpyClientServerOpStackInfoCompact,
-
-    /**
-     * [NT]
-     * Start the system wide memory tracker (SWMT) running, so that when
-     * the timer expires, the system characteristics will be sampled
-     * and any changes notified. NB: Starting the SWMT running for the first time
-     * will cause an initial preparatory cycle to be established. Future updates
-     * will then follow when the timer tick period expires
-     */
-    EMemSpyClientServerOpSystemWideMemoryTrackingTimerStart,
-
-    /** 
-     * [NT]
-     * Stop the system wide memory tracker. No futher automatic timer-based
-     * SWMT cycles will be performed unless "Force update" is utilised or the timer
-     * is started again.
-     */
-    EMemSpyClientServerOpSystemWideMemoryTrackingTimerStop,
-
-    /** 
-     * [NT]
-     * Reset the SWMT so that all existing cycles are discarded (which can free
-     * quite a lot of memory). All operations are cancelled, the SWMT will be idle.
-     * 
-     * If performing manual "force updates" to the SWMT, then the SWMT should be reset
-     * before starting a new test run. For timer-based SWMT sampling, this operation
-     * is performed internally by MemSpy and therefore is redundant in that situation.
-     */
-    EMemSpyClientServerOpSystemWideMemoryTrackingReset,
-
-    /**
-     * [NT]
-     * Force the system wide memory tracker (internal to memspy) to
-     * perform a refresh
-     */
-    EMemSpyClientServerOpSystemWideMemoryTrackingForceUpdate,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpSystemWideMemoryTrackingTimerPeriodSet,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpSwitchOutputSinkFile,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpSwitchOutputSinkTrace,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpEnumerateKernelContainer,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpEnumerateKernelContainerAll,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpBitmapsSave,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpDisableAknIconCache,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpSendToBackground,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpBringToForeground,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpExit,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpSystemWideMemoryTrackingCategoriesSet,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpSystemWideMemoryTrackingThreadNameFilterSet,
-
-    /**
-     * [INTERNAL REQUEST]
-     */
-    EMemSpyClientServerOpSystemWideMemoryTrackingHeapDumpSet,
-    
-    /**
-	 * [INTERNAL REQUEST]
-	 */
-	EMemSpyClientServerOpMarkerUiFirst,
-	
-	EMemSpyClientServerOpGetProcessCount = EMemSpyClientServerOpMarkerUiFirst,
-	
-	EMemSpyClientServerOpGetProcesses,
-	
-	EMemSpyClienServerOpGetProcessIdByName,
-	
-	EMemSpyClientServerOpGetThreadCount,
-	
-	EMemSpyClientServerOpGetThreads,
-	
-	EMemSpyClientServerOpSetThreadPriority,
-	
-	EMemSpyClientServerOpProcessSystemPermanentOrCritical,
-	
-	EMemSpyClientServerOpEndProcess,
-	
-	EMemSpyClientServerOpSwitchToProcess,
-	
-	//Threads operations
-	EMemSpyClientServerOpThreadSystemPermanentOrCritical,
-	
-	EMemSpyClientServerOpEndThread,
-	
-	EMemSpyClientServerOpSwitchToThread,
-	
-	EMemSpyClientServerOpGetInfoItemType,
-	
-	EMemSpyClientServerOpGetThreadInfoItemsCount,
-	
-	EMemSpyClientServerOpGetThreadInfoItems,
-	
-	EMemSpyClientServerOpOutputInfoHandles,
-	
-	EMemSpyClientServerOpOutputAOList,
-		
-	
-	//Kernel Objects operations
-	EMemSpyClientServerOpGetKernelObjectCount,
-	
-	EMemSpyClientServerOpGetKernelObjects,
-	
-	EMemSpyClientServerOpGetKernelObjectItemCount,
-	
-	EMemSpyClientServerOpGetKernelObjectItems,
-	
-	EMemSpyClientServerOpGetHeap,
-	
-	EMemSpyClientServerOpGetMemoryTrackingCycleCount,
-	
-	EMemSpyClientServerOpGetMemoryTrackingCycles,
-	
-	/**
-	 * [INTERNAL REQUEST]
-	 * Register for notifications of device wide operation progress.
-	 */
-	EMemSpyClientServerOpNotifyDeviceWideOperationProgress,
-	
-	/**
-	 * [INTERNAL REQUEST]
-	 * Cancel current device wide operation
-	 */
-	EMemSpyClientServerOpCancelDeviceWideOperation,	
-	
-	EMemSpyClientServerOpOutputAllContainerContents,
-	    
-	EMemSpyClientServerOpDumpKernelHeap,
-	
-	EMemSpyClientServerOpSetSwmtConfig,
-	
-	EMemSpyClientServerOpSetSwmtAutoStartProcessList,
-		
-	EMemSpyClientServerOpGetOutputSink,
-	
-	/**
-	 * [INTERNAL REQUEST]
-	 * Check if system wide memory tracking timer is running.
-	 */
-	EMemSpyClientServerOpIsSwmtRunning,
-	
-	EMemSpyClientServerOpMarkerUiLast,		
-	
-	/**
-	 * [INTERNAL REQUEST]
-	 */
-    EMemSpyClientServerOpMarkerLast,
-    };
-
-
-enum TMemSpyEndType
-	{
-	ETerminate,
-	EKill,
-	EPanic
-	};
-
-
-
-
-
-NONSHARABLE_CLASS( RMemSpyEngineClientInterface ) : public RSessionBase
-    {
-public:
-    inline RMemSpyEngineClientInterface();
-    inline TInt Connect();
-    inline void Close();
-
-public: // API
-
-    /**
-     * Thread-agnostic request function. Performs the operation in the context of
-     * the entire device.
-     *
-     * I.e. can only be used for [NT] or [ED] requests.
-     */
-    inline TInt PerformOperation( TMemSpyClientServerOp aOperation );
-
-    /**
-     * Thread-specific request functions. Perform the requested operation in the context
-     * of the specified thread id, or (possibly partial) thread name.
-     *
-     * To perform the operation in the context of the current thread, invoke the
-     * function as follows:
-     *
-     *      PerformOperation( <...>, RThread().Id() );
-     *
-     * I.e. can only be used for [TS] requests.
-     */
-    inline TInt PerformOperation( TMemSpyClientServerOp aOperation, TThreadId aId );
-    inline TInt PerformOperation( TMemSpyClientServerOp aOperation, const TDesC& aThreadName );
-
-    /**
-     * General functions to switch MemSpy's output mode.
-     */
-    inline TInt SwitchOutputModeFile();
-    inline TInt SwitchOutputModeTrace();
-
-    /**
-     * Configure the system wide memory tracker timer interval (for automatic timer-based polling).
-     * Change will take effect next time SWMT is started.
-     */
-    inline TInt SystemWideMemoryTrackerTimerIntervalSet( TInt aInterval );
-
-    /**
-     * Configure the system wide memory tracker categories.
-     * Change will take effect next time SWMT is started.
-     */
-    inline TInt SystemWideMemoryTrackerCategoriesSet( TInt aCategories );
-
-    /**
-     * Configure the system wide memory tracker for filtering user heaps by thread name.
-     * Change will take effect next time SWMT is started.
-     */
-    inline TInt SystemWideMemoryTrackerThreadFilterSet( const TDesC& aFilter );
-    
-    /**
-     * Configure the system wide memory tracker for enabling/disabling Heap dumps during SWMT.
-     * Change will take effect next time SWMT is started.
-     */
-    inline TInt SystemWideMemoryTrackerHeapDumpSet( TBool aDumpEnabled );
-    
-    /**
-     * List the contents of a specific kernel container. See TObjectType for types.
-     */
-    inline TInt EnumerateKernelContainer( TObjectType aType );
-
-    /**
-     * List the contents of all kernel containers
-     */
-    inline TInt EnumerateKernelContainerAll();
-
-    /**
-     * Save bitmaps to memory card
-     */
-    inline TInt SaveAllBitmaps();
-
-    /**
-     * Disable AknIcon caching
-     */
-    inline TInt DisableAknIconCache();
-
-    /**
-     * Send MemSpy to the background/bring to foreground
-     */
-    inline TInt SendToBackground();
-    inline TInt BringToForeground();
-
-    /**
-     * Exit MemSpy
-     */
-    inline TInt Exit();
-    };
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-inline RMemSpyEngineClientInterface::RMemSpyEngineClientInterface()
-    {
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::Connect()
-    {
-    TVersion version( KMemSpyClientServerVersion, 0, 0 );
-    return CreateSession( KMemSpyServerName, version );
-    }
-
-
-inline void RMemSpyEngineClientInterface::Close()
-    {
-    RSessionBase::Close();
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::PerformOperation( TMemSpyClientServerOp aOperation )
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = aOperation;
-        const TIpcArgs args( KMemSpyListInfoForAllThreads );
-        //
-        error = SendReceive( opCode, args );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::PerformOperation( TMemSpyClientServerOp aOperation, TThreadId aId )
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = aOperation | KMemSpyOpFlagsIncludesThreadId;
-        const TIpcArgs args( aId );
-        //
-        error = SendReceive( opCode, args );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::PerformOperation( TMemSpyClientServerOp aOperation, const TDesC& aThreadName )
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = aOperation | KMemSpyOpFlagsIncludesThreadName;
-        const TIpcArgs args( &aThreadName );
-        //
-        error = SendReceive( opCode, args );
-        }
-    return error;
-    }
-
-
-
-
-
-
-inline TInt RMemSpyEngineClientInterface::SwitchOutputModeFile()
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpSwitchOutputSinkFile;
-        error = SendReceive( opCode );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::SwitchOutputModeTrace()
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpSwitchOutputSinkTrace;
-        error = SendReceive( opCode );
-        }
-    return error;
-    }
-
-
-
-
-
-
-
-
-inline TInt RMemSpyEngineClientInterface::SystemWideMemoryTrackerTimerIntervalSet( TInt aInterval )
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpSystemWideMemoryTrackingTimerPeriodSet;
-        const TIpcArgs args( aInterval );
-        //
-        error = SendReceive( opCode, args );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::SystemWideMemoryTrackerCategoriesSet( TInt aCategories )
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpSystemWideMemoryTrackingCategoriesSet;
-        const TIpcArgs args( aCategories );
-        //
-        error = SendReceive( opCode, args );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::SystemWideMemoryTrackerThreadFilterSet( const TDesC& aFilter )
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpSystemWideMemoryTrackingThreadNameFilterSet;
-        TIpcArgs args( &aFilter );
-        error = SendReceive( opCode, args );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::SystemWideMemoryTrackerHeapDumpSet( TBool aDumpEnabled  )
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpSystemWideMemoryTrackingHeapDumpSet;
-        const TIpcArgs args( aDumpEnabled );
-        error = SendReceive( opCode, args );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::EnumerateKernelContainer( TObjectType aType )
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpEnumerateKernelContainer;
-        const TIpcArgs args( aType );
-        //
-        error = SendReceive( opCode, args );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::EnumerateKernelContainerAll()
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpEnumerateKernelContainerAll;
-        error = SendReceive( opCode );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::SaveAllBitmaps()
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpBitmapsSave;
-        error = SendReceive( opCode );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::DisableAknIconCache()
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpDisableAknIconCache;
-        error = SendReceive( opCode );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::SendToBackground()
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpSendToBackground;
-        error = SendReceive( opCode );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::BringToForeground()
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpBringToForeground;
-        error = SendReceive( opCode );
-        }
-    return error;
-    }
-
-
-inline TInt RMemSpyEngineClientInterface::Exit()
-    {
-    TInt error = KErrNotReady;
-    if  ( Handle() != KNullHandle )
-        {
-        const TInt opCode = EMemSpyClientServerOpExit;
-        error = SendReceive( opCode );
-        }
-    return error;
-    }
-
-
-#endif