kernel/eka/include/sm_debug_api.h
author hgs
Thu, 12 Aug 2010 12:51:24 +0100
changeset 245 647ab20fee2e
parent 90 947f0dc9f7a8
permissions -rw-r--r--
201031_10
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
245
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
     1
// Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     2
// All rights reserved.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     3
// This component and the accompanying materials are made available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     5
// which accompanies this distribution, and is available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     7
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     8
// Initial Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    10
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    11
// Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    12
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    13
// Description:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    14
// Definition of the stop-mode debug interface.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    15
// 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    16
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    17
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    18
@file
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    19
@publishedPartner
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    20
@prototype
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    21
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    22
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    23
#ifndef D_STOP_MODE_API_H
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    24
#define D_STOP_MODE_API_H
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    25
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    26
#include <plat_priv.h>
245
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    27
#include <e32cmn.h>
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    28
#include <e32def_private.h>
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    29
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    30
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    31
namespace Debug
245
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    32
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    33
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    34
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    35
/** This is the maximum size in bytes a user trace can be */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    36
const TInt TUserTraceSize = 256;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    37
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    38
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    39
  Information in the debug functionality block is represented as a concatenation
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    40
  of pairs of TTagHeader structures and arrays of TTag objects.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    41
  @see TTagHeader
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    42
  @see RSecuritySvrSession::GetDebugFunctionality
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    43
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    44
struct TTag
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    45
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    46
    /** Tag ID, value identifying this tag. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    47
    TUint32 iTagId;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    48
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    49
      Values correspond to TTagType enumerators.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    50
      @see TTagType
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    51
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    52
    TUint16 iType;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    53
    /** Size of external data associated with this tag. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    54
    TUint16 iSize;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    55
    /** Data associated with this tag. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    56
    TUint32 iValue;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    57
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    58
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    59
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    60
  Enumeration defining the supported tag types. These enumerators are used in TTag.iTagId.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    61
  @see TTag
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    62
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    63
enum TTagType
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    64
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    65
    /** Indicates that the iValue field of a TTag structure will contain either ETrue or EFalse. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    66
    ETagTypeBoolean = 0,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    67
    /** Indicates that the iValue field of a TTag structure will contain a value in the TUint32 range. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    68
    ETagTypeTUint32 = 1,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    69
    /** Indicates that the iValue field of a TTag structure will contain values from an enumeration. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    70
    ETagTypeEnum = 2,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    71
    /** Indicates that the iValue field of a TTag structure should be interpreted as a bit field. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    72
    ETagTypeBitField = 3,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    73
    /** Indicates that the type of the iValue field of a TTag structure is unknown. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    74
    ETagTypeUnknown = 4,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    75
    /** Indicates that the iValue field of a TTag structure will contain a pointer. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    76
    ETagTypePointer = 5
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    77
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    78
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    79
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    80
  Information in the debug functionality block is represented as a concatenation
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    81
  of pairs of TTagHeader structures and arrays of TTag objects.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    82
  @see TTag
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    83
  @see RSecuritySvrSession::GetDebugFunctionality
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    84
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    85
struct TTagHeader
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    86
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    87
    /** Value identifying the contents of this TTagHeader, should be interpreted as an enumerator from TTagHeaderId.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    88
      @see TTagHeaderId
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    89
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    90
    TUint16 iTagHdrId;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    91
    /** The number of TTag elements in the array associated with this TTagHeader. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    92
    TUint16 iNumTags;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    93
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    94
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    95
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    96
  Enumeration used to identify TTagHeader structures, TTagHeader::iTagHdrId elements take these enumerators as values.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    97
  @see TTagHeader
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    98
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
    99
enum TTagHeaderId
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   100
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   101
    ETagHeaderIdCore = 0,            /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TFunctionalityCore. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   102
    ETagHeaderIdMemory = 1,          /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TFunctionalityMemory. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   103
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   104
      Identifies a TTagHeader with associated TTag elements with iTagId values from TFunctionalityRegister.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   105
      These values are defined as in the document Symbian Core Dump File Format Appendix C
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   106
      (see SGL.TS0028.027 - Symbian Core Dump File Format v1.0.doc).
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   107
      The TTag objects in the associated array have an iSize value corresponding to the size of the register's data in bytes.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   108
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   109
    ETagHeaderIdRegistersCore = 2,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   110
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   111
      Identifies a TTagHeader with associated TTag elements with iTagId values corresponding to coprocessor register identifiers.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   112
      Coprocessor registers are defined as in the document Symbian Core Dump File Format Appendix C as follows
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   113
      (see SGL.TS0028.027 - Symbian Core Dump File Format v1.0.doc):
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   114
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   115
      For each 32-bit data word defining a co-pro register, the definition of the meaning of the bits follows
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   116
      the ARM Architecture Reference manual instruction coding
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   117
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   118
      Upper Halfword    Lower Halfword
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   119
      Opcode 2          CRm
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   120
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   121
      For example: The Domain Access Control Register is Register 3 of co-processor 15. The encoding is therefore
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   122
      CRm = 3
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   123
      Opcode2 = 0
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   124
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   125
      Therefore the functionality tag would be:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   126
      TagID:  15            // co-processor number
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   127
      Type: ETagTypeTUint32
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   128
      Data: 0x00000003      // Opcode2 = 0, CRm = 3
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   129
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   130
    ETagHeaderIdCoProRegisters = 3,  /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TFunctionalityRegister. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   131
    ETagHeaderIdBreakpoints = 4,     /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TFunctionalityBreakpoint. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   132
    ETagHeaderIdStepping = 5,        /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TFunctionalityStep. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   133
    ETagHeaderIdExecution = 6,       /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TFunctionalityExec. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   134
    ETagHeaderIdEvents = 7,          /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TEventType. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   135
    ETagHeaderIdApiConstants = 8,    /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TFunctionalityApiConstants.*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   136
    ETagHeaderList = 9,              /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TListId. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   137
    ETagHeaderIdKillObjects = 10,    /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TFunctionalityKillObject. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   138
    ETagHeaderIdSecurity = 11,       /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TFunctionalitySecurity */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   139
    ETagHeaderIdBuffers = 12,        /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TBufferType. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   140
    ETagHeaderIdStopModeFunctions = 13, /**< Identifies a TTagHeader with associated TTag elements with iTagId values from TFunctionalityStopModeFunctions. */  
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   141
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   142
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   143
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   144
  This structure is not used in the run-mode debug API.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   145
  @deprecated
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   146
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   147
struct TSubBlock
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   148
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   149
    /** Header to identify the TSubBlock. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   150
    TTagHeader iHeader;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   151
    /** Pointer to array of TTag values associated with this TSubBlock. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   152
    TTag* iTagArray;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   153
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   154
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   155
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   156
  These tags define what kinds of core functionality are supported by the run-mode debug subsystem.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   157
  TTag structures associated with the ETagHeaderIdCore sub-block will have iTagId values from this enumeration.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   158
  See each enumerator for an explanation of how a TTag with that iTagId should be interpreted.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   159
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   160
enum TFunctionalityCore
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   161
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   162
    ECoreEvents = 0,        /**< Indicates whether events processing is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   163
    ECoreStartStop = 1,     /**< Indicates whether suspending and resuming threads is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   164
    ECoreMemory = 2,        /**< Indicates whether reading and writing memory is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   165
    ECoreRegister = 3,      /**< Indicates whether reading and writing register values is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   166
    ECoreBreakpoint = 4,    /**< Indicates whether breakpoints are supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   167
    ECoreStepping = 5,      /**< Indicates whether stepping is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   168
    ECoreLists = 6,         /**< Indicates whether listings are supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   169
    ECoreLogging = 7,       /**< Indicates whether logging is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   170
    ECoreHardware = 8,      /**< Indicates whether hardware support is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   171
    ECoreApiConstants = 9,  /**< Indicates whether the information in the ETagHeaderIdApiConstants sub-block is relevant. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   172
    ECoreKillObjects = 10,  /**< Indicates whether killing objects (i.e. threads and processes) is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   173
    ECoreSecurity = 11,     /**< Indicates whether OEM Debug token support or other security info is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   174
    ECoreStopModeFunctions = 12, /**< Indicates whether Stop Mode function calling is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   175
    ECoreStopModeBuffers = 13, /**< Indicates whether Stop Mode buffers are supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   176
    
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   177
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   178
      @internalTechnology
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   179
      A debug agent should find the number of core tags from the DFBlock rather than this enumerator.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   180
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   181
    ECoreLast
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   182
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   183
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   184
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   185
  These tags define what kind of memory operations can be performed.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   186
  TTag structures associated with the ETagHeaderIdMemory sub-block will have iTagId values from this enumeration.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   187
  See each enumerator for an explanation of how a TTag with that iTagId should be interpreted.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   188
 */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   189
