MpiAPI.h File Reference

Martini Profiling Interface. More...

#include "MRTETypes.h"
#include "MRTEResults.h"
#include "MieAPI.h"
#include "MpiBase.h"

Go to the source code of this file.

Namespaces

namespace  Martini
namespace  Martini::MPI

Classes

struct  TIdArray
 Defines an array of MPI ids. More...
struct  SVersionInfo
 Defines MPI version information. More...
struct  SConfigData
struct  SLineNumberTableEntry
 Defines a mapping between two types of offsets. More...
struct  SLineNumberTable
 Defines a line number table. More...
struct  SDotNetModulePrejit
 Defines .NET module pre-JIT information. More...
struct  SCodeRegion
 Defines a region of continuous native (JITted) code. More...
struct  SCodeInfo
struct  SStackEntry
 Defines stack entry information. More...
struct  SStackTrace
 Defines a stack trace. More...
struct  SGgMovedRefInfo
 Defines .NET GC Moved References information. More...
struct  SJavaDynamicCode
 Defines JVM internal dynamic code information. More...
struct  SMethodLineNumbers
 Defines a method's first and last source line numbers. More...
struct  SArrayDimensionInfo
 Defines array dimension information. More...
struct  SArrayDimensionsInfos
 Defines array dimensions. More...
struct  SArrayInfo
 Defines array information. More...
struct  SObjectInfo
 Defines object information for the IMpi::GetObjectInfo API and the Heap events. More...
interface  IEventObserver
 A base interface for all Event Observer interfaces. More...
struct  SNewMethodEventData
 Defines New Method event data. More...
interface  INewMethodEventObserver
 Observer interface for receiving New Method events. More...
struct  SMethodEnterEventData
 Defines Method Enter event data. More...
interface  IMethodEnterEventObserver
 Observer interface for receiving Method Enter events. More...
struct  SMethodLeaveEventData
 Defines Method Leave event data. More...
interface  IMethodLeaveEventObserver
 Observer interface for receiving Method Leave events. More...
struct  SJittedMethodLoadedEventData
 Defines JITted Method Loaded event data. More...
interface  IJittedMethodLoadedEventObserver
 Observer interface for receiving JITted Method Loaded events. More...
struct  SJittedMethodUnloadedEventData
 Defines JITted Method Unloaded event data. More...
interface  IJittedMethodUnloadedEventObserver
 Observer interface for receiving JITted Method Unloaded events. More...
struct  SThreadEventData
 Defines Thread events data. More...
interface  IThreadStartEventObserver
 Observer interface for receiving Thread Start events. More...
interface  IThreadEndEventObserver
 Observer interface for receiving Thread End events. More...
struct  SMonitorWaitEventData
 Defines Monitor Wait event data. More...
interface  IMonitorWaitEventObserver
 Observer interface for receiving Monitor Wait events. More...
struct  SMonitorWaitedEventData
 Defines Monitor Waited event data. More...
interface  IMonitorWaitedEventObserver
 Observer interface for receiving Monitor Waited events. More...
struct  SContendedMonitorEnterEventData
 Defines Contended Monitor Enter event data. More...
interface  IContendedMonitorEnterEventObserver
 Observer interface for receiving Contended Monitor Enter events. More...
struct  SContendedMonitorEnteredEventData
 Defines Contended Monitor Entered event data. More...
interface  IContendedMonitorEnteredEventObserver
 Observer interface for receiving Contended Monitor Entered events. More...
struct  SThreadInteractionEventData
 Defines Thread Interaction event data. More...
interface  IThreadInteractionEventObserver
 Observer interface for receiving Thread Interaction events. More...
struct  SHeapEventData
 Defines Heap events data. More...
interface  IObjectAllocEventObserver
 Observer interface for receiving Object Alloc events. More...
interface  IObjectFreeEventObserver
 Observer interface for receiving Object Free events. More...
interface  IGcStartEventObserver
 Observer interface for receiving Garbage Collection Start events. More...
interface  IGcEndEventObserver
 Observer interface for receiving Garbage Collection Finish events. More...
struct  SGcMovedRefEventData
 Defines Garbage Collection Moved References event data. More...
interface  IGcMovedReferencesEventObserver
 Observer interface for receiving Garbage Collection Moved References events (.NET only). More...
struct  SVmInitEventData
 Defines VM Init event data. More...
interface  IVmInitEventObserver
 Observer interface for receiving VM Init events. More...
interface  IVmShutdownEventObserver
 Observer interface for receiving VM Shutdown events. More...
