--- a/kernel/eka/include/drivers/rm_debug_kerneldriver.h Thu Aug 19 11:14:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,777 +0,0 @@
-// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "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:
-//
-
-
-
-/**
- @file
- @internalTechnology
- @released
-*/
-
-#ifndef __RM_DEBUG_KERNELDRIVER_H__
-#define __RM_DEBUG_KERNELDRIVER_H__
-
-#include <rm_debug_api.h>
-
-/**
-Used to store a value read from or written to an ARM register
-*/
-typedef TUint32 T4ByteRegisterValue;
-
-
-/**
-Provides static methods for accessing the information stored in a TRegisterInfo
-object.
-*/
-class Register
- {
-public:
- static TBool IsCoreReg(const Debug::TRegisterInfo aRegister);
- static TBool IsCoproReg(const Debug::TRegisterInfo aRegister);
- static TUint32 GetCoreRegId(const Debug::TRegisterInfo aRegister);
- static TUint32 GetCRm(const Debug::TRegisterInfo aRegister);
- static TUint32 GetCRn(const Debug::TRegisterInfo aRegister);
- static TUint32 GetOpcode1(const Debug::TRegisterInfo aRegister);
- static TUint32 GetOpcode2(const Debug::TRegisterInfo aRegister);
- static TUint32 GetCoproNum(const Debug::TRegisterInfo aRegister);
- };
-
-/**
-Identify whether aRegister is a core register
-@param aRegister register ID to analyse
-@return ETrue if core register, EFalse otherwise
-*/
-inline TBool Register::IsCoreReg(const Debug::TRegisterInfo aRegister)
- {
- return ((aRegister & 0xff) == 0x0);
- }
-
-/**
-Identify whether aRegister is a coprocessor register
-@param aRegister register ID to analyse
-@return ETrue if coprocessor register, EFalse otherwise
-*/
-inline TBool Register::IsCoproReg(const Debug::TRegisterInfo aRegister)
- {
- return ((aRegister & 0xff) == 0x1);
- }
-
-/**
-Get the ID of the core register
-@param aRegister register ID to analyse
-@return ID of the core register
-*/
-inline TUint32 Register::GetCoreRegId(const Debug::TRegisterInfo aRegister)
- {
- return ((aRegister >> 8) & 0xff);
- }
-
-/**
-Get the CRm value of a coprocessor register
-@param aRegister register ID to analyse
-@return the CRm value of a coprocessor register
-*/
-inline TUint32 Register::GetCRm(const Debug::TRegisterInfo aRegister)
- {
- return ((aRegister >> 16) & 0xf);
- }
-
-/**
-Get the CRm value of a coprocessor register
-@param aRegister register ID to analyse
-@return the CRm value of a coprocessor register
-*/
-inline TUint32 Register::GetCRn(const Debug::TRegisterInfo aRegister)
- {
- return ((aRegister >> 20) & 0xf);
- }
-
-/**
-Get the Opcode1 value of a coprocessor register
-@param aRegister register ID to analyse
-@return the Opcode1 value of a coprocessor register
-*/
-inline TUint32 Register::GetOpcode1(const Debug::TRegisterInfo aRegister)
- {
- return ((aRegister >> 24) & 0x8);
- }
-
-/**
-Get the Opcode2 value of a coprocessor register
-@param aRegister register ID to analyse
-@return the Opcode2 value of a coprocessor register
-*/
-inline TUint32 Register::GetOpcode2(const Debug::TRegisterInfo aRegister)
- {
- return ((aRegister >> 27) & 0x8);
- }
-
-/**
-Get the coprocessor number of a coprocessor register
-@param aRegister register ID to analyse
-@return the coprocessor number of a coprocessor register
-*/
-inline TUint32 Register::GetCoproNum(const Debug::TRegisterInfo aRegister)
- {
- return ((aRegister >> 8) & 0xff);
- }
-
-//
-// class TCapsRM_DebugDriver
-//
-class TCapsRM_DebugDriver
-{
-public:
- TVersion iVersion;
-};
-
-/**
-Stores listings information for passing between the DSS and the kernel driver
-*/
-class TListInformation
-{
-public:
- inline TListInformation(const Debug::TListId aType=(Debug::TListId)NULL, const Debug::TListScope aListScope=(Debug::TListScope)NULL, TDes8* aBuffer=NULL, TUint32* aDataSize=NULL, TUint64 aTargetId=0)
- : iType(aType),
- iListScope(aListScope),
- iBuffer(aBuffer),
- iDataSize(aDataSize),
- iTargetId(aTargetId) {};
-public:
- Debug::TListId iType;
- Debug::TListScope iListScope;
- TDes8* iBuffer;
- TUint32* iDataSize;
- TUint64 iTargetId;
-};
-
-/**
-Data structure to hold information to the crash flash
-(Possibly: Could be expanded to hold on configuration data too)
-*/
-class TFlashInfo
-{
-public:
- inline TFlashInfo(TUint32 aPos, TUint32* aSize, TDes8* aData)
- :iPos(aPos),
- iSize(aSize),
- iData(aData){};
-public:
- TUint32 iPos;
- TUint32* iSize;
- TDes8* iData;
-};
-//
-// class TRM_DebugMemoryInfo
-//
-class TRM_DebugMemoryInfo
-{
-public:
-
- inline TRM_DebugMemoryInfo(const TUint32 aAddress, const TUint32 aLength, TDesC8 *aData)
- : iAddress(aAddress),
- iLength(aLength),
- iData(aData) {};
-
-public:
-
- TUint32 iAddress;
- TUint32 iLength;
- TDesC8* iData;
-};
-
-
-/**
-@deprecated
-This class is only used by TRK phase 1 functions.
-
-@see TRM_DebugRegisterInformation which offers similar storage suitable for use
-with the TRK pahse 2 API.
-*/
-class TRM_DebugRegisterInfo
-{
-public:
-
- inline TRM_DebugRegisterInfo(const TInt16 aFirstRegister, const TInt16 aLastRegister, TDesC8 *aValues)
- : iFirstRegister(aFirstRegister),
- iLastRegister(aLastRegister),
- iValues(aValues) {};
-
-public:
-
- TInt16 iFirstRegister;
- TInt16 iLastRegister;
- TDesC8* iValues;
-};
-
-/**
-Structure used to store information about registers
-*/
-class TRM_DebugRegisterInformation
-{
-public:
-
- inline TRM_DebugRegisterInformation(const TDes8 *aRegisterIds=NULL, TDes8 *aRegisterValues=NULL, TDes8 *aRegisterFlags=NULL)
- : iRegisterIds(aRegisterIds),
- iRegisterValues(aRegisterValues),
- iRegisterFlags(aRegisterFlags) {};
-
-public:
-
- const TDes8* iRegisterIds;
- TDes8* iRegisterValues;
- TDes8* iRegisterFlags;
-};
-
-//
-// class TRM_DebugTaskInfo
-//
-class TRM_DebugTaskInfo
-{
-public:
-
- inline TRM_DebugTaskInfo(TUint32 aOtherId)
- : iId(0),
- iOtherId(aOtherId),
- iPriority(0) { iName.FillZ(); };
-
-public:
-
- TUint32 iId;
- TUint32 iOtherId;
- TUint32 iPriority;
- TBuf8<KMaxName> iName;
-};
-
-//
-// class TRM_DebugStepInfo
-//
-class TRM_DebugStepInfo
-{
-public:
-
- inline TRM_DebugStepInfo(const TUint32 aStartAddress, const TUint32 aStopAddress, const TBool aStepInto)
- : iStartAddress(aStartAddress),
- iStopAddress(aStopAddress),
- iStepInto(aStepInto) {};
-
-public:
-
- TUint32 iStartAddress;
- TUint32 iStopAddress;
- TBool iStepInto;
-};
-
-
-//
-// class TRM_DebugDriverInfo
-//
-class TRM_DebugDriverInfo
-{
-public:
-
- TUint32 iPanic1Address;
- TUint32 iPanic2Address;
- TUint32 iException1Address;
- TUint32 iException2Address;
- TUint32 iLibraryLoadedAddress;
- TUint32 iUserLibraryEnd;
-};
-
-
-//
-// class TRM_DebugProcessInfo
-//
-class TRM_DebugProcessInfo
-{
-public:
-
- inline TRM_DebugProcessInfo(TUint32 *aCodeAddress, TUint32 *aDataAddress)
- : iCodeAddress(aCodeAddress),
- iDataAddress(aDataAddress) {};
-
-public:
-
- TUint32* iCodeAddress;
- TUint32* iDataAddress;
-};
-
-//
-// class TRM_DebugEventActionInfo
-//
-class TRM_DebugEventActionInfo
-{
-public:
- inline TRM_DebugEventActionInfo(TUint32 aEvent, TUint32 aAction, TUint64 aAgentId)
- : iEvent(aEvent),
- iAction(aAction),
- iAgentId(aAgentId) {};
-public:
- TUint32 iEvent;
- TUint32 iAction;
- TUint64 iAgentId;
-};
-
-//
-// class TRM_DebugEventInfo
-//
-class TRM_DebugEventInfo
-{
-public:
- inline TRM_DebugEventInfo(TDesC8& aProcessName, TUint32& aBufSize)
- : iProcessName(aProcessName),
- iBufSize(aBufSize) {};
-
-public:
- TDesC8& iProcessName;
- TUint32& iBufSize;
-};
-
-//
-// class TRMD_DebugAgentId
-//
-class TRM_DebugAgentId
-{
-public:
- inline TRM_DebugAgentId(TUint64 aAgentId)
- : iAgentId(aAgentId) {};
-
-public:
- TUint64 iAgentId;
-};
-
-//
-// Class TRMD_DebugCancelInfo
-//
-class TRMD_DebugCancelInfo
-{
-public:
- inline TRMD_DebugCancelInfo(TUint32 aCancelRequest,TDesC8& aProcessName, TUint64 aAgentId)
- : iCancelRequest(aCancelRequest),
- iProcessName(aProcessName),
- iAgentId(aAgentId) {};
-
- inline TRMD_DebugCancelInfo(void)
- : iCancelRequest(0),
- iAgentId(0)
- {
- };
-
-public:
- TUint32 iCancelRequest;
- TBuf8<KMaxName> iProcessName;
- TUint64 iAgentId;
-};
-
-class TEventMetaData
- {
-public:
- TBuf8<KMaxName> iTargetProcessName;
- TUint64 iDebugAgentProcessId;
- };
-
-/**
-@internalComponent
-*/
-class TSetBreakInfo
-{
-public:
-
- inline TSetBreakInfo(Debug::TBreakId* aBreakId,
- TUint64 aId,\
- TUint32 aAddress,\
- Debug::TArchitectureMode aMode,
- TBool aThreadSpecific)
- : iBreakId(aBreakId),
- iId(aId),
- iAddress(aAddress),
- iMode(aMode),
- iThreadSpecific(aThreadSpecific) {};
-
-inline TSetBreakInfo(void)
- : iBreakId((Debug::TBreakId*)0),
- iId(0),
- iAddress(0),
- iMode(Debug::EArmMode),
- iThreadSpecific(ETrue) {};
-
-
-public:
- Debug::TBreakId* iBreakId;
- TUint64 iId;
- TUint32 iAddress;
- Debug::TArchitectureMode iMode;
- TBool iThreadSpecific;
-};
-
-/**
-@internalComponent
-*/
-class TModifyBreakInfo
-{
-public:
-
- inline TModifyBreakInfo(Debug::TBreakId aBreakId,\
- const TUint64 aThreadId,\
- const TUint32 aAddress,\
- const Debug::TArchitectureMode aMode)
- : iBreakId(aBreakId),
- iThreadId(aThreadId),
- iAddress(aAddress),
- iMode(aMode) {};
-
-public:
- const Debug::TBreakId iBreakId;
- const TUint64 iThreadId;
- const TUint32 iAddress;
- const Debug::TArchitectureMode iMode;
-};
-
-/**
-@internalComponent
-*/
-class TModifyProcessBreakInfo
-{
-public:
-
- inline TModifyProcessBreakInfo(Debug::TBreakId aBreakId,\
- const TUint64 aProcessId,\
- const TUint32 aAddress,\
- const Debug::TArchitectureMode aMode)
- : iBreakId(aBreakId),
- iProcessId(aProcessId),
- iAddress(aAddress),
- iMode(aMode) {};
-
-public:
- const Debug::TBreakId iBreakId;
- const TUint64 iProcessId;
- const TUint32 iAddress;
- const Debug::TArchitectureMode iMode;
-};
-
-/**
-@internalComponent
-*/
-class TGetBreakInfo
-{
-public:
-
- inline TGetBreakInfo(Debug::TBreakId aBreakId,\
- TUint64& aId,\
- TUint32& aAddress,\
- Debug::TArchitectureMode& aMode,
- TBool& aThreadSpecific)
- : iBreakId(aBreakId),
- iId(&aId),
- iAddress(&aAddress),
- iMode(&aMode),
- iThreadSpecific(&aThreadSpecific) {};
-
- inline TGetBreakInfo()
- : iBreakId((Debug::TBreakId)0),
- iId((TUint64*)0),
- iAddress((TUint32*)0),
- iMode((Debug::TArchitectureMode*)0),
- iThreadSpecific((TBool*)0) {};
-
-public:
- const Debug::TBreakId iBreakId;
- TUint64* iId;
- TUint32* iAddress;
- Debug::TArchitectureMode* iMode;
- TBool* iThreadSpecific;
-};
-
-//
-// class RRM_DebugDriver
-//
-class RRM_DebugDriver : public RBusLogicalChannel
-{
-public:
-
- enum TControl
- {
- EControlSetBreak = 0,
- EControlClearBreak,
- EControlModifyBreak,
- EControlBreakInfo,
- EControlSuspendThread,
- EControlResumeThread,
- EControlStepRange,
- EControlReadMemory,
- EControlWriteMemory,
- EControlReadRegisters,
- EControlWriteRegisters,
- EControlGetStaticLibraryInfo,
- EControlGetDebugFunctionalityBufSize,
- EControlGetDebugFunctionality,
- EControlReadRegistersLegacy,
- EControlWriteRegistersLegacy,
- EControlGetMemoryOperationMaxBlockSize,
- EControlAttachProcess,
- EControlDetachProcess,
- EControlDetachAgent,
- EControlSetEventAction,
- EControlGetList,
- EControlStep,
- EControlIsDebuggable,
- EControlKillProcess,
- EControlModifyProcessBreak,
- };
-
- enum TRequest
- {
- ERequestGetEvent=0x0, ERequestGetEventCancel=0x1
- };
-
-public:
-
- inline TInt Open(const TRM_DebugDriverInfo aDriverInfo);
-
- inline TInt SetBreak(Debug::TBreakId &aBreakId,const TUint32 aThreadId, const TUint32 aAddress, const Debug::TArchitectureMode aThumbMode );
- inline TInt SetProcessBreak(Debug::TBreakId &aBreakId,const TUint32 aProcessId, const TUint32 aAddress, const Debug::TArchitectureMode aThumbMode );
-
- inline TInt ClearBreak(const TInt32 aBreakId);
-
- inline TInt ModifyBreak(const Debug::TBreakId aBreakId, const TUint32 aThreadId, const TUint32 aAddress, const Debug::TArchitectureMode aArchitectureMode );
- inline TInt ModifyProcessBreak(const Debug::TBreakId aBreakId, const TUint32 aProcessId, const TUint32 aAddress, const Debug::TArchitectureMode aArchitectureMode );
-
- inline TInt BreakInfo(const Debug::TBreakId aBreakId, TUint64& aId, TUint32& aAddress, Debug::TArchitectureMode& aMode, TBool& aThreadSpecific);
-
- inline TInt SuspendThread(const TUint32 aThreadId);
- inline TInt ResumeThread(const TUint32 aThreadId);
- inline TInt StepRange(const TUint32 aThreadId, const TUint32 aStartAddress, const TUint32 aStopAddress, TBool aStepInto);
- inline TInt ReadMemory(const TUint32 aThreadId, const TUint32 aAddress, const TUint32 aLength, TDes8 &aData);
- inline TInt WriteMemory(const TUint32 aThreadId, const TUint32 aAddress, const TUint32 aLength, const TDesC8 &aData);
- inline TInt ReadRegisters(const TUint32 aThreadId, const TDes8 &aRegisterIds, TDes8 &aRegisterValues, TDes8 &aRegisterFlags);
- inline TInt WriteRegisters(const TUint32 aThreadId, const TDes8 &aRegisterIds, const TDes8 &aRegisterValues, TDes8 &aRegisterFlags);
- inline TInt ReadRegisters(const TUint32 aThreadId, const TInt32 aFirstRegister, const TInt32 aLastRegister, TDes8 &aValues);
- inline TInt WriteRegisters(const TUint32 aThreadId, const TInt32 aFirstRegister, const TInt32 aLastRegister, TDesC8 &aValues);
- inline void GetEvent(TDesC8& aProcessName, TUint64 aAgentId, TRequestStatus &aStatus, Debug::TEventInfo &aEventInfo);
- inline void CancelGetEvent(TDesC8& aProcessName, TUint64 aAgentId);
-// inline TInt GetProcessInfo(const TInt aIndex, TRM_DebugTaskInfo &aInfo);
-// inline TInt GetThreadInfo(const TInt aIndex, TRM_DebugTaskInfo &aInfo);
- inline TInt GetStaticLibraryInfo(const TInt aIndex, Debug::TEventInfo &aInfo);
- inline TInt GetDebugFunctionalityBufSize(TUint32 &aBufSize);
- inline TInt GetDebugFunctionality(TDes8& aDebugFunctionality);
- inline TInt GetMemoryOperationMaxBlockSize(TUint32 &aMaxSize);
- inline TInt AttachProcess(TDesC8& aProcessName, TUint64 aAgentId);
- inline TInt DetachProcess(TDesC8& aProcessName, TUint64 aAgentId);
- inline TInt DetachAgent(TUint64 aAgentId);
- inline TInt SetEventAction(TDesC8& aProcessName, Debug::TEventType aEvent, Debug::TKernelEventAction aEventAction, TUint64 aAgentId);
- inline TInt GetList(const Debug::TListId aType, const Debug::TListScope aListScope, const TUint64 aTargetId, const TUint64 aDebugProcessId, TDes8& aBuffer, TUint32& aDataSize);
- inline TInt Step(const TUint32 aThreadId, const TUint32 aNumSteps);
- inline TInt IsDebuggable(const TUint32 aProcessId);
- inline TInt KillProcess(const TUint32 aProcessId, const TInt32 aReason);
-};
-
-_LIT(KRM_DebugDriverName,"RM Debug Driver");
-
-//priority set equal to that of KDfcThread0Priority defined in e32/kernel/sinit.cpp
-const TInt KRmDebugDriverThreadPriority = 27;
-
-// Version information
-const TInt KMajorVersionNumber=2;
-const TInt KMinorVersionNumber=1;
-const TInt KBuildVersionNumber=0;
-
-
-inline TInt RRM_DebugDriver::Open(const TRM_DebugDriverInfo aDriverInfo)
-{
- TBuf8<32> buf;
- buf.Append((TUint8*)&aDriverInfo.iPanic1Address, 4);
- buf.Append((TUint8*)&aDriverInfo.iPanic2Address, 4);
- buf.Append((TUint8*)&aDriverInfo.iException1Address, 4);
- buf.Append((TUint8*)&aDriverInfo.iException2Address, 4);
- buf.Append((TUint8*)&aDriverInfo.iLibraryLoadedAddress, 4);
- buf.Append((TUint8*)&aDriverInfo.iUserLibraryEnd, 4);
-
- #ifdef EKA2
- return DoCreate(KRM_DebugDriverName, TVersion(KMajorVersionNumber, KMinorVersionNumber, KBuildVersionNumber), KNullUnit, NULL, &buf);
- #else
- return DoCreate(KRM_DebugDriverName, TVersion(KMajorVersionNumber, KMinorVersionNumber, KBuildVersionNumber), NULL, KNullUnit, NULL, &buf);
- #endif
-}
-
-inline TInt RRM_DebugDriver::SetBreak(Debug::TBreakId &aBreakId, const TUint32 aThreadId, const TUint32 aAddress, const Debug::TArchitectureMode aMode )
-{
- TSetBreakInfo info(&aBreakId, aThreadId, aAddress, aMode, ETrue);
- return DoSvControl(EControlSetBreak, reinterpret_cast<TAny*>(&info),0);
-}
-inline TInt RRM_DebugDriver::SetProcessBreak(Debug::TBreakId &aBreakId, const TUint32 aProcessId, const TUint32 aAddress, const Debug::TArchitectureMode aMode )
-{
- TSetBreakInfo info(&aBreakId, aProcessId, aAddress, aMode, EFalse);
- return DoSvControl(EControlSetBreak, reinterpret_cast<TAny*>(&info),0);
-}
-
-inline TInt RRM_DebugDriver::ClearBreak(const Debug::TBreakId aBreakId)
-{
- return DoSvControl(EControlClearBreak, reinterpret_cast<TAny*>(aBreakId), 0);
-}
-
-inline TInt RRM_DebugDriver::ModifyBreak(const Debug::TBreakId aBreakId, const TUint32 aThreadId, const TUint32 aAddress, const Debug::TArchitectureMode aMode)
-{
- TModifyBreakInfo info(aBreakId, aThreadId, aAddress, aMode);
- return DoControl(EControlModifyBreak, reinterpret_cast<TAny*>(&info), 0);
-}
-
-inline TInt RRM_DebugDriver::ModifyProcessBreak(const Debug::TBreakId aBreakId, const TUint32 aProcessId, const TUint32 aAddress, const Debug::TArchitectureMode aMode)
-{
- TModifyProcessBreakInfo info(aBreakId, aProcessId, aAddress, aMode);
- return DoControl(EControlModifyProcessBreak, reinterpret_cast<TAny*>(&info), 0);
-}
-
-inline TInt RRM_DebugDriver::BreakInfo(const Debug::TBreakId aBreakId, TUint64& aId, TUint32& aAddress, Debug::TArchitectureMode& aMode, TBool& aThreadSpecific)
-{
- TGetBreakInfo info(aBreakId, aId, aAddress, aMode, aThreadSpecific);
- return DoControl(EControlBreakInfo, reinterpret_cast<TAny*>(&info), 0);
-}
-
-inline TInt RRM_DebugDriver::SuspendThread(const TUint32 aThreadId)
-{
- return DoControl(EControlSuspendThread, reinterpret_cast<TAny*>(aThreadId));
-}
-
-inline TInt RRM_DebugDriver::ResumeThread(const TUint32 aThreadId)
-{
- return DoSvControl(EControlResumeThread, reinterpret_cast<TAny*>(aThreadId));
-}
-
-inline TInt RRM_DebugDriver::StepRange(const TUint32 aThreadId, const TUint32 aStartAddress, const TUint32 aStopAddress, TBool aStepInto)
-{
- TRM_DebugStepInfo info(aStartAddress, aStopAddress, aStepInto);
- return DoSvControl(EControlStepRange, reinterpret_cast<TAny*>(aThreadId), (TAny*)&info);
-}
-
-inline TInt RRM_DebugDriver::ReadMemory(const TUint32 aThreadId, const TUint32 aAddress, const TUint32 aLength, TDes8 &aData)
-{
- TRM_DebugMemoryInfo info(aAddress, aLength, &aData);
- return DoControl(EControlReadMemory, reinterpret_cast<TAny*>(aThreadId), (TAny*)&info);
-}
-
-inline TInt RRM_DebugDriver::WriteMemory(const TUint32 aThreadId, const TUint32 aAddress, const TUint32 aLength, const TDesC8 &aData)
-{
- TRM_DebugMemoryInfo info(aAddress, aLength, (TDesC8*)&aData);
- return DoControl(EControlWriteMemory, reinterpret_cast<TAny*>(aThreadId), (TAny*)&info);
-}
-
-inline TInt RRM_DebugDriver::ReadRegisters(const TUint32 aThreadId, const TDes8 &aRegisterIds, TDes8 &aRegisterValues, TDes8 &aRegisterFlags)
- {
- TRM_DebugRegisterInformation info(&aRegisterIds, &aRegisterValues, &aRegisterFlags);
- return DoControl(EControlReadRegisters, reinterpret_cast<TAny*>(aThreadId), (TAny*)&info);
- }
-
-inline TInt RRM_DebugDriver::WriteRegisters(const TUint32 aThreadId, const TDes8 &aRegisterIds, const TDes8 &aRegisterValues, TDes8 &aRegisterFlags)
- {
- TRM_DebugRegisterInformation info(&aRegisterIds, (TDes8*)&aRegisterValues, &aRegisterFlags);
- return DoControl(EControlWriteRegisters, reinterpret_cast<TAny*>(aThreadId), (TAny*)&info);
- }
-
-inline TInt RRM_DebugDriver::ReadRegisters(const TUint32 aThreadId, const TInt32 aFirstRegister, const TInt32 aLastRegister, TDes8 &aValues)
-{
- TRM_DebugRegisterInfo info(aFirstRegister, aLastRegister, &aValues);
- return DoControl(EControlReadRegistersLegacy, reinterpret_cast<TAny*>(aThreadId), (TAny*)&info);
-}
-
-inline TInt RRM_DebugDriver::WriteRegisters(const TUint32 aThreadId, const TInt32 aFirstRegister, const TInt32 aLastRegister, TDesC8 &aValues)
-{
- TRM_DebugRegisterInfo info(aFirstRegister, aLastRegister, &aValues);
- return DoControl(EControlWriteRegistersLegacy, reinterpret_cast<TAny*>(aThreadId), (TAny*)&info);
-}
-
-inline void RRM_DebugDriver::GetEvent(TDesC8& aProcessName, TUint64 aAgentId, TRequestStatus &aStatus, Debug::TEventInfo &aEventInfo)
-{
- // temporary object not needed beyond the DoRequest call
- TEventMetaData eventMetaData;
- eventMetaData.iTargetProcessName.Copy(aProcessName);
- eventMetaData.iDebugAgentProcessId = aAgentId;
- DoRequest(ERequestGetEvent, aStatus, (TAny*)&aEventInfo, (TAny*)&eventMetaData);
-}
-
-inline void RRM_DebugDriver::CancelGetEvent(TDesC8& aProcessName, TUint64 aAgentId)
-{
- TRMD_DebugCancelInfo info(ERequestGetEventCancel,aProcessName,aAgentId);
- DoCancel(reinterpret_cast<TInt>(&info));
-}
-
-inline TInt RRM_DebugDriver::GetStaticLibraryInfo(const TInt aIndex, Debug::TEventInfo &aInfo)
-{
- return DoControl(EControlGetStaticLibraryInfo, reinterpret_cast<TAny*>(aIndex), (TAny*)&aInfo);
-}
-
-inline TInt RRM_DebugDriver::GetDebugFunctionalityBufSize(TUint32 &aBufSize)
-{
- return DoControl(EControlGetDebugFunctionalityBufSize, reinterpret_cast<TAny*>(&aBufSize));
-}
-
-inline TInt RRM_DebugDriver::GetDebugFunctionality(TDes8& aDebugFunctionality)
-{
- return DoControl(EControlGetDebugFunctionality,reinterpret_cast<TAny*>(&aDebugFunctionality));
-}
-
-inline TInt RRM_DebugDriver::GetMemoryOperationMaxBlockSize(TUint32 &aMaxSize)
-{
- return DoControl(EControlGetMemoryOperationMaxBlockSize, reinterpret_cast<TAny*>(&aMaxSize));
-}
-
-inline TInt RRM_DebugDriver::AttachProcess(TDesC8& aProcessName, TUint64 aAgentId)
-{
- TRM_DebugAgentId info(aAgentId);
- return DoControl(EControlAttachProcess,reinterpret_cast<TAny*>(&aProcessName),reinterpret_cast<TAny*>(&info));
-}
-
-inline TInt RRM_DebugDriver::DetachProcess(TDesC8& aProcessName, TUint64 aAgentId)
-{
- TRM_DebugAgentId info(aAgentId);
- return DoControl(EControlDetachProcess,reinterpret_cast<TAny*>(&aProcessName),reinterpret_cast<TAny*>(&info));
-}
-
-inline TInt RRM_DebugDriver::DetachAgent(TUint64 aAgentId)
-{
- TRM_DebugAgentId info(aAgentId);
- return DoControl(EControlDetachAgent,reinterpret_cast<TAny*>(&info),0);
-}
-
-inline TInt RRM_DebugDriver::SetEventAction(TDesC8& aProcessName, Debug::TEventType aEvent, Debug::TKernelEventAction aEventAction, TUint64 aAgentId)
-{
- TRM_DebugEventActionInfo info (aEvent,aEventAction, aAgentId);
- return DoControl(EControlSetEventAction,reinterpret_cast<TAny*>(&aProcessName),(TAny*)&info);
-}
-
-inline TInt RRM_DebugDriver::GetList(const Debug::TListId aType, const Debug::TListScope aListScope, const TUint64 aTargetId, const TUint64 aDebugProcessId, TDes8& aBuffer, TUint32& aDataSize)
-{
- TListInformation info(aType, aListScope, &aBuffer, &aDataSize, aTargetId);
- return DoControl(EControlGetList, (TAny*)&info);
-}
-
-inline TInt RRM_DebugDriver::Step(const TUint32 aThreadId, const TUint32 aNumSteps)
-{
- return DoControl(EControlStep,reinterpret_cast<TAny*>(aThreadId),reinterpret_cast<TAny*>(aNumSteps));
-}
-
-inline TInt RRM_DebugDriver::IsDebuggable(const TUint32 aProcessId)
-{
- return DoControl(EControlIsDebuggable,reinterpret_cast<TAny*>(aProcessId),NULL);
-}
-
-inline TInt RRM_DebugDriver::KillProcess(const TUint32 aProcessId, const TInt32 aReason)
-{
- return DoControl(EControlKillProcess,reinterpret_cast<TAny*>(aProcessId),reinterpret_cast<TAny*>(aReason));
-}
-
-#endif // __RM_DEBUG_KERNELDRIVER_H__
-