enum TFunctionalityMemory
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   190
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   191
    EMemoryRead = 0,          /**< Indicates whether reading memory is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   192
    EMemoryWrite = 1,         /**< Indicates whether writing memory is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   193
    EMemoryAccess64 = 2,      /**< Indicates whether 64 bit memory access is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   194
    EMemoryAccess32 = 3,      /**< Indicates whether 32 bit memory access is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   195
    EMemoryAccess16 = 4,      /**< Indicates whether 16 bit memory access is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   196
    EMemoryAccess8 = 5,       /**< Indicates whether 8 bit memory access is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   197
    EMemoryBE8 = 6,           /**< Indicates whether reading memory as 8 bit big-endian values is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   198
    EMemoryBE32 = 7,          /**< Indicates whether reading memory as 32 bit big-endian values is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   199
    EMemoryLE8 = 8,           /**< Indicates whether reading memory as 8 bit little-endian values is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   200
    EMemoryMaxBlockSize = 9,  /**< Corresponds to the maximum size of a block of memory which can be requested. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   201
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   202
      @internalTechnology
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   203
      A debug agent should find the number of memory tags from the DFBlock rather than this enumerator.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   204
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   205
    EMemoryLast
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   206
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   207
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   208
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   209
  These tags define which objects can be killed by the device driver.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   210
  TTag structures associated with the ETagHeaderIdKillObjects sub-block will have iTagId values from this enumeration.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   211
  See each enumerator for an explanation of how a TTag with that iTagId should be interpreted.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   212
 */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   213
enum TFunctionalityKillObject
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   214
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   215
    EFunctionalityKillThread = 0,          /**< Indicates whether killing threads is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   216
    EFunctionalityKillProcess = 1,         /**< Indicates whether killing processes is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   217
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   218
      @internalTechnology
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   219
      A debug agent should find the number of kill object tags from the DFBlock rather than this enumerator.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   220
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   221
    EFunctionalityKillObjectLast
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   222
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   223
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   224
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   225
  A TTag with an id from the TFunctionalityRegister enum will have a value from this enumeration.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   226
  The values define how a register can be accessed, if at all.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   227
 */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   228
enum TFunctionalityAccess
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   229
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   230
    EAccessNone = 0,       /**< Indicates that a register cannot be accessed. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   231
    EAccessReadOnly = 1,   /**< Indicates that a register can be read, but not written to. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   232
    EAccessWriteOnly = 2,  /**< Indicates that a register can be written to, but not read. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   233
    EAccessReadWrite = 3,  /**< Indicates that a register can be both read and written to. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   234
    EAccessUnknown = 4,    /**< Indicates that it is unspecified whether reading or writing to a register is possible. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   235
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   236
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   237
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   238
  These enumerators act as core register identifiers.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   239
  TTag structures associated with the ETagHeaderIdRegistersCore sub-block will have iTagId values from this enumeration.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   240
  The numeric value of each enumerator identifies the register according to the definitions in the Symbian Core Dump File Format Appendix B
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   241
  (see SGL.TS0028.027 - Symbian Core Dump File Format v1.0.doc).
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   242
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   243
enum TFunctionalityRegister
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   244
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   245
    ERegisterR0 = 0x00000000,      /**< Identifier for user mode register R0. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   246
    ERegisterR1 = 0x00000100,      /**< Identifier for user mode register R1. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   247
    ERegisterR2 = 0x00000200,      /**< Identifier for user mode register R2. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   248
    ERegisterR3 = 0x00000300,      /**< Identifier for user mode register R3. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   249
    ERegisterR4 = 0x00000400,      /**< Identifier for user mode register R4. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   250
    ERegisterR5 = 0x00000500,      /**< Identifier for user mode register R5. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   251
    ERegisterR6 = 0x00000600,      /**< Identifier for user mode register R6. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   252
    ERegisterR7 = 0x00000700,      /**< Identifier for user mode register R7. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   253
    ERegisterR8 = 0x00000800,      /**< Identifier for user mode register R8. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   254
    ERegisterR9 = 0x00000900,      /**< Identifier for user mode register R9. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   255
    ERegisterR10 = 0x00000a00,     /**< Identifier for user mode register R10. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   256
    ERegisterR11 = 0x00000b00,     /**< Identifier for user mode register R11. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   257
    ERegisterR12 = 0x00000c00,     /**< Identifier for user mode register R12. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   258
    ERegisterR13 = 0x00000d00,     /**< Identifier for user mode register R13. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   259
    ERegisterR14 = 0x00000e00,     /**< Identifier for user mode register R14. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   260
    ERegisterR15 = 0x00000f00,     /**< Identifier for user mode register R15. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   261
    ERegisterCpsr = 0x00001000,    /**< Identifier for CPSR. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   262
    ERegisterR13Svc = 0x00001100,  /**< Identifier for R13 supervisor mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   263
    ERegisterR14Svc = 0x00001200,  /**< Identifier for R14 supervisor mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   264
    ERegisterSpsrSvc = 0x00001300, /**< Identifier for SPSR supervisor mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   265
    ERegisterR13Abt = 0x00001400,  /**< Identifier for R13 Abort mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   266
    ERegisterR14Abt = 0x00001500,  /**< Identifier for R14 Abort mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   267
    ERegisterSpsrAbt = 0x00001600, /**< Identifier for SPSR Abort mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   268
    ERegisterR13Und = 0x00001700,  /**< Identifier for R13 Undefined mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   269
    ERegisterR14Und = 0x00001800,  /**< Identifier for R14 Undefined mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   270
    ERegisterSpsrUnd = 0x00001900, /**< Identifier for SPSR Undefined mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   271
    ERegisterR13Irq = 0x00001a00,  /**< Identifier for R13 Interrupt mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   272
    ERegisterR14Irq = 0x00001b00,  /**< Identifier for R14 Interrupt mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   273
    ERegisterSpsrIrq = 0x00001c00, /**< Identifier for SPSR Interrupt mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   274
    ERegisterR8Fiq = 0x00001d00,   /**< Identifier for R8 Fast Interrupt mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   275
    ERegisterR9Fiq = 0x00001e00,   /**< Identifier for R9 Fast Interrupt mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   276
    ERegisterR10Fiq = 0x00001f00,  /**< Identifier for R10 Fast Interrupt mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   277
    ERegisterR11Fiq = 0x00002000,  /**< Identifier for R11 Fast Interrupt mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   278
    ERegisterR12Fiq = 0x00002100,  /**< Identifier for R12 Fast Interrupt mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   279
    ERegisterR13Fiq = 0x00002200,  /**< Identifier for R13 Fast Interrupt mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   280
    ERegisterR14Fiq = 0x00002300,  /**< Identifier for R14 Fast Interrupt mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   281
    ERegisterSpsrFiq = 0x00002400, /**< Identifier for SPSR Fast Interrupt mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   282
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   283
      @internalTechnology
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   284
      A debug agent should find the number of core registers from the DFBlock rather than this enumerator.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   285
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   286
    ERegisterLast = 37
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   287
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   288
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   289
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   290
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   291
  These tags define the kind of breakpoints that are supported.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   292
  TTag structures associated with the ETagHeaderIdBreakpoints sub-block will have iTagId values from this enumeration.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   293
  See each enumerator for an explanation of how a TTag with that iTagId should be interpreted.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   294
 */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   295
enum TFunctionalityBreakpoint
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   296
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   297
    EBreakpointThread = 0,         /**< Indicates whether thread specific breakpoints are supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   298
    EBreakpointProcess = 1,        /**< Indicates whether process specific breakpoints are supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   299
    EBreakpointSystem = 2,         /**< Indicates whether system wide breakpoints are supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   300
    EBreakpointArm = 3,            /**< Indicates whether ARM mode breakpoints are supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   301
    EBreakpointThumb = 4,          /**< Indicates whether Thumb mode breakpoints are supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   302
    EBreakpointT2EE = 5,           /**< Indicates whether Thumb2 mode breakpoints are supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   303
    EBreakpointArmInst = 6,        /**< Reserved for future use. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   304
    EBreakpointThumbInst = 7,      /**< Reserved for future use. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   305
    EBreakpointT2EEInst = 8,       /**< Reserved for future use. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   306
    EBreakpointSetArmInst = 9,     /**< Reserved for future use. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   307
    EBreakpointSetThumbInst = 10,  /**< Reserved for future use. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   308
    EBreakpointSetT2EEInst = 11,   /**< Reserved for future use. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   309
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   310
      @internalTechnology
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   311
      A debug agent should find the number of breakpoint tags from the DFBlock rather than this enumerator.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   312
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   313
    EBreakpointLast
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   314
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   315
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   316
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   317
  These enumerators provide information about the stepping capabilities of the debug sub-system.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   318
  TTag structures associated with the ETagHeaderIdStepping sub-block will have iTagId values from this enumeration.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   319
  See each enumerator for an explanation of how a TTag with that iTagId should be interpreted.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   320
 */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   321
enum TFunctionalityStep
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   322
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   323
    EStep = 0, /**< Indicates whether instruction stepping is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   324
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   325
      @internalTechnology
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   326
      A debug agent should find the number of stepping tags from the DFBlock rather than this enumerator.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   327
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   328
    EStepLast
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   329
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   330
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   331
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   332
  These enumerators provide information about the execution control capabilities of the debug sub-system.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   333
  TTag structures associated with the ETagHeaderIdExecution sub-block will have iTagId values from this enumeration.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   334
  See each enumerator for an explanation of how a TTag with that iTagId should be interpreted.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   335
 */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   336