struct  SDotNetMethodInstrEventData
 Defines .NET Method Instrumentation event data. More...
interface  IDotNetMethodInstrumentationPointEventObserver
 Observer interface for receiving .NET Method Instrumentation Point events (.NET only). More...
struct  SDotNetModuleEventData
 Defines .NET Module events data. More...
interface  IDotNetModuleUnloadStartEventObserver
 Observer interface for receiving .NET Module Unload Started events (.NET only). More...
interface  IDotNetModuleLoadFinishEventObserver
 Observer interface for receiving .NET Module Load Finished events (.NET only). More...
struct  SJavaDynamicCodeEventData
 Defines Java Dynamic Code Generated event data. More...
interface  IJavaDynamicCodeGeneratedEventObserver
 Observer interface for receiving Java Dynamic Code Generated events (Java only). More...
struct  SClassFileLoadHookEventData
 Defines Java Class File Load Hook event data. More...
interface  IJavaClassFileLoadHookEventObserver
 Observer interface for receiving Java Class File Load Hook events (Java 5.0+ only). More...
struct  SSetOutputDirEventData
 Defines Set Output Directory event data. More...
interface  IEcSetOutputDirEventObserver
 Observer interface for receiving Set Output Directory events from External Controllers. More...
interface  IEcStartEventObserver
 Observer interface for receiving Start events from External Controllers. More...
interface  IEcStopEventObserver
 Observer interface for receiving Stop events from External Controllers. More...
interface  IEcAttachEventObserver
 Observer interface for receiving Attach events from External Controllers. More...
interface  IEcDetachEventObserver
 Observer interface for receiving Detach events from External Controllers. More...
struct  SCustomCommandEventData
 Defines Custom Command event data. More...
interface  IEcCustomCommandEventObserver
 Observer interface for receiving Custom Command events from External Controllers. More...
struct  SCallGraphFilterData
 Defines data for the Call Graph events filter. More...
interface  ICallGraphFilter
 Event Filter interface for defining selectivity for Call Graph events. More...
struct  SHeapFilterData
 Defines data for the Heap events filter. More...
interface  IHeapFilter
 Event Filter interface for defining selectivity for Heap events. More...
struct  SThreadInteractionFilterData
 Defines data for the Thread Interaction events filter. More...
interface  IThreadInteractionFilter
 Event Filter interface for defining selectivity for Thread Interaction events. More...
struct  SMethodInfo
 Defines method information for the IMpi::GetMethodInfo API. More...
struct  SClassInfo
 Defines class information for the IMpi::GetClassInfo API. More...
struct  SObjectDataRequest
 Defines object information for the IMpi::GetObjectInfo API. More...
struct  SThreadInfo
 Defines thread information for the IMpi::GetThreadInfo API. More...
struct  SThreadInfoArrayEntry
 Defines information for an entry in an SThreadInfoArray. More...
struct  SThreadInfoArray
 Defines thread information array for the IMpi::GetAllThreadsInfo API. More...
struct  SModuleInfo
 Defines module information for the IMpi::GetModuleInfo API. More...
struct  SObjectReference
 Defines information for an object reference. More...
struct  SObjectReferenceInfo
 Defines object reference information for the IMpi::GetObjectReferences API. More...
interface  IMpi
 Martini Profiling Interface functions. More...

Typedefs

typedef U64 TId
 Id Type for most MPI elements: modules, classes, methods, etc...
typedef U64 TTimeStamp
 Time stamp type.
typedef U32 TDataRequestType
 Data Type for MPI Data Request Types.
typedef TResult(* TDotNetUnmanagedStackWalkCallBack )(SThreadInfo *pData, void *context, unsigned int contextSize, U64 firstUnmanagedCallSiteIP, U64 terminatingManagedCallSiteIP)
 callback function for unmanaged stack walk (.NET only)
typedef TResult(* TClientInstantiate )(IMpi *pMpiApi, TId clientId, const char *szOptions)
 Prototype of MPI client initialization function.

Enumerations

enum  EEventGroup {
  EG_NONE, EG_CALL_GRAPH, EG_HEAP, EG_MONITOR,
  EG_THREAD_INTERACTION, EG_LAST
}
 Defines MPI Event Groups. More...
enum  EMessageType { MT_ERROR, MT_INFORMATIVE, MT_DEBUG }
 Defines message types for the IMpi::MessageLog function. More...
