[Tizen] Unify dnetmemoryenumlib terms to match the codebase (#291)
[platform/upstream/coreclr.git] / src / vm / eventpipeinternal.h
1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4
5 #ifndef __EVENTPIPEINTERNAL_H__
6 #define __EVENTPIPEINTERNAL_H__
7
8 #ifdef FEATURE_PERFTRACING
9
10 // TODO: Maybe we should move the other types that are used on PInvoke here?
11
12 class EventPipeInternal
13 {
14 private:
15     enum class ActivityControlCode
16     {
17         EVENT_ACTIVITY_CONTROL_GET_ID = 1,
18         EVENT_ACTIVITY_CONTROL_SET_ID = 2,
19         EVENT_ACTIVITY_CONTROL_CREATE_ID = 3,
20         EVENT_ACTIVITY_CONTROL_GET_SET_ID = 4,
21         EVENT_ACTIVITY_CONTROL_CREATE_SET_ID = 5
22     };
23
24     struct EventPipeEventInstanceData
25     {
26         void *ProviderID;
27         unsigned int EventID;
28         unsigned int ThreadID;
29         LARGE_INTEGER TimeStamp;
30         GUID ActivityId;
31         GUID RelatedActivityId;
32         const BYTE *Payload;
33         unsigned int PayloadLength;
34     };
35
36     struct EventPipeSessionInfo
37     {
38         FILETIME StartTimeAsUTCFileTime;
39         LARGE_INTEGER StartTimeStamp;
40         LARGE_INTEGER TimeStampFrequency;
41     };
42
43 public:
44     //!
45     //! Sets the sampling rate and enables the event pipe for the specified configuration.
46     //!
47     static UINT64 QCALLTYPE Enable(
48         __in_z LPCWSTR outputFile,
49         EventPipeSerializationFormat format,
50         UINT32 circularBufferSizeInMB,
51         EventPipeProviderConfiguration *pProviders,
52         UINT32 numProviders);
53
54     //!
55     //! Disables the specified session Id.
56     //!
57     static void QCALLTYPE Disable(UINT64 sessionID);
58
59     static bool QCALLTYPE GetSessionInfo(UINT64 sessionID, EventPipeSessionInfo *pSessionInfo);
60
61     static INT_PTR QCALLTYPE CreateProvider(
62         __in_z LPCWSTR providerName,
63         EventPipeCallback pCallbackFunc);
64
65     static INT_PTR QCALLTYPE DefineEvent(
66         INT_PTR provHandle,
67         UINT32 eventID,
68         __int64 keywords,
69         UINT32 eventVersion,
70         UINT32 level,
71         void *pMetadata,
72         UINT32 metadataLength);
73
74     static INT_PTR QCALLTYPE GetProvider(
75         __in_z LPCWSTR providerName);
76
77     static void QCALLTYPE DeleteProvider(
78         INT_PTR provHandle);
79
80     static int QCALLTYPE EventActivityIdControl(
81         uint32_t controlCode,
82         GUID *pActivityId);
83
84     static void QCALLTYPE WriteEvent(
85         INT_PTR eventHandle,
86         UINT32 eventID,
87         void *pData,
88         UINT32 length,
89         LPCGUID pActivityId, LPCGUID pRelatedActivityId);
90
91     static void QCALLTYPE WriteEventData(
92         INT_PTR eventHandle,
93         UINT32 eventID,
94         EventData *pEventData,
95         UINT32 eventDataCount,
96         LPCGUID pActivityId, LPCGUID pRelatedActivityId);
97
98     static bool QCALLTYPE GetNextEvent(
99         UINT64 sessionID,
100         EventPipeEventInstanceData *pInstance);
101
102     static HANDLE QCALLTYPE GetWaitHandle(
103         UINT64 sessionID);
104
105 };
106
107 #endif // FEATURE_PERFTRACING
108
109 #endif // __EVENTPIPEINTERNAL_H__