enum TFunctionalityExec
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   337
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   338
    EExecThreadSuspendResume = 0,  /**< Indicates whether suspending and resuming threads is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   339
    EExecProcessSuspendResume = 1, /**< Indicates whether suspending and resuming processes is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   340
    EExecSystemSuspendResume = 2,  /**< Indicates whether suspending and resuming the entire system is supported. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   341
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   342
      @internalTechnology
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   343
      A debug agent should find the number of execution control tags from the DFBlock rather than this enumerator.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   344
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   345
    EExecLast
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   346
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   347
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   348
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   349
  This enumeration defines the event types supported by the debug sub-system.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   350
  TTag structures associated with the ETagHeaderIdEvents sub-block will have
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   351
  iTagId values from this enumeration, and iValue values from the TKernelEventAction enumeration.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   352
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   353
  These enumerators are also used by the RSecuritySvrSession API to identify events.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   354
  @see RSecuritySvrSession
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   355
  @see TKernelEventAction
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   356
 */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   357
enum TEventType
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   358
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   359
    EEventsBreakPoint = 0,    /**< Identifies a breakpoint event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   360
    EEventsSwExc = 1,         /**< Identifies a software exception event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   361
    EEventsHwExc = 2,         /**< Identifies a hardware exception event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   362
    EEventsKillThread = 3,    /**< Identifies a kill thread event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   363
    EEventsAddLibrary = 4,    /**< Identifies an add library event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   364
    EEventsRemoveLibrary = 5, /**< Identifies a remove library event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   365
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   366
     If an event is generated and there is only a single space remaining in the events queue then
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   367
     an event of type EEventsBufferFull will be stored in the queue and the generated event will
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   368
     be discarded. If further events occur while the buffer is full the events will be discarded.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   369
     As such an event of type EEventsBufferFull being returned signifies that one or more events
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   370
     were discarded. An event of this type has no valid data associated with it.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   371
     */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   372
    EEventsBufferFull = 6,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   373
    EEventsUnknown = 7,       /**< Identifies an event of unknown type. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   374
    EEventsUserTrace = 8,     /**< Identifies a user trace. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   375
    EEventsProcessBreakPoint = 9, /**< Identifies a process breakpoint event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   376
    EEventsStartThread = 10, /**< Identifies a start thread event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   377
    EEventsUserTracesLost = 11, /**< Identifies user traces being lost. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   378
    EEventsAddProcess = 12, /**< Identifies an AddProcess event */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   379
    EEventsRemoveProcess = 13, /**< Identifies a RemoveProcess event */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   380
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   381
      @internalTechnology
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   382
      A debug agent should find the number of event types from the DFBlock rather than this enumerator.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   383
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   384
    EEventsLast
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   385
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   386
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   387
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   388
  These enumerators provide information about constants which are used in the RSecuritySvrSession API.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   389
  TTag structures associated with the ETagHeaderIdApiConstants sub-block will have iTagId values from this enumeration.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   390
  See each enumerator for an explanation of how a TTag with that iTagId should be interpreted.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   391
 */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   392
enum TFunctionalityApiConstants
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   393
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   394
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   395
      Corresponds to the size of a buffer required to store a TEventInfo.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   396
      @see TEventInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   397
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   398
    EApiConstantsTEventInfoSize = 0,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   399
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   400
      @internalTechnology
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   401
      A debug agent should find the number of API constants tags from the DFBlock rather than this enumerator.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   402
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   403
    EApiConstantsLast,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   404
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   405
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   406
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   407
  The set of possible actions which could be taken when a kernel event occurs.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   408
  Not all actions are possible for all events. The debug functionality sub-block with header id ETagHeaderIdEvents
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   409
  indicates which values are permitted for each event. The value given for that event should be
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   410
  considered as the most intrusive action the debugger may set: with the definition that EActionSuspend is more
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   411
  intrusive than EActionContinue, which is more intrusive than EActionIgnore.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   412
  @see RSecuritySvrSession
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   413
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   414
enum TKernelEventAction
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   415
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   416
    /** If an event action is set to this value then events of that type will be
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   417
      ignored, and not reported to the debugger. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   418
    EActionIgnore = 0,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   419
    /** If an event action is set to this value then events of that type will be
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   420
      reported to the debugger and the thread which generated the event will be
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   421
      allowed to continue executing. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   422
    EActionContinue = 1,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   423
    /** If an event action is set to this value then events of that type will be
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   424
      reported to the debugger and the thread which generated the event will be
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   425
      suspended. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   426
    EActionSuspend = 2,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   427
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   428
      @internalTechnology
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   429
      Count of event actions.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   430
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   431
    EActionLast
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   432
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   433
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   434
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   435
  These enumerators provide information about the ability of the debug subsystem to support OEM Debug tokens.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   436
  TTag structures associated with the ETagHeaderIdSecurity sub-block will have iTagId values from this enumeration.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   437
  See each enumerator for an explanation of how a TTag with that iTagId should be interpreted.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   438
 */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   439
enum TFunctionalitySecurity
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   440
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   441
    ESecurityOEMDebugToken = 0,  /**< Indicates whether the DSS supports the use of OEM Debug Tokens. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   442
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   443
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   444
      @internalTechnology
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   445
      A debug agent should find the number of tags from the DFBlock rather than this enumerator.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   446
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   447
    ESecurityLast
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   448
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   449
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   450
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   451
  Used for storing the contents of a 32 bit register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   452
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   453
typedef TUint32 TRegisterValue32;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   454
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   455
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   456
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   457
 * Processor mode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   458
 */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   459