enum  EMessageDest { MD_LOG_FILE = 0x01, MD_EXTERNAL_CONTROL = 0x02 }
 Defines possible destinations for messages sent with the IMpi::MessageLog function. More...
enum  EConfigurationFlags {
  CF_NONE = 0x00000000, CF_DOTNET_USE_VM_IDS = 0x00010000, CF_DOTNET_NO_INLINING = 0x00020000, CF_DOTNET_DISABLE_PREJIT_USE = 0x00040000,
  CF_LAST = 0x80080000
}
enum  ERuntimeType { RT_JAVA = 2, RT_DOTNET, RT_JIT_PROFILING = 9, RT_UNDEFINED }
 Defines MPI supported runtime types (Virtual Machines). More...
enum  EMethodAccessType {
  MAT_NONE = 0, MAT_CLASS_INTERNAL, MAT_PACKAGE_INTERNAL, MAT_MODULE_INTERNAL = MAT_PACKAGE_INTERNAL,
  MAT_PACKAGE_API, MAT_MODULE_API = MAT_PACKAGE_API
}
 Defines method access (scope or visibility) types. More...
enum  EArrayType {
  AT_NONE, AT_CLASS, AT_BOOL, AT_CHAR,
  AT_S1, AT_U1, AT_S2, AT_U2,
  AT_S4, AT_U4, AT_S8, AT_U8,
  AT_FLOAT, AT_DOUBLE, AT_STRING, AT_VOID,
  AT_OTHER, AT_LAST
}
 Defines array types. More...
enum  EThreadInteractionType { IT_NOTIFY_ALL = 1, IT_NOTIFY = 2, IT_INTERRUPT = 3, IT_START = 4 }
 Defines Thread Interaction types. More...
enum  EThreadState {
  TS_UNKNOWN, TS_UNSTARTED, TS_RUNNING, TS_SLEEPING,
  TS_BLOCKED, TS_WAITING, TS_TERMINATED
}
 Defines thread states. More...
enum  EObjectReferenceType {
  OR_CLASS = 1, OR_FIELD = 2, OR_ARRAY_ELEMENT = 3, OR_JAVA_CLASS_LOADER = 4,
  OR_JAVA_REFERENCE_SIGNERS = 5, OR_JAVA_PROTECTION_DOMAIN = 6, OR_INTERFACE = 7, OR_STATIC_FIELD = 8,
  OR_CONSTANT_POOL = 9, OR_SUPERCLASS = 10, OR_JAVA_JNI_GLOBAL = 21, OR_SYSTEM_CLASS = 22,
  OR_MONITOR = 23, OR_STACK_LOCAL = 24, OR_JAVA_JNI_LOCAL = 25, OR_THREAD = 26,
  OR_OTHER = 27
}
 Defines object reference types. More...

Variables

Data Request Types

The Data Request Types supported by MPI. Used for specifying the data items for an MPI event or a data request. Can be OR'ed together for specifying multiple items.

const TDataRequestType DR_NONE = 0x00000000
 No data.
const TDataRequestType DR_THREAD_ID = 0x00000001
 Thread id. Unique for the duration of the profiled application.
const TDataRequestType DR_MODULE_ID = 0x00000002
 Unique module id.
const TDataRequestType DR_CLASS_ID = 0x00000004
 Unique class id.
const TDataRequestType DR_METHOD_ID = 0x00000008
 Unique method id.
const TDataRequestType DR_OBJECT_ID = 0x00000010
 Unique object id.
const TDataRequestType DR_METHOD_NAME = 0x00010000
 Method name (developer-friendly).
const TDataRequestType DR_METHOD_SIGNATURE = 0x00020000
 Method signature (developer-friendly).
const TDataRequestType DR_SOURCE_FILE_NAME = 0x00040000
 Name of the source file in which a method is defined.
const TDataRequestType DR_METHOD_LINE_NUMBERS = 0x00080000
 First and last source file line numbers of a method.
const TDataRequestType DR_MODULE_NAME = 0x00100000
 Module name.
const TDataRequestType DR_CLASS_NAME = 0x00200000
 Class name.
const TDataRequestType DR_METHOD_CODE = 0x00400000
 Compiled method code.
const TDataRequestType DR_NATIVE_TO_SRC_LINE_MAP = 0x00800000
 Mapping of compiled method JITted (native) code to source line numbers.
const TDataRequestType DR_NATIVE_TO_MANAGED_LINE_MAP = 0x01000000
 Mapping of compiled method JITted (native) code to managed code (Java byte-code or .NET IL) offsets.