enum TArmProcessorModes
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   460
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   461
    EUserMode=0x10,     //!< EUserMode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   462
    EFiqMode=0x11,      //!< EFiqMode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   463
    EIrqMode=0x12,      //!< EIrqMode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   464
    ESvcMode=0x13,      //!< ESvcMode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   465
    EAbortMode=0x17,    //!< EAbortMode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   466
    EUndefMode=0x1b,    //!< EUndefMode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   467
    EMaskMode=0x1f      //!< EMaskMode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   468
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   469
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   470
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   471
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   472
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   473
  Structure containing information about the state of the registers when a
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   474
  hardware exception occurred
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   475
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   476
class TRmdArmExcInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   477
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   478
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   479
    /** Enumeration detailing the types of exception which may occur. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   480
    enum TExceptionType
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   481
        {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   482
        /** Enumerator signifying that a prefetch abort error has occurred. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   483
        EPrefetchAbort = 0,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   484
        /** Enumerator signifying that a data abort error has occurred. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   485
        EDataAbort = 1,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   486
        /** Enumerator signifying that an undefined instruction error has occurred. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   487
        EUndef =2
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   488
        };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   489
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   490
    /** Value of CPSR. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   491
    TRegisterValue32 iCpsr;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   492
    /** Type of exception which has occurred. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   493
    TExceptionType iExcCode;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   494
    /** Value of R13 supervisor mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   495
    TRegisterValue32 iR13Svc;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   496
    /** Value of user mode register R4. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   497
    TRegisterValue32 iR4;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   498
    /** Value of user mode register R5. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   499
    TRegisterValue32 iR5;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   500
    /** Value of user mode register R6. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   501
    TRegisterValue32 iR6;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   502
    /** Value of user mode register R7. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   503
    TRegisterValue32 iR7;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   504
    /** Value of user mode register R8. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   505
    TRegisterValue32 iR8;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   506
    /** Value of user mode register R9. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   507
    TRegisterValue32 iR9;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   508
    /** Value of user mode register R10. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   509
    TRegisterValue32 iR10;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   510
    /** Value of user mode register R11. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   511
    TRegisterValue32 iR11;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   512
    /** Value of R14 supervisor mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   513
    TRegisterValue32 iR14Svc;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   514
    /** Address which caused exception (System Control Coprocessor Fault Address Register) */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   515
    TRegisterValue32 iFaultAddress;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   516
    /** Value of System Control Coprocessor Fault Status Register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   517
    TRegisterValue32 iFaultStatus;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   518
    /** Value of SPSR supervisor mode banked register. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   519
    TRegisterValue32 iSpsrSvc;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   520
    /** Value of user mode register R13. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   521
    TRegisterValue32 iR13;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   522
    /** Value of user mode register R14. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   523
    TRegisterValue32 iR14;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   524
    /** Value of user mode register R0. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   525
    TRegisterValue32 iR0;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   526
    /** Value of user mode register R1. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   527
    TRegisterValue32 iR1;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   528
    /** Value of user mode register R2. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   529
    TRegisterValue32 iR2;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   530
    /** Value of user mode register R3. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   531
    TRegisterValue32 iR3;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   532
    /** Value of user mode register R12. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   533
    TRegisterValue32 iR12;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   534
    /** Value of user mode register R15, points to instruction which caused exception. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   535
    TRegisterValue32 iR15;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   536
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   537
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   538
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   539
  The maximum size, in bytes, of the panic category string returned as part of a
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   540
  TEventInfo object.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   541
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   542
  @see TEventInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   543
  @see TThreadKillInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   544
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   545
const TInt KPanicCategoryMaxName = KMaxName;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   546
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   547
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   548
  Event specific information returned as part of a TEventInfo object when
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   549
  an agent set breakpoint is hit.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   550
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   551
class TThreadBreakPointInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   552
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   553
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   554
    /** Identifies the type of exception. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   555
    TExcType iExceptionNumber;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   556
    /** Structure containing information about the ARM register values. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   557
    TRmdArmExcInfo iRmdArmExcInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   558
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   559
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   560
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   561
  Event specific information returned as part of a TEventInfo object when
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   562
  a software exception occurs.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   563
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   564
class TThreadSwExceptionInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   565
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   566
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   567
    /** The value of the program counter. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   568
    TUint32 iCurrentPC;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   569
    /** Identifies the type of exception. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   570
    TExcType iExceptionNumber;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   571
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   572
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   573
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   574
  Event specific information returned as part of a TEventInfo object when
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   575
  a hardware exception occurs.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   576
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   577
class TThreadHwExceptionInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   578
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   579
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   580
    /** Identifies the type of exception. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   581
    TExcType iExceptionNumber;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   582
    /** Structure containing information about the ARM register values. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   583
    TRmdArmExcInfo iRmdArmExcInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   584
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   585
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   586
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   587
  Event specific information returned as part of a TEventInfo object when
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   588
  a thread kill event occurs.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   589
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   590
class TThreadKillInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   591
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   592
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   593
    /** The value of the program counter. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   594
    TUint32 iCurrentPC;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   595
    /** Specifies the reason for the kill thread event, this value is specific to the killed thread and does not correspond to a standard Symbian enumeration. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   596
    TInt iExitReason;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   597
    /** Specifies the type of the thread kill event, values correspond to elements of TExitType. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   598
    TUint8 iExitType;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   599
    /** The panic category of the killed thread. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   600
    TUint8 iPanicCategory[KPanicCategoryMaxName];
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   601
    /** Contains the length in bytes of the initialised data in iPanicCategory. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   602
    TInt iPanicCategoryLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   603
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   604
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   605
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   606
  Event specific information returned as part of a TEventInfo object when
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   607
  a library load event occurs.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   608
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   609
class TLibraryLoadedInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   610
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   611
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   612
    /** The name of the file that the library was loaded from. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   613
    TUint8 iFileName[KMaxName];
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   614
    /** Contains the length in bytes of the initialised data in iFileName. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   615
    TInt iFileNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   616
    /** The code base address (.text). */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   617
    TUint32 iCodeAddress;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   618
    /** The base address of the initialised data section (.data). */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   619
    TUint32 iDataAddress;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   620
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   621
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   622
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   623
  Event specific information returned as part of a TEventInfo object when
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   624
  a thread is started
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   625
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   626
class TStartThreadInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   627
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   628
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   629
    /** The name of the file that the process owning the thread was created from. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   630
    TUint8 iFileName[KMaxName];
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   631
    /** Contains the length in bytes of the initialised data in iFileName. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   632
    TInt iFileNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   633
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   634
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   635
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   636
  Event specific information returned as part of a TEventInfo object when
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   637
  a process is added. Note that the Process may not be fully constructed,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   638
  e.g. no threads.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   639
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   640
class TAddProcessInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   641
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   642
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   643
    /** The name of the file that the process was created from. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   644
    TUint8 iFileName[KMaxName];
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   645
    /** Contains the length in bytes of the initialised data in iFileName. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   646
    TInt iFileNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   647
    /** The UID3 of this process */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   648
    TUint32 iUid3;  
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   649
    /** Contains the CreatorThread ID if available: May be 0 */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   650
    TUint64 iCreatorThreadId;  
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   651
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   652
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   653
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   654
  Event specific information returned as part of a TEventInfo object when
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   655
  a process is removed. Note that the Process may not be fully destroyed,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   656
  so its resources should only be accessed if you already have a handle to it.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   657
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   658
class TRemoveProcessInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   659
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   660
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   661
    /** The name of the file that the process was created from. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   662
    TUint8 iFileName[KMaxName];
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   663
    /** Contains the length in bytes of the initialised data in iFileName. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   664
    TInt iFileNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   665
    TUint32 iSpare1;    // Unused
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   666
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   667
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   668
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   669
  Event specific information returned as part of a TEventInfo object when
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   670
  a library unload event occurs.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   671
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   672
class TLibraryUnloadedInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   673
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   674
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   675
    /** The name of the file that the library was loaded from. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   676
    TUint8 iFileName[KMaxName];
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   677
    /** Contains the length in bytes of the initialised data in iFileName. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   678
    TInt iFileNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   679
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   680
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   681
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   682
 * Enum to represent the context of a user trace message
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   683
 */ 
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   684
enum TUserTraceMessageContext 
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   685
{
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   686
    ESingleMessage = 0x1,   /** Indicates this message is the only one corresponding to a given user trace */ 
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   687
    EMultiStart = 0x2, /** Indicates this message is the start of a user trace which consists of multiple messages */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   688
    EMultiMid = 0x3, /** Indicates this message is one in a series of user trace messages */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   689
    EMultiEnd = 0x4, /** Indicates this message is the last in a series of user trace messages */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   690
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   691
      @internalTechnology
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   692
      A debug agent should find the number of core tags from the DFBlock rather than this enumerator.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   693
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   694
    ELast = 0x5 
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   695
};
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   696
    
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   697
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   698
 *   Event specific information returned as part of a TEventInfo object 
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   699
 *   when a user trace event occurs.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   700
 */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   701
class TUserTraceInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   702
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   703
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   704
    /** The user trace text */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   705
    TUint8 iUserTraceText[TUserTraceSize];
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   706
    
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   707
    /** User trace text length */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   708
    TInt iUserTraceLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   709
    
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   710
    /** The context of the message */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   711
    TUserTraceMessageContext iMessageStatus;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   712
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   713
    
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   714
    
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   715
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   716
  Structure used to store information about an event. An object of this type
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   717
  is passed as an argument to the RSecuritySvrSession::GetEvent function,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   718
  and is filled in by the debug driver, and returned to the agent, when a
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   719
  relevant event occurs.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   720
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   721
  The debug functionality block contains the size in bytes of the data that
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   722
  the driver will return when a GetEvent call is issued. A debug agent should
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   723
  ensure that this value equals the size of this TEventInfo object to ensure
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   724
  that a compatible debug driver is being used. The value is stored as
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   725
  EApiConstantsTEventInfoSize in the TFunctionalityApiConstants block.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   726
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   727
  @see RSecuritySvrSession::GetDebugFunctionality
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   728
  @see RSecuritySvrSession::GetEvent
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   729
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   730
class TEventInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   731
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   732
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   733
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   734
    /** Constructor sets all elements to default values. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   735
    inline TEventInfo() { Reset(); };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   736
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   737
    /** Resets all values to default values. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   738
    inline void Reset()
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   739
        {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   740
        iProcessId = 0;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   741
        iProcessIdValid = EFalse;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   742
        iThreadId = 0;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   743
        iThreadIdValid = EFalse;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   744
        iEventType = (TEventType)NULL;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   745
        };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   746
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   747
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   748
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   749
    /** The process ID of the process which the event occurred in. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   750
    TUint64                 iProcessId;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   751
    /** The thread ID of the thread which the event occurred in. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   752
    TUint64                 iThreadId;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   753
    /** Has value ETrue if iProcessId is valid, EFalse otherwise. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   754
    TUint8                  iProcessIdValid;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   755
    /** Has value ETrue if iThreadId is valid, EFalse otherwise. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   756
    TUint8                  iThreadIdValid;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   757
    /** Indicates the type of the event. This type should be used to determine
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   758
        the type of the information stored in the union which is part of this class. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   759
    TEventType              iEventType;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   760
    union
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   761
        {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   762
        /** Information which is specific to the break point event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   763
        TThreadBreakPointInfo iThreadBreakPointInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   764
        /** Information which is specific to the software exception event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   765
        TThreadSwExceptionInfo iThreadSwExceptionInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   766
        /** Information which is specific to the hardware exception event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   767
        TThreadHwExceptionInfo iThreadHwExceptionInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   768
        /** Information which is specific to the thread kill event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   769
        TThreadKillInfo iThreadKillInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   770
        /** Information which is specific to the library loaded event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   771
        TLibraryLoadedInfo iLibraryLoadedInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   772
        /** Information which is specific to the library unloaded event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   773
        TLibraryUnloadedInfo iLibraryUnloadedInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   774
        /** Information which is specific to the user trace event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   775
        TUserTraceInfo iUserTraceInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   776
        /** Information which is specific to the start thread event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   777
        TStartThreadInfo iStartThreadInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   778
        /** Information which is specific to the Add Process event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   779
        TAddProcessInfo iAddProcessInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   780
        /** Information which is specific to the Remove Process event. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   781
        TRemoveProcessInfo iRemoveProcessInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   782
        };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   783
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   784
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   785
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   786
  @internalComponent
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   787
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   788
class TProcessInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   789
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   790
    public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   791
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   792
        inline TProcessInfo() { Reset(); }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   793
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   794
        inline TProcessInfo(TUint32 aId, TUint32 aCodeAddress, TUint32 aCodeSize, TUint32 aDataAddress)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   795
                : iId(aId),
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   796
                  iCodeAddress(aCodeAddress),
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   797
                  iCodeSize(aCodeSize),
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   798
                  iDataAddress(aDataAddress) { }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   799
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   800
        inline void Reset()
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   801
            {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   802
            iId = 0;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   803
            iCodeAddress = 0;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   804
            iCodeSize = 0;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   805
            iDataAddress = 0;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   806
            }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   807
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   808
    public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   809
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   810
        TUint32 iId;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   811
        TUint32 iCodeAddress;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   812
        TUint32 iCodeSize;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   813
        TUint32 iDataAddress;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   814
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   815
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   816
/* Other functionality may be defined here later */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   817
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   818
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   819
Represents a register id value, in the terms of the Symbian ELF format:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   820
 - bits 0-7 define the class
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   821
 - bits 8-15 define the rd_id
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   822
 - bits 16-31 define the rd_sub_id
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   823
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   824
Both the core registers (TFunctionalityRegister type) and the coprocessor registers
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   825
follow this identifier scheme.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   826
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   827
typedef TUint32 TRegisterInfo;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   828
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   829
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   830
Enum representing the status flags which could be returned from a register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   831
access call.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   832
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   833
enum TRegisterFlag
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   834
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   835
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   836
    Default value, a register access call will never return this value
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   837
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   838
    ENotSet = 0,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   839
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   840
    Would be returned if the register is supported by the debug driver but the kernel cannot access the register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   841
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   842
    EInValid = 1,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   843
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   844
    Would be returned if the register could be accessed correctly
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   845
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   846
    EValid = 2,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   847
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   848
    Would be returned if the register is not supported by the debug driver
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   849
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   850
    ENotSupported = 3,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   851
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   852
    Would be returned if a non-4 byte register value was requested
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   853
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   854
    EBadSize = 4
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   855
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   856
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   857
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   858
Enum representing the different ARM CPU instruction set architectures.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   859
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   860
enum TArchitectureMode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   861
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   862
    /** Represents the ARM CPU architecture. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   863
    EArmMode = 1,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   864
    /** Represents the Thumb CPU architecture. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   865
    EThumbMode = 2,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   866
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   867
      Represents the Thumb2 CPU architecture.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   868
      @prototype
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   869
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   870
    EThumb2EEMode = 3
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   871
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   872
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   873
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   874
  Used as an identifier for breakpoints set by the RSecuritySvrSession::SetBreak function.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   875
  @see RSecuritySvrSession
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   876
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   877
typedef TInt32 TBreakId;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   878
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   879
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   880
  Specifies the type of a code segment.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   881
  @see TCodeSegListEntry
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   882
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   883
enum TCodeSegType
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   884
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   885
    EUnknownCodeSegType = 0, /**< Signifies an unknown code segment type. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   886
    EExeCodeSegType = 1,     /**< Signifies a code segment belonging to an executable. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   887
    EDllCodeSegType = 2      /**< Signifies a code segment belonging to a library. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   888
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   889
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   890
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   891
Structure used for extracting data from a descriptor returned by a call to
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   892
RSecuritySvrSession::GetList() when GetList() is called with TListId::ECodeSegs
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   893
as the first argument.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   894
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   895
@see RSecuritySvrSession::GetList()
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   896
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   897
@code
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   898
//buffer is a TDesC8 containing 4-byte aligned TCodeSegListEntry objects
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   899
//create a pointer to the start of the data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   900
TUint8* ptr = (TUint8*)buffer.Ptr();
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   901
//create a pointer to the end of the data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   902
const TUint8* ptrEnd = ptr + buffer.Length();
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   903
while(ptr < ptrEnd)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   904
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   905
    //cast the pointer to be a TCodeSegListEntry object
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   906
    TCodeSegListEntry& entry = *(TCodeSegListEntry*)ptr;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   907
    //use the TCodeSegListEntry pointer, i.e.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   908
    TUint16 nameLength = entry.iNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   909
    TPtr name(&(entry.iName[0]), nameLength, nameLength);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   910
    // move ptr on to point to the next TCodeSegListEntry object
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   911
    ptr += Align4(entry.GetSize());
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   912
    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   913
@endcode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   914
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   915
class TCodeSegListEntry
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   916
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   917
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   918
    TInt GetSize() const;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   919
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   920
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   921
      Address of the start of the code segment.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   922
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   923
    TUint32 iCodeBase;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   924
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   925
      Size of the code segment.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   926
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   927
    TUint32 iCodeSize;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   928
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   929
      Size of the const data segment
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   930
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   931
    TUint32 iConstDataSize;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   932
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   933
      Address of the initialised data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   934
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   935
    TUint32 iInitialisedDataBase;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   936
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   937
      Size of the initialised data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   938
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   939
    TUint32 iInitialisedDataSize;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   940
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   941
      Size of the uninitialised data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   942
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   943
    TUint32 iUninitialisedDataSize;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   944
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   945
      Boolean indicating whether the code segment is execute in place
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   946
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   947
    TBool iIsXip;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   948
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   949
      Indicates whether the code segment is from an executable or a dll, or neither
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   950
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   951
    TCodeSegType iCodeSegType;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   952
    /** Uid3 of this segment. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   953
    TUint32 iUid3;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   954
    /** Currently unused element. May be used in future to aid maintaining compatibility. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   955
    TUint32 iSpare2;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   956
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   957
      Length of the code segment's name
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   958
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   959
    TUint16 iNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   960
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   961
      First two bytes of the code segment's name, the name should be considered to
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   962
      extend past the end of the TCodeSegListEntry structure to a length
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   963
      corresponding to iNameLength
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   964
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   965
    TUint16 iName[1];
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   966
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   967
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   968
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   969
Returns the size of the TCodeSegListEntry, including the file name length
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   970
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   971
@return the size, in bytes, of the TCodeSegListEntry and the code segment's
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   972
file name
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   973
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   974
inline TInt TCodeSegListEntry::GetSize() const
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   975
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   976
    return sizeof(TCodeSegListEntry) - sizeof(iName) + (2 * iNameLength);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   977
    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   978
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   979
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   980
Structure used for extracting data from a descriptor returned by a call to
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   981
RSecuritySvrSession::GetList() when GetList() is called with TListId::EXipLibraries
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   982
as the first argument.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   983
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   984
@see RSecuritySvrSession::GetList()
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   985
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   986
@code
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   987
//buffer is a TDesC8 containing 4-byte aligned TXipLibraryListEntry objects
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   988
//create a pointer to the start of the data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   989
TUint8* ptr = (TUint8*)buffer.Ptr();
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   990
//create a pointer to the end of the data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   991
const TUint8* ptrEnd = ptr + buffer.Length();
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   992
while(ptr < ptrEnd)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   993
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   994
    //cast the pointer to be a TXipLibraryListEntry object
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   995
    TXipLibraryListEntry& entry = *(TXipLibraryListEntry*)ptr;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   996
    //use the TXipLibraryListEntry pointer, i.e.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   997
    TUint16 nameLength = entry.iNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   998
    TPtr name(&(entry.iName[0]), nameLength, nameLength);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
   999
    // move ptr on to point to the next TXipLibraryListEntry object
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1000
    ptr += Align4(entry.GetSize());
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1001
    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1002
@endcode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1003
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1004
class TXipLibraryListEntry
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1005
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1006
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1007
    TInt GetSize() const;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1008
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1009
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1010
      Address of the start of the library's code segment.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1011
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1012
    TUint32 iCodeBase;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1013
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1014
      Size of the code segment.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1015
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1016
    TUint32 iCodeSize;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1017
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1018
      Size of the const data segment
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1019
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1020
    TUint32 iConstDataSize;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1021
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1022
      Address of the initialised data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1023
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1024
    TUint32 iInitialisedDataBase;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1025
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1026
      Size of the initialised data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1027
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1028
    TUint32 iInitialisedDataSize;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1029
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1030
      Size of the uninitialised data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1031
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1032
    TUint32 iUninitialisedDataSize;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1033
    /** Currently unused element. May be used in future to aid maintaining compatibility. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1034
    TUint32 iSpare1;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1035
    /** Currently unused element. May be used in future to aid maintaining compatibility. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1036
    TUint32 iSpare2;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1037
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1038
      Length of the library's name
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1039
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1040
    TUint16 iNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1041
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1042
      First two bytes of the code segment's name, the name should be considered to
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1043
      extend past the end of the TXipLibraryListEntry structure to a length
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1044
      corresponding to iNameLength
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1045
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1046
    TUint16 iName[1];
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1047
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1048
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1049
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1050
Returns the size of the TXipLibraryListEntry, including the file name length
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1051
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1052
@return the size, in bytes, of the TXipLibraryListEntry and the library's
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1053
file name
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1054
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1055
inline TInt TXipLibraryListEntry::GetSize() const
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1056
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1057
    return sizeof(TXipLibraryListEntry) - sizeof(iName) + (2 * iNameLength);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1058
    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1059
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1060
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1061
Structure used for extracting data from a descriptor returned by a call to
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1062
RSecuritySvrSession::GetList() when GetList() is called with TListId::EExecutables
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1063
as the first argument.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1064
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1065
@see RSecuritySvrSession::GetList()
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1066
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1067
@code
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1068
//buffer is a TDesC8 containing 4-byte aligned TExecutablesListEntry objects
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1069
//create a pointer to the start of the data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1070
TUint8* ptr = (TUint8*)buffer.Ptr();
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1071
//create a pointer to the end of the data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1072
const TUint8* ptrEnd = ptr + buffer.Length();
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1073
while(ptr < ptrEnd)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1074
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1075
    //cast the pointer to be a TExecutablesListEntry object
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1076
    TExecutablesListEntry& entry = *(TExecutablesListEntry*)ptr;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1077
    //use the TExecutablesListEntry pointer, i.e.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1078
    TUint16 nameLength = entry.iNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1079
    TPtr name(&(entry.iName[0]), nameLength, nameLength);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1080
    // move ptr on to point to the next TExecutablesListEntry object
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1081
    ptr += Align4(entry.GetSize());
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1082
    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1083
@endcode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1084
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1085
class TExecutablesListEntry
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1086
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1087
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1088
    TInt GetSize() const;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1089
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1090
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1091
      Indicates whether an agent has registered to actively debug the executable,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1092
      a non-zero value indicates that an agent has attached.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1093
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1094
    TUint8 iIsActivelyDebugged;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1095
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1096
      Indicates whether any agents have registered to passively debug the executable,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1097
      a non-zero value indicates that at least one agent is attached passively
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1098
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1099
    TUint8 iIsPassivelyDebugged;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1100
    /** Currently unused element. May be used in future to aid maintaining compatibility. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1101
    TUint32 iSpare1;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1102
    /** Currently unused element. May be used in future to aid maintaining compatibility. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1103
    TUint32 iSpare2;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1104
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1105
      Length of the executable's name
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1106
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1107
    TUint16 iNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1108
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1109
      First two bytes of the executable's name, the name should be considered to
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1110
      extend past the end of the TExecutablesListEntry structure to a length
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1111
      corresponding to iNameLength
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1112
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1113
    TUint16 iName[1];
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1114
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1115
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1116
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1117
Returns the size of the TExecutablesListEntry, including the file name length
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1118
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1119
@return the size, in bytes, of the TExecutablesListEntry and the executable's
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1120
file name
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1121
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1122
inline TInt TExecutablesListEntry::GetSize() const
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1123
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1124
    return sizeof(TExecutablesListEntry) - sizeof(iName) + (2*iNameLength);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1125
    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1126
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1127
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1128
Structure used for extracting data from a descriptor returned by a call to
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1129
RSecuritySvrSession::GetList() when GetList() is called with TListId::EProcesses
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1130
as the first argument.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1131
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1132
@see RSecuritySvrSession::GetList()
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1133
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1134
@code
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1135
//buffer is a TDesC8 containing 4-byte aligned TProcessListEntry objects
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1136
//create a pointer to the start of the data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1137
TUint8* ptr = (TUint8*)buffer.Ptr();
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1138
//create a pointer to the end of the data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1139
const TUint8* ptrEnd = ptr + buffer.Length();
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1140
while(ptr < ptrEnd)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1141
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1142
    //cast the pointer to be a TProcessListEntry object
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1143
    TProcessListEntry& entry = *(TProcessListEntry*)ptr;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1144
    //use the TProcessListEntry pointer, i.e.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1145
    TUint16 fileNameLength = entry.iFileNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1146
    TPtr name(&(entry.iNames[0]), fileNameLength, fileNameLength);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1147
    // move ptr on to point to the next TProcessListEntry object
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1148
    ptr += Align4(entry.GetSize());
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1149
    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1150
@endcode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1151
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1152
class TProcessListEntry
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1153
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1154
    public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1155
        TInt GetSize() const;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1156
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1157
    public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1158
        /** Process ID */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1159
        TUint64 iProcessId;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1160
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1161
        /** The Uid3 of the process */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1162
        TUint32 iUid3;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1163
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1164
        /** 
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1165
         * Process Attributes
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1166
         * @see DProcess::TProcessAttributes
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1167
         */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1168
        TInt iAttributes;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1169
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1170
        /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1171
         * Length of fully qualified file name of the process in bytes. Note that this
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1172
         * entry may be 0 if the process is in the process of shutting down.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1173
         */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1174
        TUint16 iFileNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1175
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1176
        /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1177
         * Length of current dynamic name of the process in bytes
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1178
         */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1179
        TUint16 iDynamicNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1180
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1181
        /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1182
         * First two bytes of the process' file name, the name should be considered to
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1183
         * extend past the end of the TProcessListEntry structure to a length
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1184
         * corresponding to iFileNameLength. Directly after the data corresponding to the
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1185
         * file name, the dynamic name is stored with a length of iDynamicNameLength characters.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1186
         * Note that these names are not null terminated and are concatenated directly after each other.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1187
         * 
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1188
         * @code
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1189
         * TProcessListEntry& entry; // entry is a reference to a TProcessListEntry
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1190
         *
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1191
         * //get the file name..
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1192
         * TPtr fileName(&(entry.iNames[0]), iFileNameLength, iFileNameLength);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1193
         *
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1194
         * //get the dynamic name length..
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1195
         * TPtr dynamicName(&(entry.iNames[0]) + iFileNameLength, iDynamicNameLength, iDynamicNameLength);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1196
         * @endcode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1197
         */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1198
        TUint16 iNames[1];
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1199
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1200
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1201
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1202
Returns the size of the TProcessListEntry, including the file name length and the
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1203
dynamic name length
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1204
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1205
@return the size, in bytes, of the TProcessListEntry and the executable's
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1206
file name file name and dynamic name
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1207
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1208
inline TInt TProcessListEntry::GetSize() const
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1209
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1210
    return sizeof(TProcessListEntry) - sizeof(iNames) + (2 * (iFileNameLength + iDynamicNameLength));
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1211
    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1212
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1213
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1214
Structure used for extracting data from a descriptor returned by a call to
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1215
RSecuritySvrSession::GetList() when GetList() is called with TListId::EThreads
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1216
as the first argument.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1217
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1218
@see RSecuritySvrSession::GetList()
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1219
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1220
@code
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1221
//buffer is a TDesC8 containing 4-byte aligned TThreadListEntry objects
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1222
//create a pointer to the start of the data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1223
TUint8* ptr = (TUint8*)buffer.Ptr();
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1224
//create a pointer to the end of the data
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1225
const TUint8* ptrEnd = ptr + buffer.Length();
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1226
while(ptr < ptrEnd)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1227
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1228
    //cast the pointer to be a TThreadListEntry object
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1229
    TThreadListEntry& entry = *(TThreadListEntry*)ptr;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1230
    //use the TThreadListEntry pointer, i.e.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1231
    TUint16 nameLength = entry.iNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1232
    TPtr name(&(entry.iName[0]), nameLength, nameLength);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1233
    // move ptr on to point to the next TThreadListEntry object
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1234
    ptr += Align4(entry.GetSize());
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1235
    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1236