const TDataRequestType DR_MANAGED_TO_SRC_LINE_MAP = 0x02000000
 Mapping of managed code (Java byte-code or .NET IL) to source line numbers.
const TDataRequestType DR_JAVA_NATIVE_CLASS_NAME = 0x04000000
 Native (non-translated) class name (Java-only).
const TDataRequestType DR_DOTNET_MODULE_PREJIT = 0x10000000
const TDataRequestType DR_DOTNET_METHOD_TOKEN = 0x20000000
 Method token (.NET only).
const TDataRequestType DR_JAVA_NATIVE_METHOD_NAME = 0x40000000
 Native (non-translated) method name (Java-only).
const TDataRequestType DR_JAVA_NATIVE_METHOD_SIGNATURE = 0x80000000
 Native (mangled) method signature (Java-only).
const TDataRequestType DR_THREAD_NAME = 0x00010000
 Thread name.
const TDataRequestType DR_THREAD_GROUP = 0x00020000
 Thread group name. Currently supported only for Java.
const TDataRequestType DR_THREAD_PARENT_GROUP = 0x00040000
 Name of the parent group of this thread's group. Currently supported only for Java.
const TDataRequestType DR_ABSOLUTE_NATIVE_STACK_TRACE = 0x00080000
 Stack trace of the current thread, using absolute machine IP (.NET only).
const TDataRequestType DR_VM_RELATIVE_STACK_TRACE = 0x00100000
 Stack trace of the current thread, using relative VM instruction offsets.
const TDataRequestType DR_THREAD_ELAPSED_TIME = 0x00200000
 Thread elapsed time.
const TDataRequestType DR_THREAD_CPU_TIME = 0x00400000
 Thread elapsed time.
const TDataRequestType DR_THREAD_STATE = 0x00800000
 Thread state.
const TDataRequestType DR_CURRENT_MONITOR = 0x01000000
 Id of the object (if any) whose monitor the thread is waiting for (Java only).
const TDataRequestType DR_THREAD_INFO
 Thread information (name, group and parent group).
const TDataRequestType DR_MONITOR_OWNER_THREAD_ID = 0x00010000
 Id of the thread owning the contended monitor.
const TDataRequestType DR_OBJECT_INFO = 0x00020000
 Object information.
const TDataRequestType DR_MONITOR_TIMEOUT = 0x00040000
 Monitor timeout for "wait" operations, in milliseconds.
const TDataRequestType DR_MONITOR_TIMED_OUT = 0x00800000
 Monitor timeout expiration status for "wait" operations.
const TDataRequestType DR_THREAD_INTERACTION_TYPE = 0x01000000
 Type of interaction between threads,.
const TDataRequestType DR_MONITOR_OWN_WAITERS = 0x00080000
 List of threads waiting to own the monitor.
const TDataRequestType DR_MONITOR_NOTIFY_WAITERS = 0x00100000
 List of threads waiting to be notified by the monitor.
const TDataRequestType DR_ALLOC_VM_INSTRUCTION_OFFSET = 0x00200000
 The VM instruction index (relative to the beginning of the method) where an object was allocated. Can be used with DR_METHOD_ID to identify the object allocation site (Java-only).
const TDataRequestType DR_OBJECT_AGE = 0x00400000
 The number of Garbage Collection cycles an object survived (Java-only).
const TDataRequestType DR_JAVA_HEAP_USAGE = 0x00010000
 Heap usage information. Used with SHeapUsage (Java-only).
const TDataRequestType DR_ACTIVITY_PATH = 0x00010000
 Activity path defined by an External Controller with the EV_EC_CONFIGURE event.
const TDataRequestType DR_DOTNET_GC_MOVED_REF_INFO = 0x00010000
 Information about objects moved during Garbage Collection (.NET only).
const TDataRequestType DR_JAVA_DYNAMIC_CODE = 0x00010000
 Dynamic code information (Java-only).
const TDataRequestType DR_COMMAND_ID = 0x00010000
 Id of a Custom Command passed with the EV_EC_CUSTOM_COMMAND event.
const TDataRequestType DR_COMMAND_DATA = 0x00020000
 Custom Command Data passed with the EV_EC_CUSTOM_COMMAND event.


Detailed Description

An API exposed to clients by all Martini interface modules that attach to Virtual Machines. Those interface modules are: JPI (Java), CPI (.NET) and JITPI (Any VM + JITProfiling). For more information refer to the Martini Profiling Interface page.


Generated on Thu Mar 6 15:07:54 2008 for Martini by doxygen 1.5.5