@endcode
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1237
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1238
class TThreadListEntry
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1239
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1240
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1241
    TInt GetSize() const;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1242
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1243
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1244
      Thread ID
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1245
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1246
    TUint64 iThreadId;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1247
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1248
      Process ID
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1249
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1250
    TUint64 iProcessId;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1251
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1252
      Address of the base of the supervisor stack
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1253
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1254
    TUint32 iSupervisorStackBase;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1255
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1256
      Size of the supervisor stack
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1257
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1258
    TUint32 iSupervisorStackSize;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1259
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1260
      Non-zero if iSupervisorStackBase has been set correctly
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1261
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1262
    TUint8 iSupervisorStackBaseValid;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1263
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1264
      Non-zero if iSupervisorStackSize has been set correctly
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1265
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1266
    TUint8 iSupervisorStackSizeValid;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1267
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1268
      Address of the thread's supervisor stack pointer
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1269
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1270
    TUint32 iSupervisorStackPtr;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1271
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1272
      Indicator of whether the value returned as iSupervisorStackPtr is valid.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1273
      It is necessary, but not necessarily sufficient, that the thread be suspended
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1274
      for a valid value to be returned. This may be removed from the final API and
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1275
      the value would be extracted instead via the ReadRegisters type calls.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1276
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1277
    TRegisterFlag iSupervisorStackPtrValid;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1278
    /** Currently unused element. May be used in future to aid maintaining compatibility. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1279
    TUint32 iSpare1;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1280
    /** Currently unused element. May be used in future to aid maintaining compatibility. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1281
    TUint32 iSpare2;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1282
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1283
      The length of the thread's name
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1284
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1285
    TUint16 iNameLength;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1286
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1287
      First two bytes of the thread's name, the name should be considered to
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1288
      extend past the end of the TThreadListEntry structure to a length
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1289
      corresponding to iNameLength
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1290
      */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1291
    TUint16 iName[1];
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1292
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1293
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1294
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1295
Returns the size of the TThreadListEntry, including the name length
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1296
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1297
@return the size, in bytes, of the TExecutablesListEntry and the thread's name
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1298
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1299
inline TInt TThreadListEntry::GetSize() const
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1300
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1301
    return sizeof(TThreadListEntry) - sizeof(iName) + (2 * iNameLength);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1302
    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1303
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1304
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1305
Denotes which list type to return from a RSecuritySvrSession::GetList() call
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1306
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1307
@see RSecuritySvrSession::GetList()
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1308
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1309
enum TListId
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1310
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1311
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1312
    Indicates that the GetList() call should return a list of the processes in
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1313
    the system. The returned buffer will contain an array of 4-byte aligned
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1314
    TProcessListEntry objects.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1315
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1316
    @see TProcessListEntry
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1317
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1318
    EProcesses = 0,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1319
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1320
    Indicates that the GetList() call should return a list of the threads in
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1321
    the system. The returned buffer will contain an array of 4-byte aligned
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1322
    TThreadListEntry objects.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1323
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1324
    @see TThreadListEntry
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1325
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1326
    EThreads = 1,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1327
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1328
    Indicates that the GetList() call should return a list of the code segments in
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1329
    the system. The returned buffer will contain an array of 4-byte aligned
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1330
    TCodeSegListEntry objects.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1331
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1332
    @see TCodeSegListEntry
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1333
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1334
    ECodeSegs = 2,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1335
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1336
    Indicates that the GetList() call should return a list of the XIP libraries in
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1337
    the system. The returned buffer will contain an array of 4-byte aligned
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1338
    EXipLibraries objects.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1339
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1340
    @see EXipLibraries
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1341
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1342
    EXipLibraries = 3,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1343
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1344
    Indicates that the GetList() call should return a list of the executables in
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1345
    the system. The returned buffer will contain an array of 4-byte aligned
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1346
    EExecutables objects.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1347
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1348
    @see EExecutables
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1349
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1350
    EExecutables = 4,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1351
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1352
    Indicates that the GetList() call should return a list of the logical devices in the system.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1353
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1354
    ELogicalDevices = 5,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1355
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1356
    Indicates that the GetList() call should return a list of the mutexes in the system.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1357
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1358
    EMutexes = 6,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1359
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1360
    Indicates that the GetList() call should return a list of the servers in the system.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1361
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1362
    EServers = 7,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1363
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1364
    Indicates that the GetList() call should return a list of the sessions in the system.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1365
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1366
    ESessions = 8,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1367
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1368
    Indicates that the GetList() call should return a list of the semaphores in the system.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1369
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1370
    ESemaphores = 9,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1371
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1372
    Indicates that the GetList() call should return a list of the chunks in the system.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1373
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1374
    EChunks = 10,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1375
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1376
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1377
    Provides a complete list of all the breakpoints in the system and their
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1378
    current state.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1379
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1380
    @see EBreakpoints
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1381
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1382
    EBreakpoints = 11,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1383
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1384
    /** 
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1385
    The following are for the possible use of kernel-side debug and SMP breakpoint
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1386
    manipulation.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1387
    */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1388
    ESetBreak = 12,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1389
    ERemoveBreak = 13,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1390
    EModifyBreak = 14,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1391
    
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1392
    /**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1393
     * Provides static information of the system
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1394
     */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1395
    EStaticInfo = 15,
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1396
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1397
    /** Last listing enum. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1398
    EListLast
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1399
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1400
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1401
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1402
  Bit field values denoting the scope of a listing.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1403
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1404
  In the debug functionality block, the TTag::iValue element which is returned for a listing tag
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1405
  should be considered as a union of the supported values from this enumeration for that listing.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1406
  */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1407
enum TListScope
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1408
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1409
    EScopeNone = 0x0,             /**< Corresponds to no scope for a listing. equivalent to not supported */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1410
    EScopeGlobal= 0x1,            /**< Corresponds to a global scope for a listing. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1411
    EScopeProcessSpecific = 0x2,  /**< Corresponds to a process specific scope for a listing. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1412
    EScopeThreadSpecific = 0x4    /**< Corresponds to a thread specific scope for a listing. */
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1413
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1414
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1415
/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1416
@internalComponent
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1417
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1418
Interface constructor for passing IPC data for the GetList call.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1419
*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1420
class TListDetails
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1421
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1422
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1423
    TListDetails(const TListId aListId, const TListScope aListScope, TUint64 aTargetId=0)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1424
        : iListId(aListId),
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1425
          iListScope(aListScope),
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1426
          iTargetId(aTargetId) {}
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1427
public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1428
    TListId iListId;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1429
    TListScope iListScope;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1430
    TUint64 iTargetId;
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1431
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1432
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1433
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1434
    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1435
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1436
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1437
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1438
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1439
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1440
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1441
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1442
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1443
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1444
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1445
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1446
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1447
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1448
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1449
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1450
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1451
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1452
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1453
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1454
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1455
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1456
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1457
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1458
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1459
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1460
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1461
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1462
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1463
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1464
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1465
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1466
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1467
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1468
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1469
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1470
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1471
namespace Debug
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1472
    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1473
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1474
	/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1475
	 * The stop-mode debug interface is a stateless interface which may be called at any point
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1476
	 * except user mode, provided the rest of the OS is not going to run or pre-empt it.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1477
	 * For example, for stop-mode debugging, the ICE may run the stop_mode_api routine to
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1478
	 * collect information about the system so long as no exceptions are enabled, and all 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1479
	 * registers/stack are preserved and restored after the call completes. Note that in an SMP environment
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1480
	 * it is expected that ALL the CPU's have been stopped
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1481
	 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1482
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1483
	/** Stop Mode Debug API Version Numbers */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1484
	const TUint KStopModeMajorVersionNumber=0;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1485
	const TUint KStopModeMinorVersionNumber=0;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1486
	const TUint KStopModePatchVersionNumber=2;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1487
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1488
	/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1489
	 * Enumerators used to identify the buffers created for use with the Stop-Mode Debug API.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1490
	 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1491
	enum TBufferType
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1492
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1493
		EBuffersFunctionality = 0,   /**< Enumerator corresponding to the buffer created to store the debug functionality block. */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1494
		EBuffersRequest = 1,         /**< Enumerator corresponding to the request buffer. */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1495
		EBuffersResponse = 2,        /**< Enumerator corresponding to the response buffer. */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1496
		
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1497
		/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1498
		 * @internalTechnology
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1499
		 * A user should find the number of buffer tags from the DFBlock rather than this enumerator.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1500
		 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1501
		EBuffersLast
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1502
		};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1503
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1504
	/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1505
	 * Enumerators used to identify the functions for use with the Stop-Mode Debug API.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1506
	 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1507
	enum TFunctionalityStopModeFunctions
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1508
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1509
		EStopModeFunctionsExitPoint = 0,  /**< Enumerator corresponding to the Debug::GetList() function. */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1510
		EStopModeFunctionsGetList = 1,    /**< Enumerator corresponding to the Debug::ExitPoint() function. */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1511
		EStopModeFunctionsTestAPI = 2,	  /**< Enumerator corresponding to the Debug::TestAPI() function. */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1512
		
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1513
		/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1514
		 * @internalTechnology
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1515
		 * A user should find the number of supported functions from the DFBlock rather than this enumerator.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1516
		 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1517
		EStopModeFunctionsLast
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1518
		};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1519
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1520
	/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1521
	 * This structure defines the start elements of a stop-mode debug functionality block.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1522
	 * It is assumed that the rest of the functionality block will extend past the end of
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1523
	 * the structure and will be accessed according to the documented format of the
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1524
	 * stop-mode functionality block.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1525
	 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1526
	struct DFunctionalityBlock
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1527
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1528
		TUint32 iSize;				/**< Size of the functionality block in bytes. */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1529
		TVersion iStopModeVersion;	/** Version of the stop-mode debug API. */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1530
		TTagHeader iFirstHeader;	/** The header for the first sub-block in the functionality block. */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1531
		};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1532
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1533
	/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1534
	 * This structure used for extracting static data using the Stop Mode Extension API
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1535
	 * StopModeDebug::GetList using TListId::EStaticInfo
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1536
	 * as the first argument.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1537
	 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1538
	class TStaticListEntry
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1539
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1540
	public:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1541
    
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1542
		/** Build time of ROM in microseconds */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1543
	    TUint64 iTime;    
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1544
    
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1545
		/** Number of CPUs */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1546
	    TInt iCpuNumbers;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1547
    
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1548
		/** ROM build number */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1549
	    TUint16 iBuildNumber;    
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1550
        
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1551
		/** Major Version of ROM build */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1552
	    TUint8 iMajorVersion;                   
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1553
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1554
		/** Minor Version of ROM build */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1555
	    TUint8 iMinorVersion;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1556
    
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1557
		/** Currently unused element. May be used in future to aid maintaining compatibility. */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1558
	    TUint32 iSpare[10];    
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1559
		};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1560
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1561
	/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1562
	 * This structure represents a request to return a list via the SM API
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1563
	 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1564
	struct TListItem
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1565
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1566
		/** Size of this TListItem */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1567
		TUint32 iSize;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1568
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1569
		/** The type of list to return */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1570
		TListId iListId;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1571
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1572
		/** The scope of the list to return  */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1573
		TListScope iListScope;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1574
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1575
		/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1576
		 * Data corresponding to the list scope, for example if iListScope specifies a thread
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1577
		 * specific listing then iScopeData should contain the thread ID to return the list for.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1578
		 * If iListScope = EGlobalScope then iScopeData is ignored.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1579
		 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1580
		TUint64 iScopeData;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1581
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1582
		/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1583
		 * The first element in the target list to return data for. For example if a thread list is being
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1584
		 * requested then specifying iStartElement = 100 indicates that the first thread to be returned should
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1585
		 * be the first thread with thread ID >= 100.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1586
		 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1587
		TUint64 iStartElement;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1588
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1589
		/** Memory address of where the data should be written */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1590
		TAny* iBufferAddress;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1591
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1592
		/** Size of the buffer available for writing the data into */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1593
		TUint32 iBufferSize;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1594
		};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1595
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1596
	/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1597
	 * Structure that describes a list being returned
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1598
	 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1599
	struct TListReturn
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1600
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1601
		/** List that is being returned */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1602
		TUint32 iReqNo;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1603
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1604
		/** Number of items in the returned list */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1605
		TUint32 iNumberItems;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1606
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1607
		/** Size occupied by data */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1608
		TUint32 iDataSize;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1609
		};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1610
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1611
	/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1612
	 * Class used to add extended functionality to DDebuggerInfo class.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1613
	 * 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1614
	 * @publishedPartner
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1615
	 * @prototype
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1616
	 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1617
	class DStopModeExtension
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1618
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1619
		public:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1620
			DStopModeExtension()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1621
				:iFunctionalityBlock(NULL),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1622
				iSpare1(0),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1623
				iSpare2(0),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1624
				iSpare3(0),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1625
				iSpare4(0),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1626
				iSpare5(0),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1627
				iSpare6(0),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1628
				iSpare7(0)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1629
				{};        
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1630
		   
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1631
			static void Install(DStopModeExtension* aExt);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1632
			
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1633
		public:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1634
			Debug::DFunctionalityBlock* iFunctionalityBlock;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1635
			TUint32 iSpare1;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1636
			TUint32 iSpare2;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1637
			TUint32 iSpare3;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1638
			TUint32 iSpare4;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1639
			TUint32 iSpare5;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1640
			TUint32 iSpare6;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1641
			TUint32 iSpare7;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1642
		};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1643
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1644
	/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1645
	 * This is the interface to the stop mode debug API. The ROM resident address of these functions can be found 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1646
	 * from the Debug Functionality block via the superpage. It may be assumed that all of these functions
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1647
	 * will exit via the function ExitPoint and thus setting a breakpoint there will capture the end of execution.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1648
	 * For more detailed information, see the stop mode guide.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1649
	 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1650
	class StopModeDebug
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1651
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1652
			public:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1653
				/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1654
				 * Stop mode debug API. Call this to action any request for information, or to manipulate
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1655
				 * debug data.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1656
				 * 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1657
				 * This is a stateless interface - it does not record information about previous invocations. It
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1658
				 * does not take any OS locks, wait on any synchronisation objects, allocate/deallocate heap memory or call
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1659
				 * ANY OS routines (unless documented as doing so). It will not cause any exceptions due to page faults,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1660
				 * but will report that it encountered such problems where appropriate.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1661
				 *
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1662
				 * @pre This must be called with a valid stack in supervisor mode. There are no exceptions/interrupts
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1663
				 * enabled which will cause the OS state to change during the execution of this routine.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1664
				 * @args aItem Structure describing the list we want to retrieve
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1665
				 * @args aCheckConsistent If true, this will honour any locks the system holds and return KErrNotReady
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1666
				 * @return KErrNone on success or one of the other system wide error codes.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1667
				 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1668
				IMPORT_C static TInt GetList(const TListItem* aItem, TBool aCheckConsistent);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1669
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1670
				/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1671
				 * Stop mode debug API
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1672
				 * 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1673
				 * This is a test function that allows us to test our communications with the hardware debugger
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1674
				 * 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1675
				 * @pre This must be called with a valid stack in supervisor mode. There are no exceptions/interrupts
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1676
				 * enabled which will cause the OS state to change during the execution of this routine.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1677
				 * @args aItem Structure describing the list we want to retrieve
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1678
				 * @return KErrNone on success or one of the other system wide error codes.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1679
				 */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1680
				IMPORT_C static TInt TestAPI(const TListItem* aItem);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1681
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1682
			public:	
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
  1683
				IMPORT_C static TInt ExitPoint(const TInt aReturnValue);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1684
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1685
			private:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1686
				/** Code segment list routines */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1687
				static TInt ProcessCodeSeg(TUint8*& aBuffer, TUint32& aBufferSize, DEpocCodeSeg* aCodeSeg);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1688
			
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1689
				//TODO: Horrible signature. Structify it
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1690
				static TInt AppendCodeSegData(TUint8*& aBuffer, TUint32& aBufferSize, const TModuleMemoryInfo& aMemoryInfo, const TBool aIsXip, const TCodeSegType aCodeSegType, const TDesC8& aFileName, DEpocCodeSeg* aCodeSeg);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1691
				static TInt GetCodeSegList(const TListItem* aItem, bool aCheckConsistent);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1692
				static DEpocCodeSeg* GetNextCodeSeg(const TUint32 aStart, const Debug::TListScope aListScope, const TUint64 aScopeData);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1693
				static DEpocCodeSeg* GetNextGlobalCodeSeg(const TUint32 aStart);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1694
				static DEpocCodeSeg* GetNextThreadSpecificCodeSeg(const TUint32 aStart, const TUint64 aThreadId);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1695
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1696
				/** Process list routines */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1697
				static TInt GetProcessList(const TListItem* aItem, bool aCheckConsistent);	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1698
				static TInt AppendProcessToBuffer(DProcess* aProc, TUint8* aBuffer, TUint8* aBufferEnd, TUint32& aProcSize);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1699
				
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1700
				/** Static Info Retrieval routines */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1701
				static TInt GetStaticInfo(const TListItem* aItem, bool aCheckConsistent);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1702
				
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1703
				static void GetObjectFullName(const DObject* aObj, TFullName& aName);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1704
		
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1705
				/** Utility functions */
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1706
				static TInt CopyAndExpandDes(const TDesC& aSrc, TDes& aDest);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1707
				
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1708
			};
245
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1709
	
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1710
	
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1711
	/** 
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1712
	Provides static methods for accessing the information stored in a TRegisterInfo
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1713
	object.
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1714
	*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1715
	class Register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1716
	    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1717
	public:
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1718
	    static TBool IsCoreReg(const Debug::TRegisterInfo aRegister);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1719
	    static TBool IsCoproReg(const Debug::TRegisterInfo aRegister);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1720
	    static TUint32 GetCoreRegId(const Debug::TRegisterInfo aRegister);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1721
	    static TUint32 GetCRm(const Debug::TRegisterInfo aRegister);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1722
	    static TUint32 GetCRn(const Debug::TRegisterInfo aRegister);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1723
	    static TUint32 GetOpcode1(const Debug::TRegisterInfo aRegister);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1724
	    static TUint32 GetOpcode2(const Debug::TRegisterInfo aRegister);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1725
	    static TUint32 GetCoproNum(const Debug::TRegisterInfo aRegister);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1726
	    };
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1727
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1728
	/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1729
	Identify whether aRegister is a core register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1730
	@param aRegister register ID to analyse
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1731
	@return ETrue if core register, EFalse otherwise
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1732
	*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1733
	inline TBool Register::IsCoreReg(const Debug::TRegisterInfo aRegister)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1734
	    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1735
	    return ((aRegister & 0xff) == 0x0);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1736
	    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1737
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1738
	/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1739
	Identify whether aRegister is a coprocessor register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1740
	@param aRegister register ID to analyse
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1741
	@return ETrue if coprocessor register, EFalse otherwise
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1742
	*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1743
	inline TBool Register::IsCoproReg(const Debug::TRegisterInfo aRegister)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1744
	    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1745
	    return ((aRegister & 0xff) == 0x1);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1746
	    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1747
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1748
	/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1749
	Get the ID of the core register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1750
	@param aRegister register ID to analyse
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1751
	@return ID of the core register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1752
	*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1753
	inline TUint32 Register::GetCoreRegId(const Debug::TRegisterInfo aRegister)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1754
	    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1755
	    return ((aRegister >> 8) & 0xff);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1756
	    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1757
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1758
	/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1759
	Get the CRm value of a coprocessor register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1760
	@param aRegister register ID to analyse
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1761
	@return the CRm value of a coprocessor register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1762
	*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1763
	inline TUint32 Register::GetCRm(const Debug::TRegisterInfo aRegister)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1764
	    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1765
	    return ((aRegister >> 16) & 0xf);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1766
	    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1767
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1768
	/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1769
	Get the CRm value of a coprocessor register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1770
	@param aRegister register ID to analyse
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1771
	@return the CRm value of a coprocessor register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1772
	*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1773
	inline TUint32 Register::GetCRn(const Debug::TRegisterInfo aRegister)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1774
	    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1775
	    return ((aRegister >> 20) & 0xf);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1776
	    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1777
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1778
	/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1779
	Get the Opcode1 value of a coprocessor register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1780
	@param aRegister register ID to analyse
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1781
	@return the Opcode1 value of a coprocessor register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1782
	*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1783
	inline TUint32 Register::GetOpcode1(const Debug::TRegisterInfo aRegister)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1784
	    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1785
	    return ((aRegister >> 24) & 0x8);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1786
	    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1787
	    
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1788
	/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1789
	Get the Opcode2 value of a coprocessor register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1790
	@param aRegister register ID to analyse
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1791
	@return the Opcode2 value of a coprocessor register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1792
	*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1793
	inline TUint32 Register::GetOpcode2(const Debug::TRegisterInfo aRegister)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1794
	    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1795
	    return ((aRegister >> 27) & 0x8);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1796
	    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1797
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1798
	/**
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1799
	Get the coprocessor number of a coprocessor register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1800
	@param aRegister register ID to analyse
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1801
	@return the coprocessor number of a coprocessor register
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1802
	*/
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1803
	inline TUint32 Register::GetCoproNum(const Debug::TRegisterInfo aRegister)
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1804
	    {
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1805
	    return ((aRegister >> 8) & 0xff);
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1806
	    }
647ab20fee2e 201031_10
hgs
parents: 90
diff changeset
  1807
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1808
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1809
	};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1810
#endif // D_STOP_MODE_API_H
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1811
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1812
// End of file sm_debug_api.h