TypeManager.cpp
ObjectLayout.cpp
portable.cpp
- profheapwalkhelper.cpp
RestrictedCallouts.cpp
RhConfig.cpp
RuntimeInstance.cpp
if(FEATURE_EVENT_TRACE)
add_definitions(-DFEATURE_EVENT_TRACE)
- list(APPEND COMMON_RUNTIME_SOURCES
- eventtrace.cpp
- )
- # These are carry-overs from .NET Native and only included on Windows currently
- # bulktype : directly emits via ETW with EventWrite
- # gcheap : GCHeapDump, GCHeapSurvivalAndMovement - not prioritizing for nativeaot yet
- if (WIN32)
- list(APPEND COMMON_RUNTIME_SOURCES
- eventtrace_bulktype.cpp
- eventtrace_gcheap.cpp
- )
- endif()
endif()
add_definitions(-DFEATURE_BASICFREEZE)
# add_definitions(-DSTRESS_HEAP)
if(WIN32)
+ set(FEATURE_ETW 1)
add_definitions(-DFEATURE_ETW)
add_definitions(-DFEATURE_SUSPEND_REDIRECTION)
add_definitions(-DFEATURE_SPECIAL_USER_MODE_APC)
// The .NET Foundation licenses this file to you under the MIT license.
void EventPipeAdapter_Initialize() {}
-bool EventPipeAdapter_Enabled() { return false; }
bool DiagnosticServerAdapter_Initialize() { return false; }
void DiagnosticServerAdapter_PauseForDiagnosticsMonitor() {}
#include "SpinLock.h"
void EventPipeAdapter_Initialize() { EventPipeAdapter::Initialize(); }
-bool EventPipeAdapter_Enabled() { return EventPipeAdapter::Enabled(); }
bool DiagnosticServerAdapter_Initialize() { return DiagnosticServerAdapter::Initialize(); }
void DiagnosticServerAdapter_PauseForDiagnosticsMonitor() { DiagnosticServerAdapter::PauseForDiagnosticsMonitor();}
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
-// **** This file is auto-generated. Do not edit by hand. ****
-//
-// Instead ensure this file and EtwEvents.man are checked-out from source code control, locate the PUCLR ETW
-// manifest file (it should be in puclr\ndp\clr\src\VM\ClrEtwAll.man), copy it into the rh\src\rtetw
-// directory and run the following command from an rhenv window:
-// perl EtwImportClrEvents.pl
-//
-// This script consults EtwEventFilter.txt to determine which events to extract from the CLR manifest. It then
-// merges any additional Redhawk-specific events from EtwRedhawkEvents.xml. The result is an updated version
-// of this header file plus EtwEvents.man, a new ETW manifest file describing the final Redhawk events which
-// can be registered with the system via the following command:
-// wevtutil im EtwEvents.man
-//
+// shipping criteria: no EVENTPIPE-NATIVEAOT-TODO left in the codebase
+// @TODO: Use genEtwProvider.py to generate headers to replace this file.
+// Reconcile tracking/callbacks/contexts used for ETW vs EventPipe.
+// FireEtXplat* functions handle ETW only. The naming matches the generated
+// output of genEtwProvider.py.
#ifndef __RH_ETW_DEFS_INCLUDED
#define __RH_ETW_DEFS_INCLUDED
#if defined(FEATURE_ETW) && !defined(DACCESS_COMPILE)
+#include <wchar.h>
+
#ifndef RH_ETW_INLINE
#define RH_ETW_INLINE __declspec(noinline) __inline
#endif
#define RH_ETW_REGISTER_Microsoft_Windows_Redhawk_GC_Private() do { PalEventRegister(&MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER, RhEtwControlCallback, &MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context, &Microsoft_Windows_Redhawk_GC_PrivateHandle); } while (false)
#define RH_ETW_UNREGISTER_Microsoft_Windows_Redhawk_GC_Private() do { PalEventUnregister(Microsoft_Windows_Redhawk_GC_PrivateHandle); } while (false)
-#define FireEtwBGC1stConEnd(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC1stConEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC1stConEnd, ClrInstanceID) : 0
+#define FireEtXplatBGC1stConEnd(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC1stConEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC1stConEnd, ClrInstanceID) : 0
-#define FireEtwBGC1stNonConEnd(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC1stNonConEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC1stNonConEnd, ClrInstanceID) : 0
+#define FireEtXplatBGC1stNonConEnd(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC1stNonConEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC1stNonConEnd, ClrInstanceID) : 0
-#define FireEtwBGC2ndConBegin(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndConBegin)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndConBegin, ClrInstanceID) : 0
+#define FireEtXplatBGC2ndConBegin(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndConBegin)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndConBegin, ClrInstanceID) : 0
-#define FireEtwBGC2ndConEnd(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndConEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndConEnd, ClrInstanceID) : 0
+#define FireEtXplatBGC2ndConEnd(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndConEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndConEnd, ClrInstanceID) : 0
-#define FireEtwBGC2ndNonConBegin(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndNonConBegin)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndNonConBegin, ClrInstanceID) : 0
+#define FireEtXplatBGC2ndNonConBegin(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndNonConBegin)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndNonConBegin, ClrInstanceID) : 0
-#define FireEtwBGC2ndNonConEnd(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndNonConEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndNonConEnd, ClrInstanceID) : 0
+#define FireEtXplatBGC2ndNonConEnd(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndNonConEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGC2ndNonConEnd, ClrInstanceID) : 0
-#define FireEtwBGCAllocWaitBegin(Reason, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCAllocWaitBegin)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_BGCAllocWait(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCAllocWaitBegin, Reason, ClrInstanceID) : 0
+#define FireEtXplatBGCAllocWaitBegin(Reason, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCAllocWaitBegin)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_BGCAllocWait(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCAllocWaitBegin, Reason, ClrInstanceID) : 0
-#define FireEtwBGCAllocWaitEnd(Reason, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCAllocWaitEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_BGCAllocWait(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCAllocWaitEnd, Reason, ClrInstanceID) : 0
+#define FireEtXplatBGCAllocWaitEnd(Reason, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCAllocWaitEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_BGCAllocWait(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCAllocWaitEnd, Reason, ClrInstanceID) : 0
-#define FireEtwBGCBegin(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCBegin)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCBegin, ClrInstanceID) : 0
+#define FireEtXplatBGCBegin(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCBegin)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCBegin, ClrInstanceID) : 0
-#define FireEtwBGCDrainMark(Objects, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCDrainMark)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_BGCDrainMark(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCDrainMark, Objects, ClrInstanceID) : 0
+#define FireEtXplatBGCDrainMark(Objects, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCDrainMark)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_BGCDrainMark(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCDrainMark, Objects, ClrInstanceID) : 0
-#define FireEtwBGCOverflow(Min, Max, Objects, IsLarge, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCOverflow)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_BGCOverflow(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCOverflow, Min, Max, Objects, IsLarge, ClrInstanceID) : 0
+#define FireEtXplatBGCOverflow(Min, Max, Objects, IsLarge, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCOverflow)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_BGCOverflow(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCOverflow, Min, Max, Objects, IsLarge, ClrInstanceID) : 0
-#define FireEtwBGCPlanEnd(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCPlanEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCPlanEnd, ClrInstanceID) : 0
+#define FireEtXplatBGCPlanEnd(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCPlanEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCPlanEnd, ClrInstanceID) : 0
-#define FireEtwBGCRevisit(Pages, Objects, IsLarge, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCRevisit)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_BGCRevisit(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCRevisit, Pages, Objects, IsLarge, ClrInstanceID) : 0
+#define FireEtXplatBGCRevisit(Pages, Objects, IsLarge, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCRevisit)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_BGCRevisit(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCRevisit, Pages, Objects, IsLarge, ClrInstanceID) : 0
-#define FireEtwBGCSweepEnd(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCSweepEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCSweepEnd, ClrInstanceID) : 0
+#define FireEtXplatBGCSweepEnd(ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCSweepEnd)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCNoUserData(Microsoft_Windows_Redhawk_GC_PrivateHandle, &BGCSweepEnd, ClrInstanceID) : 0
-#define FireEtwGCFullNotify_V1(GenNumber, IsAlloc, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCFullNotify_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCFullNotify_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCFullNotify_V1, GenNumber, IsAlloc, ClrInstanceID) : 0
+#define FireEtXplatGCFullNotify_V1(GenNumber, IsAlloc, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCFullNotify_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCFullNotify_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCFullNotify_V1, GenNumber, IsAlloc, ClrInstanceID) : 0
-#define FireEtwGCGlobalHeapHistory_V1(FinalYoungestDesired, NumHeaps, CondemnedGeneration, Gen0ReductionCount, Reason, GlobalMechanisms, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCGlobalHeapHistory_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCGlobalHeap_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCGlobalHeapHistory_V1, FinalYoungestDesired, NumHeaps, CondemnedGeneration, Gen0ReductionCount, Reason, GlobalMechanisms, ClrInstanceID) : 0
+#define FireEtXplatGCGlobalHeapHistory_V1(FinalYoungestDesired, NumHeaps, CondemnedGeneration, Gen0ReductionCount, Reason, GlobalMechanisms, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCGlobalHeapHistory_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCGlobalHeap_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCGlobalHeapHistory_V1, FinalYoungestDesired, NumHeaps, CondemnedGeneration, Gen0ReductionCount, Reason, GlobalMechanisms, ClrInstanceID) : 0
-#define FireEtwGCJoin_V1(Heap, JoinTime, JoinType, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCJoin_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCJoin_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCJoin_V1, Heap, JoinTime, JoinType, ClrInstanceID) : 0
+#define FireEtXplatGCJoin_V1(Heap, JoinTime, JoinType, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCJoin_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCJoin_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCJoin_V1, Heap, JoinTime, JoinType, ClrInstanceID) : 0
-#define FireEtwGCOptimized_V1(DesiredAllocation, NewAllocation, GenerationNumber, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCOptimized_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCOptimized_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCOptimized_V1, DesiredAllocation, NewAllocation, GenerationNumber, ClrInstanceID) : 0
+#define FireEtXplatGCOptimized_V1(DesiredAllocation, NewAllocation, GenerationNumber, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCOptimized_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCOptimized_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCOptimized_V1, DesiredAllocation, NewAllocation, GenerationNumber, ClrInstanceID) : 0
-#define FireEtwGCPerHeapHistory() (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCPerHeapHistory)) ? TemplateEventDescriptor(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCPerHeapHistory) : 0
+#define FireEtXplatGCPerHeapHistory() (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCPerHeapHistory)) ? TemplateEventDescriptor(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCPerHeapHistory) : 0
-#define FireEtwGCSettings(SegmentSize, LargeObjectSegmentSize, ServerGC) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCSettings)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCSettings(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCSettings, SegmentSize, LargeObjectSegmentSize, ServerGC) : 0
+#define FireEtXplatGCSettings(SegmentSize, LargeObjectSegmentSize, ServerGC) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCSettings)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCSettings(Microsoft_Windows_Redhawk_GC_PrivateHandle, &GCSettings, SegmentSize, LargeObjectSegmentSize, ServerGC) : 0
-#define FireEtwPinPlugAtGCTime(PlugStart, PlugEnd, GapBeforeSize, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PinPlugAtGCTime)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PinPlugAtGCTime(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PinPlugAtGCTime, PlugStart, PlugEnd, GapBeforeSize, ClrInstanceID) : 0
+#define FireEtXplatPinPlugAtGCTime(PlugStart, PlugEnd, GapBeforeSize, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PinPlugAtGCTime)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PinPlugAtGCTime(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PinPlugAtGCTime, PlugStart, PlugEnd, GapBeforeSize, ClrInstanceID) : 0
-#define FireEtwPrvDestroyGCHandle(HandleID, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvDestroyGCHandle)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvDestroyGCHandle(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvDestroyGCHandle, HandleID, ClrInstanceID) : 0
+#define FireEtXplatPrvDestroyGCHandle(HandleID, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvDestroyGCHandle)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvDestroyGCHandle(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvDestroyGCHandle, HandleID, ClrInstanceID) : 0
-#define FireEtwPrvGCMarkCards_V1(HeapNum, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkCards_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvGCMark_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkCards_V1, HeapNum, ClrInstanceID) : 0
+#define FireEtXplatPrvGCMarkCards_V1(HeapNum, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkCards_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvGCMark_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkCards_V1, HeapNum, ClrInstanceID) : 0
-#define FireEtwPrvGCMarkFinalizeQueueRoots_V1(HeapNum, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkFinalizeQueueRoots_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvGCMark_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkFinalizeQueueRoots_V1, HeapNum, ClrInstanceID) : 0
+#define FireEtXplatPrvGCMarkFinalizeQueueRoots_V1(HeapNum, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkFinalizeQueueRoots_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvGCMark_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkFinalizeQueueRoots_V1, HeapNum, ClrInstanceID) : 0
-#define FireEtwPrvGCMarkHandles_V1(HeapNum, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkHandles_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvGCMark_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkHandles_V1, HeapNum, ClrInstanceID) : 0
+#define FireEtXplatPrvGCMarkHandles_V1(HeapNum, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkHandles_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvGCMark_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkHandles_V1, HeapNum, ClrInstanceID) : 0
-#define FireEtwPrvGCMarkStackRoots_V1(HeapNum, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkStackRoots_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvGCMark_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkStackRoots_V1, HeapNum, ClrInstanceID) : 0
+#define FireEtXplatPrvGCMarkStackRoots_V1(HeapNum, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkStackRoots_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvGCMark_V1(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvGCMarkStackRoots_V1, HeapNum, ClrInstanceID) : 0
-#define FireEtwPrvSetGCHandle(HandleID, ObjectID, Kind, Generation, AppDomainID, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvSetGCHandle)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvSetGCHandle(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvSetGCHandle, HandleID, ObjectID, Kind, Generation, AppDomainID, ClrInstanceID) : 0
+#define FireEtXplatPrvSetGCHandle(HandleID, ObjectID, Kind, Generation, AppDomainID, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvSetGCHandle)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvSetGCHandle(Microsoft_Windows_Redhawk_GC_PrivateHandle, &PrvSetGCHandle, HandleID, ObjectID, Kind, Generation, AppDomainID, ClrInstanceID) : 0
RH_ETW_INLINE uint32_t
Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_BGCAllocWait(REGHANDLE RegHandle, const EVENT_DESCRIPTOR * Descriptor, uint32_t Reason, uint16_t ClrInstanceID)
}
RH_ETW_INLINE uint32_t
-Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PinPlugAtGCTime(REGHANDLE RegHandle, const EVENT_DESCRIPTOR * Descriptor, void* PlugStart, void* PlugEnd, void* GapBeforeSize, uint16_t ClrInstanceID)
+Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PinPlugAtGCTime(REGHANDLE RegHandle, const EVENT_DESCRIPTOR * Descriptor, const void* PlugStart, const void* PlugEnd, const void* GapBeforeSize, uint16_t ClrInstanceID)
{
EVENT_DATA_DESCRIPTOR EventData[4];
- EventDataDescCreate(&EventData[0], &PlugStart, sizeof(void*));
- EventDataDescCreate(&EventData[1], &PlugEnd, sizeof(void*));
- EventDataDescCreate(&EventData[2], &GapBeforeSize, sizeof(void*));
+ EventDataDescCreate(&EventData[0], &PlugStart, sizeof(const void*));
+ EventDataDescCreate(&EventData[1], &PlugEnd, sizeof(const void*));
+ EventDataDescCreate(&EventData[2], &GapBeforeSize, sizeof(const void*));
EventDataDescCreate(&EventData[3], &ClrInstanceID, sizeof(uint16_t));
return PalEventWrite(RegHandle, Descriptor, 4, EventData);
}
RH_ETW_INLINE uint32_t
-Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvDestroyGCHandle(REGHANDLE RegHandle, const EVENT_DESCRIPTOR * Descriptor, void* HandleID, uint16_t ClrInstanceID)
+Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvDestroyGCHandle(REGHANDLE RegHandle, const EVENT_DESCRIPTOR * Descriptor, const void* HandleID, uint16_t ClrInstanceID)
{
EVENT_DATA_DESCRIPTOR EventData[2];
- EventDataDescCreate(&EventData[0], &HandleID, sizeof(void*));
+ EventDataDescCreate(&EventData[0], &HandleID, sizeof(const void*));
EventDataDescCreate(&EventData[1], &ClrInstanceID, sizeof(uint16_t));
return PalEventWrite(RegHandle, Descriptor, 2, EventData);
}
}
RH_ETW_INLINE uint32_t
-Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvSetGCHandle(REGHANDLE RegHandle, const EVENT_DESCRIPTOR * Descriptor, void* HandleID, void* ObjectID, uint32_t Kind, uint32_t Generation, uint64_t AppDomainID, uint16_t ClrInstanceID)
+Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvSetGCHandle(REGHANDLE RegHandle, const EVENT_DESCRIPTOR * Descriptor, const void* HandleID, const void* ObjectID, uint32_t Kind, uint32_t Generation, uint64_t AppDomainID, uint16_t ClrInstanceID)
{
EVENT_DATA_DESCRIPTOR EventData[6];
- EventDataDescCreate(&EventData[0], &HandleID, sizeof(void*));
- EventDataDescCreate(&EventData[1], &ObjectID, sizeof(void*));
+ EventDataDescCreate(&EventData[0], &HandleID, sizeof(const void*));
+ EventDataDescCreate(&EventData[1], &ObjectID, sizeof(const void*));
EventDataDescCreate(&EventData[2], &Kind, sizeof(uint32_t));
EventDataDescCreate(&EventData[3], &Generation, sizeof(uint32_t));
EventDataDescCreate(&EventData[4], &AppDomainID, sizeof(uint64_t));
#define RH_ETW_REGISTER_Microsoft_Windows_Redhawk_GC_Public() do { PalEventRegister(&MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER, RhEtwControlCallback, &MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER_Context, &Microsoft_Windows_Redhawk_GC_PublicHandle); } while (false)
#define RH_ETW_UNREGISTER_Microsoft_Windows_Redhawk_GC_Public() do { PalEventUnregister(Microsoft_Windows_Redhawk_GC_PublicHandle); } while (false)
-// BulkType event is currently implemented in EventTrace.cpp
-// #define FireEtwBulkType(Count, ClrInstanceID, Values_Len_, Values) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PublicHandle, &BulkType)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER_BulkType(Microsoft_Windows_Redhawk_GC_PublicHandle, &BulkType, Count, ClrInstanceID, Values_Len_, Values) : 0
-
#define FireEtXplatDestroyGCHandle(HandleID, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PublicHandle, &DestroyGCHandle)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER_DestroyGCHandle(Microsoft_Windows_Redhawk_GC_PublicHandle, &DestroyGCHandle, HandleID, ClrInstanceID) : 0
#define FireEtXplatExceptionThrown_V1(ExceptionType, ExceptionMessage, ExceptionEIP, ExceptionHRESULT, ExceptionFlags, ClrInstanceID) (MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER_Context.IsEnabled && PalEventEnabled(Microsoft_Windows_Redhawk_GC_PublicHandle, &ExceptionThrown_V1)) ? Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER_Exception(Microsoft_Windows_Redhawk_GC_PublicHandle, &ExceptionThrown_V1, ExceptionType, ExceptionMessage, ExceptionEIP, ExceptionHRESULT, ExceptionFlags, ClrInstanceID) : 0
#define ETW_EVENT_ENABLED(Context, EventDescriptor) false
-#define FireEtwBGC1stConEnd(ClrInstanceID)
-#define FireEtwBGC1stNonConEnd(ClrInstanceID)
-#define FireEtwBGC2ndConBegin(ClrInstanceID)
-#define FireEtwBGC2ndConEnd(ClrInstanceID)
-#define FireEtwBGC2ndNonConBegin(ClrInstanceID)
-#define FireEtwBGC2ndNonConEnd(ClrInstanceID)
-#define FireEtwBGCAllocWaitBegin(Reason, ClrInstanceID)
-#define FireEtwBGCAllocWaitEnd(Reason, ClrInstanceID)
-#define FireEtwBGCBegin(ClrInstanceID)
-#define FireEtwBGCDrainMark(Objects, ClrInstanceID)
-#define FireEtwBGCOverflow(Min, Max, Objects, IsLarge, ClrInstanceID)
-#define FireEtwBGCPlanEnd(ClrInstanceID)
-#define FireEtwBGCRevisit(Pages, Objects, IsLarge, ClrInstanceID)
-#define FireEtwBGCSweepEnd(ClrInstanceID)
-#define FireEtwGCFullNotify_V1(GenNumber, IsAlloc, ClrInstanceID)
-#define FireEtwGCGlobalHeapHistory_V1(FinalYoungestDesired, NumHeaps, CondemnedGeneration, Gen0ReductionCount, Reason, GlobalMechanisms, ClrInstanceID)
-#define FireEtwGCJoin_V1(Heap, JoinTime, JoinType, ClrInstanceID)
-#define FireEtwGCOptimized_V1(DesiredAllocation, NewAllocation, GenerationNumber, ClrInstanceID)
-#define FireEtwGCPerHeapHistory()
-#define FireEtwGCSettings(SegmentSize, LargeObjectSegmentSize, ServerGC)
-#define FireEtwPinPlugAtGCTime(PlugStart, PlugEnd, GapBeforeSize, ClrInstanceID)
-#define FireEtwPrvDestroyGCHandle(HandleID, ClrInstanceID)
-#define FireEtwPrvGCMarkCards_V1(HeapNum, ClrInstanceID)
-#define FireEtwPrvGCMarkFinalizeQueueRoots_V1(HeapNum, ClrInstanceID)
-#define FireEtwPrvGCMarkHandles_V1(HeapNum, ClrInstanceID)
-#define FireEtwPrvGCMarkStackRoots_V1(HeapNum, ClrInstanceID)
-#define FireEtwPrvSetGCHandle(HandleID, ObjectID, Kind, Generation, AppDomainID, ClrInstanceID)
-
-// BulkType event is currently implemented in EventTrace.cpp
-// #define FireEtwBulkType(Count, ClrInstanceID, Values_Len_, Values)
#define FireEtXplatDestroyGCHandle(HandleID, ClrInstanceID)
#define FireEtXplatExceptionThrown_V1(ExceptionType, ExceptionMessage, ExceptionEIP, ExceptionHRESULT, ExceptionFlags, ClrInstanceID)
#define FireEtXplatGCAllocationTick_V1(AllocationAmount, AllocationKind, ClrInstanceID)
// Initialize EventPipe
void EventPipeAdapter_Initialize();
-bool EventPipeAdapter_Enabled();
// Initialize DS
bool DiagnosticServerAdapter_Initialize();
void EventPipeAdapter_Shutdown();
bool DiagnosticServerAdapter_Shutdown();
+void EventTracing_Initialize();
#endif //EVENTPIPE_INTERFACE_H
\ No newline at end of file
#include <sal.h>
#include <stdarg.h>
+#include "CommonTypes.h"
+#include "CommonMacros.h"
#include "gcenv.structs.h" // CRITICAL_SECTION
#include "IntrinsicConstants.h"
#include "PalRedhawkCommon.h"
int64_t QuadPart;
} LARGE_INTEGER, *PLARGE_INTEGER;
-typedef struct _GUID {
- uint32_t Data1;
- uint16_t Data2;
- uint16_t Data3;
- uint8_t Data4[8];
-} GUID;
-
#define DECLARE_HANDLE(_name) typedef HANDLE _name
struct FILETIME
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
-// Work In Progress to add native events to EventPipe
// shipping criteria: no EVENTPIPE-NATIVEAOT-TODO left in the codebase
-// @TODO: Audit native events in NativeAOT Runtime
+// @TODO: Use genEventing.py to generate this file. Update script to handle
+// nativeaot runtime and allow generating separate declaration and
+// implementation files
+// FireEtw* functions handle both EventPipe and ETW. The naming matches the
+// generated output of genEventing.py used in shared code and other runtimes.
#ifndef CLR_ETW_ALL_MAIN_H
#define CLR_ETW_ALL_MAIN_H
-#include "clreventpipewriteevents.h"
-#include "EtwEvents.h"
-
-inline BOOL EventEnabledDestroyGCHandle(void) {return EventPipeEventEnabledDestroyGCHandle();}
-
-inline ULONG FireEtwDestroyGCHandle(
+BOOL EventEnabledDestroyGCHandle(void);
+ULONG FireEtwDestroyGCHandle(
void* HandleID,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventDestroyGCHandle(HandleID,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatDestroyGCHandle(HandleID,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledExceptionThrown_V1(void) {return EventPipeEventEnabledExceptionThrown_V1();}
-
-inline ULONG FireEtwExceptionThrown_V1(
+);
+
+BOOL EventEnabledExceptionThrown_V1(void);
+ULONG FireEtwExceptionThrown_V1(
const WCHAR* ExceptionType,
const WCHAR* ExceptionMessage,
void* ExceptionEIP,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventExceptionThrown_V1(ExceptionType,ExceptionMessage,ExceptionEIP,ExceptionHRESULT,ExceptionFlags,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatExceptionThrown_V1(ExceptionType,ExceptionMessage,ExceptionEIP,ExceptionHRESULT,ExceptionFlags,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCBulkEdge(void) {return EventPipeEventEnabledGCBulkEdge();}
-
-inline ULONG FireEtwGCBulkEdge(
+);
+
+BOOL EventEnabledGCBulkEdge(void);
+ULONG FireEtwGCBulkEdge(
const unsigned int Index,
const unsigned int Count,
const unsigned short ClrInstanceID,
void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCBulkEdge(Index,Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCBulkEdge(Index,Count,ClrInstanceID,Values_ElementSize, Values);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCBulkMovedObjectRanges(void) {return EventPipeEventEnabledGCBulkMovedObjectRanges();}
-
-inline ULONG FireEtwGCBulkMovedObjectRanges(
+);
+
+BOOL EventEnabledGCBulkMovedObjectRanges(void);
+ULONG FireEtwGCBulkMovedObjectRanges(
const unsigned int Index,
const unsigned int Count,
const unsigned short ClrInstanceID,
void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCBulkMovedObjectRanges(Index,Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCBulkMovedObjectRanges(Index,Count,ClrInstanceID,Values_ElementSize, Values);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCBulkNode(void) {return EventPipeEventEnabledGCBulkNode();}
-
-inline ULONG FireEtwGCBulkNode(
+);
+
+BOOL EventEnabledGCBulkNode(void);
+ULONG FireEtwGCBulkNode(
const unsigned int Index,
const unsigned int Count,
const unsigned short ClrInstanceID,
void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCBulkNode(Index,Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCBulkNode(Index,Count,ClrInstanceID,Values_ElementSize, Values);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCBulkRCW(void) {return EventPipeEventEnabledGCBulkRCW();}
-
-inline ULONG FireEtwGCBulkRCW(
+);
+
+BOOL EventEnabledGCBulkRCW(void);
+ULONG FireEtwGCBulkRCW(
const unsigned int Count,
const unsigned short ClrInstanceID,
int Values_ElementSize,
void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCBulkRCW(Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCBulkRCW(Count,ClrInstanceID,Values_ElementSize, Values);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCBulkRootCCW(void) {return EventPipeEventEnabledGCBulkRootCCW();}
-
-inline ULONG FireEtwGCBulkRootCCW(
+);
+
+BOOL EventEnabledGCBulkRootCCW(void);
+ULONG FireEtwGCBulkRootCCW(
const unsigned int Count,
const unsigned short ClrInstanceID,
int Values_ElementSize,
void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCBulkRootCCW(Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCBulkRootCCW(Count,ClrInstanceID,Values_ElementSize, Values);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCBulkRootConditionalWeakTableElementEdge(void) {return EventPipeEventEnabledGCBulkRootConditionalWeakTableElementEdge();}
-
-inline ULONG FireEtwGCBulkRootConditionalWeakTableElementEdge(
+);
+
+BOOL EventEnabledGCBulkRootConditionalWeakTableElementEdge(void);
+ULONG FireEtwGCBulkRootConditionalWeakTableElementEdge(
const unsigned int Index,
const unsigned int Count,
const unsigned short ClrInstanceID,
void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCBulkRootConditionalWeakTableElementEdge(Index,Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCBulkRootConditionalWeakTableElementEdge(Index,Count,ClrInstanceID,Values_ElementSize, Values);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCBulkRootEdge(void) {return EventPipeEventEnabledGCBulkRootEdge();}
-
-inline ULONG FireEtwGCBulkRootEdge(
+);
+
+BOOL EventEnabledGCBulkRootEdge(void);
+ULONG FireEtwGCBulkRootEdge(
const unsigned int Index,
const unsigned int Count,
const unsigned short ClrInstanceID,
void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCBulkRootEdge(Index,Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCBulkRootEdge(Index,Count,ClrInstanceID,Values_ElementSize, Values);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCBulkSurvivingObjectRanges(void) {return EventPipeEventEnabledGCBulkSurvivingObjectRanges();}
-
-inline ULONG FireEtwGCBulkSurvivingObjectRanges(
+);
+
+BOOL EventEnabledGCBulkSurvivingObjectRanges(void);
+ULONG FireEtwGCBulkSurvivingObjectRanges(
const unsigned int Index,
const unsigned int Count,
const unsigned short ClrInstanceID,
void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCBulkSurvivingObjectRanges(Index,Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCBulkSurvivingObjectRanges(Index,Count,ClrInstanceID,Values_ElementSize, Values);
-#endif
- return status;
-}
+);
-inline BOOL EventEnabledGCCreateConcurrentThread_V1(void) {return EventPipeEventEnabledGCCreateConcurrentThread_V1();}
-
-inline ULONG FireEtwGCCreateConcurrentThread_V1(
+BOOL EventEnabledGCCreateConcurrentThread_V1(void);
+ULONG FireEtwGCCreateConcurrentThread_V1(
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCCreateConcurrentThread_V1(ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCCreateConcurrentThread_V1(ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCCreateSegment_V1(void) {return EventPipeEventEnabledGCCreateSegment_V1();}
-
-inline ULONG FireEtwGCCreateSegment_V1(
+);
+
+BOOL EventEnabledGCCreateSegment_V1(void);
+ULONG FireEtwGCCreateSegment_V1(
const unsigned __int64 Address,
const unsigned __int64 Size,
const unsigned int Type,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCCreateSegment_V1(Address,Size,Type,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCCreateSegment_V1(Address,Size,Type,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCEnd_V1(void) {return EventPipeEventEnabledGCEnd_V1();}
-
-inline ULONG FireEtwGCEnd_V1(
+);
+
+BOOL EventEnabledGCEnd_V1(void);
+ULONG FireEtwGCEnd_V1(
const unsigned int Count,
const unsigned int Depth,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCEnd_V1(Count,Depth,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCEnd_V1(Count,Depth,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCFreeSegment_V1(void) {return EventPipeEventEnabledGCFreeSegment_V1();}
-
-inline ULONG FireEtwGCFreeSegment_V1(
+);
+
+BOOL EventEnabledGCFreeSegment_V1(void);
+ULONG FireEtwGCFreeSegment_V1(
const unsigned __int64 Address,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCFreeSegment_V1(Address,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCFreeSegment_V1(Address,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCGenerationRange(void) {return EventPipeEventEnabledGCGenerationRange();}
-
-inline ULONG FireEtwGCGenerationRange(
+);
+
+BOOL EventEnabledGCGenerationRange(void);
+ULONG FireEtwGCGenerationRange(
const unsigned char Generation,
void* RangeStart,
const unsigned __int64 RangeUsedLength,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCGenerationRange(Generation,RangeStart,RangeUsedLength,RangeReservedLength,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCGenerationRange(Generation,RangeStart,RangeUsedLength,RangeReservedLength,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCHeapStats_V1(void) {return EventPipeEventEnabledGCHeapStats_V1();}
-
-inline ULONG FireEtwGCHeapStats_V1(
+);
+
+BOOL EventEnabledGCHeapStats_V1(void);
+ULONG FireEtwGCHeapStats_V1(
const unsigned __int64 GenerationSize0,
const unsigned __int64 TotalPromotedSize0,
const unsigned __int64 GenerationSize1,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCHeapStats_V1(GenerationSize0,TotalPromotedSize0,GenerationSize1,TotalPromotedSize1,GenerationSize2,TotalPromotedSize2,GenerationSize3,TotalPromotedSize3,FinalizationPromotedSize,FinalizationPromotedCount,PinnedObjectCount,SinkBlockCount,GCHandleCount,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCHeapStats_V1(GenerationSize0,TotalPromotedSize0,GenerationSize1,TotalPromotedSize1,GenerationSize2,TotalPromotedSize2,GenerationSize3,TotalPromotedSize3,FinalizationPromotedSize,FinalizationPromotedCount,PinnedObjectCount,SinkBlockCount,GCHandleCount,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCJoin_V2(void) {return EventPipeEventEnabledGCJoin_V2();}
-
-inline ULONG FireEtwGCJoin_V2(
+);
+
+BOOL EventEnabledGCJoin_V2(void);
+ULONG FireEtwGCJoin_V2(
const unsigned int Heap,
const unsigned int JoinTime,
const unsigned int JoinType,
const unsigned int JoinID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCJoin_V2(Heap,JoinTime,JoinType,ClrInstanceID,JoinID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCJoin_V2(Heap,JoinTime,JoinType,ClrInstanceID,JoinID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCMarkFinalizeQueueRoots(void) {return EventPipeEventEnabledGCMarkFinalizeQueueRoots();}
-
-inline ULONG FireEtwGCMarkFinalizeQueueRoots(
+);
+
+BOOL EventEnabledGCMarkFinalizeQueueRoots(void);
+ULONG FireEtwGCMarkFinalizeQueueRoots(
const unsigned int HeapNum,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCMarkFinalizeQueueRoots(HeapNum,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCMarkFinalizeQueueRoots(HeapNum,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCMarkHandles(void) {return EventPipeEventEnabledGCMarkHandles();}
-
-inline ULONG FireEtwGCMarkHandles(
+);
+
+BOOL EventEnabledGCMarkHandles(void);
+ULONG FireEtwGCMarkHandles(
const unsigned int HeapNum,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCMarkHandles(HeapNum,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCMarkHandles(HeapNum,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCMarkOlderGenerationRoots(void) {return EventPipeEventEnabledGCMarkOlderGenerationRoots();}
-
-inline ULONG FireEtwGCMarkOlderGenerationRoots(
+);
+
+BOOL EventEnabledGCMarkOlderGenerationRoots(void);
+ULONG FireEtwGCMarkOlderGenerationRoots(
const unsigned int HeapNum,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCMarkOlderGenerationRoots(HeapNum,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCMarkOlderGenerationRoots(HeapNum,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCMarkStackRoots(void) {return EventPipeEventEnabledGCMarkStackRoots();}
-
-inline ULONG FireEtwGCMarkStackRoots(
+);
+
+BOOL EventEnabledGCMarkStackRoots(void);
+ULONG FireEtwGCMarkStackRoots(
const unsigned int HeapNum,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCMarkStackRoots(HeapNum,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCMarkStackRoots(HeapNum,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCMarkWithType(void) {return EventPipeEventEnabledGCMarkWithType();}
-
-inline ULONG FireEtwGCMarkWithType(
+);
+
+BOOL EventEnabledGCMarkWithType(void);
+ULONG FireEtwGCMarkWithType(
const unsigned int HeapNum,
const unsigned short ClrInstanceID,
const unsigned int Type,
const unsigned __int64 Bytes,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCMarkWithType(HeapNum,ClrInstanceID,Type,Bytes,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCMarkWithType(HeapNum,ClrInstanceID,Type,Bytes);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCPerHeapHistory_V3(void) {return EventPipeEventEnabledGCPerHeapHistory_V3();}
+);
-inline ULONG FireEtwGCPerHeapHistory_V3(
+BOOL EventEnabledGCPerHeapHistory_V3(void);
+ULONG FireEtwGCPerHeapHistory_V3(
const unsigned short ClrInstanceID,
void* FreeListAllocated,
void* FreeListRejected,
void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCPerHeapHistory_V3(ClrInstanceID,FreeListAllocated,FreeListRejected,EndOfSegAllocated,CondemnedAllocated,PinnedAllocated,PinnedAllocatedAdvance,RunningFreeListEfficiency,CondemnReasons0,CondemnReasons1,CompactMechanisms,ExpandMechanisms,HeapIndex,ExtraGen0Commit,Count,Values_ElementSize, Values,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCPerHeapHistory_V3(ClrInstanceID,FreeListAllocated,FreeListRejected,EndOfSegAllocated,CondemnedAllocated,PinnedAllocated,PinnedAllocatedAdvance,RunningFreeListEfficiency,CondemnReasons0,CondemnReasons1,CompactMechanisms,ExpandMechanisms,HeapIndex,ExtraGen0Commit,Count,Values_ElementSize, Values);
-#endif
- return status;
-}
+);
-inline BOOL EventEnabledGCTerminateConcurrentThread_V1(void) {return EventPipeEventEnabledGCTerminateConcurrentThread_V1();}
-
-inline ULONG FireEtwGCTerminateConcurrentThread_V1(
+BOOL EventEnabledGCTerminateConcurrentThread_V1(void);
+ULONG FireEtwGCTerminateConcurrentThread_V1(
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCTerminateConcurrentThread_V1(ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCTerminateConcurrentThread_V1(ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCTriggered(void) {return EventPipeEventEnabledGCTriggered();}
-
-inline ULONG FireEtwGCTriggered(
+);
+
+BOOL EventEnabledGCTriggered(void);
+ULONG FireEtwGCTriggered(
const unsigned int Reason,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCTriggered(Reason,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCTriggered(Reason,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledModuleLoad_V2(void) {return EventPipeEventEnabledModuleLoad_V2();}
-
-inline ULONG FireEtwModuleLoad_V2(
+);
+
+BOOL EventEnabledModuleLoad_V2(void);
+ULONG FireEtwModuleLoad_V2(
const unsigned __int64 ModuleID,
const unsigned __int64 AssemblyID,
const unsigned int ModuleFlags,
const WCHAR* NativePdbBuildPath,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventModuleLoad_V2(ModuleID,AssemblyID,ModuleFlags,Reserved1,ModuleILPath,ModuleNativePath,ClrInstanceID,ManagedPdbSignature,ManagedPdbAge,ManagedPdbBuildPath,NativePdbSignature,NativePdbAge,NativePdbBuildPath,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatModuleLoad_V2(ModuleID,AssemblyID,ModuleFlags,Reserved1,ModuleILPath,ModuleNativePath,ClrInstanceID,ManagedPdbSignature,ManagedPdbAge,ManagedPdbBuildPath,NativePdbSignature,NativePdbAge,NativePdbBuildPath);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledSetGCHandle(void) {return EventPipeEventEnabledSetGCHandle();}
-
-inline ULONG FireEtwSetGCHandle(
+);
+
+BOOL EventEnabledSetGCHandle(void);
+ULONG FireEtwSetGCHandle(
void* HandleID,
void* ObjectID,
const unsigned int Kind,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventSetGCHandle(HandleID,ObjectID,Kind,Generation,AppDomainID,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatSetGCHandle(HandleID,ObjectID,Kind,Generation,AppDomainID,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCStart_V2(void) {return EventPipeEventEnabledGCStart_V2();}
-
-inline ULONG FireEtwGCStart_V2(
+);
+
+BOOL EventEnabledGCStart_V2(void);
+ULONG FireEtwGCStart_V2(
const unsigned int Count,
const unsigned int Depth,
const unsigned int Reason,
const unsigned __int64 ClientSequenceNumber,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCStart_V2(Count,Depth,Reason,Type,ClrInstanceID,ClientSequenceNumber,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCStart_V2(Count,Depth,Reason,Type,ClrInstanceID,ClientSequenceNumber);
-#endif
- return status;
-}
+);
-inline BOOL EventEnabledGCRestartEEEnd_V1(void) {return EventPipeEventEnabledGCRestartEEEnd_V1();}
-
-inline ULONG FireEtwGCRestartEEEnd_V1(
+BOOL EventEnabledGCRestartEEEnd_V1(void);
+ULONG FireEtwGCRestartEEEnd_V1(
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCRestartEEEnd_V1(ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCRestartEEEnd_V1(ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCRestartEEBegin_V1(void) {return EventPipeEventEnabledGCRestartEEBegin_V1();}
+);
-inline ULONG FireEtwGCRestartEEBegin_V1(
+BOOL EventEnabledGCRestartEEBegin_V1(void);
+ULONG FireEtwGCRestartEEBegin_V1(
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCRestartEEBegin_V1(ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCRestartEEBegin_V1(ClrInstanceID);
-#endif
- return status;
-}
+);
-inline BOOL EventEnabledGCSuspendEEEnd_V1(void) {return EventPipeEventEnabledGCSuspendEEEnd_V1();}
-
-inline ULONG FireEtwGCSuspendEEEnd_V1(
+BOOL EventEnabledGCSuspendEEEnd_V1(void);
+ULONG FireEtwGCSuspendEEEnd_V1(
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCSuspendEEEnd_V1(ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXPlatGCSuspendEEEnd_V1(ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledGCSuspendEEBegin_V1(void) {return EventPipeEventEnabledGCSuspendEEBegin_V1();}
-
-inline ULONG FireEtwGCSuspendEEBegin_V1(
+);
+
+BOOL EventEnabledGCSuspendEEBegin_V1(void);
+ULONG FireEtwGCSuspendEEBegin_V1(
const unsigned int Reason,
const unsigned int Count,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCSuspendEEBegin_V1(Reason,Count,ClrInstanceID,ActivityId,RelatedActivityId);
-#ifndef TARGET_UNIX
- status &= FireEtXplatGCSuspendEEBegin_V1(Reason,Count,ClrInstanceID);
-#endif
- return status;
-}
-
-inline BOOL EventEnabledDecreaseMemoryPressure(void) {return EventPipeEventEnabledDecreaseMemoryPressure();}
-
-inline ULONG FireEtwDecreaseMemoryPressure(
+);
+
+BOOL EventEnabledDecreaseMemoryPressure(void);
+ULONG FireEtwDecreaseMemoryPressure(
const unsigned __int64 BytesFreed,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventDecreaseMemoryPressure(BytesFreed,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline BOOL EventEnabledFinalizeObject(void) {return EventPipeEventEnabledFinalizeObject();}
-
-inline ULONG FireEtwFinalizeObject(
+BOOL EventEnabledFinalizeObject(void);
+ULONG FireEtwFinalizeObject(
const void* TypeID,
const void* ObjectID,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventFinalizeObject(TypeID,ObjectID,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledGCFinalizersBegin_V1(void) {return EventPipeEventEnabledGCFinalizersBegin_V1();}
+);
-inline ULONG FireEtwGCFinalizersBegin_V1(
+BOOL EventEnabledGCFinalizersBegin_V1(void);
+ULONG FireEtwGCFinalizersBegin_V1(
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCFinalizersBegin_V1(ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledGCFinalizersEnd_V1(void) {return EventPipeEventEnabledGCFinalizersEnd_V1();}
+);
-inline ULONG FireEtwGCFinalizersEnd_V1(
+BOOL EventEnabledGCFinalizersEnd_V1(void);
+ULONG FireEtwGCFinalizersEnd_V1(
const unsigned int Count,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCFinalizersEnd_V1(Count,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline BOOL EventEnabledContentionStart_V2(void) {return EventPipeEventEnabledContentionStart_V2();}
-
-inline ULONG FireEtwContentionStart_V2(
+BOOL EventEnabledContentionStart_V2(void);
+ULONG FireEtwContentionStart_V2(
const unsigned char ContentionFlags,
const unsigned short ClrInstanceID,
const void* LockID,
const unsigned __int64 LockOwnerThreadID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventContentionStart_V2(ContentionFlags,ClrInstanceID,LockID,AssociatedObjectID,LockOwnerThreadID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledContentionStop_V1(void) {return EventPipeEventEnabledContentionStop_V1();}
+);
-inline ULONG FireEtwContentionStop_V1(
+BOOL EventEnabledContentionStop_V1(void);
+ULONG FireEtwContentionStop_V1(
const unsigned char ContentionFlags,
const unsigned short ClrInstanceID,
const double DurationNs,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventContentionStop_V1(ContentionFlags,ClrInstanceID,DurationNs,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledContentionLockCreated(void) {return EventPipeEventEnabledContentionLockCreated();}
+);
-inline ULONG FireEtwContentionLockCreated(
+BOOL EventEnabledContentionLockCreated(void);
+ULONG FireEtwContentionLockCreated(
const void* LockID,
const void* AssociatedObjectID,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventContentionLockCreated(LockID,AssociatedObjectID,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline BOOL EventEnabledThreadPoolWorkerThreadStart(void) {return EventPipeEventEnabledThreadPoolWorkerThreadStart();}
-
-inline uint32_t FireEtwThreadPoolWorkerThreadStart(
+BOOL EventEnabledThreadPoolWorkerThreadStart(void);
+uint32_t FireEtwThreadPoolWorkerThreadStart(
const unsigned int ActiveWorkerThreadCount,
const unsigned int RetiredWorkerThreadCount,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- uint32_t status = EventPipeWriteEventThreadPoolWorkerThreadStart(ActiveWorkerThreadCount,RetiredWorkerThreadCount,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline uint32_t FireEtwThreadPoolWorkerThreadStop(
+uint32_t FireEtwThreadPoolWorkerThreadStop(
const unsigned int ActiveWorkerThreadCount,
const unsigned int RetiredWorkerThreadCount,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- uint32_t status = EventPipeWriteEventThreadPoolWorkerThreadStop(ActiveWorkerThreadCount,RetiredWorkerThreadCount,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline uint32_t FireEtwThreadPoolWorkerThreadWait(
+uint32_t FireEtwThreadPoolWorkerThreadWait(
const unsigned int ActiveWorkerThreadCount,
const unsigned int RetiredWorkerThreadCount,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- uint32_t status = EventPipeWriteEventThreadPoolWorkerThreadWait(ActiveWorkerThreadCount,RetiredWorkerThreadCount,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledThreadPoolMinMaxThreads(void) {return EventPipeEventEnabledThreadPoolMinMaxThreads();}
+);
-inline uint32_t FireEtwThreadPoolMinMaxThreads(
+BOOL EventEnabledThreadPoolMinMaxThreads(void);
+uint32_t FireEtwThreadPoolMinMaxThreads(
const unsigned short MinWorkerThreads,
const unsigned short MaxWorkerThreads,
const unsigned short MinIOCompletionThreads,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- uint32_t status = EventPipeWriteEventThreadPoolMinMaxThreads(MinWorkerThreads,MaxWorkerThreads,MinIOCompletionThreads,MaxIOCompletionThreads,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline BOOL EventEnabledThreadPoolWorkerThreadAdjustmentSample(void) {return EventPipeEventEnabledThreadPoolWorkerThreadAdjustmentSample();}
-
-inline uint32_t FireEtwThreadPoolWorkerThreadAdjustmentSample(
+BOOL EventEnabledThreadPoolWorkerThreadAdjustmentSample(void);
+uint32_t FireEtwThreadPoolWorkerThreadAdjustmentSample(
const double Throughput,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- uint32_t status = EventPipeWriteEventThreadPoolWorkerThreadAdjustmentSample(Throughput,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledThreadPoolWorkerThreadAdjustmentAdjustment(void) {return EventPipeEventEnabledThreadPoolWorkerThreadAdjustmentAdjustment();}
+);
-inline uint32_t FireEtwThreadPoolWorkerThreadAdjustmentAdjustment(
+BOOL EventEnabledThreadPoolWorkerThreadAdjustmentAdjustment(void);
+uint32_t FireEtwThreadPoolWorkerThreadAdjustmentAdjustment(
const double AverageThroughput,
const unsigned int NewWorkerThreadCount,
const unsigned int Reason,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- uint32_t status = EventPipeWriteEventThreadPoolWorkerThreadAdjustmentAdjustment(AverageThroughput,NewWorkerThreadCount,Reason,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline BOOL EventEnabledThreadPoolWorkerThreadAdjustmentStats(void) {return EventPipeEventEnabledThreadPoolWorkerThreadAdjustmentStats();}
-
-inline uint32_t FireEtwThreadPoolWorkerThreadAdjustmentStats(
+BOOL EventEnabledThreadPoolWorkerThreadAdjustmentStats(void);
+uint32_t FireEtwThreadPoolWorkerThreadAdjustmentStats(
const double Duration,
const double Throughput,
const double ThreadWave,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- uint32_t status = EventPipeWriteEventThreadPoolWorkerThreadAdjustmentStats(Duration,Throughput,ThreadWave,ThroughputWave,ThroughputErrorEstimate,AverageThroughputErrorEstimate,ThroughputRatio,Confidence,NewControlSetting,NewThreadWaveMagnitude,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledThreadPoolIOEnqueue(void) {return EventPipeEventEnabledThreadPoolIOEnqueue();}
+);
-inline uint32_t FireEtwThreadPoolIOEnqueue(
+BOOL EventEnabledThreadPoolIOEnqueue(void);
+uint32_t FireEtwThreadPoolIOEnqueue(
const void* NativeOverlapped,
const void* Overlapped,
const BOOL MultiDequeues,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- uint32_t status = EventPipeWriteEventThreadPoolIOEnqueue(NativeOverlapped,Overlapped,MultiDequeues,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledThreadPoolIODequeue(void) {return EventPipeEventEnabledThreadPoolIODequeue();}
+);
-inline uint32_t FireEtwThreadPoolIODequeue(
+BOOL EventEnabledThreadPoolIODequeue(void);
+uint32_t FireEtwThreadPoolIODequeue(
const void* NativeOverlapped,
const void* Overlapped,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- uint32_t status = EventPipeWriteEventThreadPoolIODequeue(NativeOverlapped,Overlapped,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline BOOL EventEnabledThreadPoolWorkingThreadCount(void) {return EventPipeEventEnabledThreadPoolWorkingThreadCount();}
-
-inline uint32_t FireEtwThreadPoolWorkingThreadCount(
+BOOL EventEnabledThreadPoolWorkingThreadCount(void);
+uint32_t FireEtwThreadPoolWorkingThreadCount(
const unsigned int Count,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- uint32_t status = EventPipeWriteEventThreadPoolWorkingThreadCount(Count,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledThreadPoolIOPack(void) {return EventPipeEventEnabledThreadPoolIOPack();}
+);
-inline uint32_t FireEtwThreadPoolIOPack(
+BOOL EventEnabledThreadPoolIOPack(void);
+uint32_t FireEtwThreadPoolIOPack(
const void* NativeOverlapped,
const void* Overlapped,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- uint32_t status = EventPipeWriteEventThreadPoolIOPack(NativeOverlapped,Overlapped,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledGCAllocationTick_V4(void) {return EventPipeEventEnabledGCAllocationTick_V4();}
+);
-inline ULONG FireEtwGCAllocationTick_V4(
+BOOL EventEnabledGCAllocationTick_V4(void);
+ULONG FireEtwGCAllocationTick_V4(
const unsigned int AllocationAmount,
const unsigned int AllocationKind,
const unsigned short ClrInstanceID,
const unsigned __int64 ObjectSize,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCAllocationTick_V4(AllocationAmount,AllocationKind,ClrInstanceID,AllocationAmount64,TypeID,TypeName,HeapIndex,Address,ObjectSize,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline BOOL EventEnabledGCHeapStats_V2(void) {return EventPipeEventEnabledGCHeapStats_V2();}
-
-inline ULONG FireEtwGCHeapStats_V2(
+BOOL EventEnabledGCHeapStats_V2(void);
+ULONG FireEtwGCHeapStats_V2(
const unsigned __int64 GenerationSize0,
const unsigned __int64 TotalPromotedSize0,
const unsigned __int64 GenerationSize1,
const unsigned __int64 TotalPromotedSize4,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCHeapStats_V2(GenerationSize0,TotalPromotedSize0,GenerationSize1,TotalPromotedSize1,GenerationSize2,TotalPromotedSize2,GenerationSize3,TotalPromotedSize3,FinalizationPromotedSize,FinalizationPromotedCount,PinnedObjectCount,SinkBlockCount,GCHandleCount,ClrInstanceID,GenerationSize4,TotalPromotedSize4,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledGCSampledObjectAllocationHigh(void) {return EventPipeEventEnabledGCSampledObjectAllocationHigh();}
+);
-inline ULONG FireEtwGCSampledObjectAllocationHigh(
+BOOL EventEnabledGCSampledObjectAllocationHigh(void);
+ULONG FireEtwGCSampledObjectAllocationHigh(
const void* Address,
const void* TypeID,
const unsigned int ObjectCountForTypeSample,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCSampledObjectAllocationHigh(Address,TypeID,ObjectCountForTypeSample,TotalSizeForTypeSample,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledGCSampledObjectAllocationLow(void) {return EventPipeEventEnabledGCSampledObjectAllocationLow();}
+);
-inline ULONG FireEtwGCSampledObjectAllocationLow(
+BOOL EventEnabledGCSampledObjectAllocationLow(void);
+ULONG FireEtwGCSampledObjectAllocationLow(
const void* Address,
const void* TypeID,
const unsigned int ObjectCountForTypeSample,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCSampledObjectAllocationLow(Address,TypeID,ObjectCountForTypeSample,TotalSizeForTypeSample,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline BOOL EventEnabledPinObjectAtGCTime(void) {return EventPipeEventEnabledPinObjectAtGCTime();}
-
-inline ULONG FireEtwPinObjectAtGCTime(
+BOOL EventEnabledPinObjectAtGCTime(void);
+ULONG FireEtwPinObjectAtGCTime(
const void* HandleID,
const void* ObjectID,
const unsigned __int64 ObjectSize,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventPinObjectAtGCTime(HandleID,ObjectID,ObjectSize,TypeName,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledGCBulkRootStaticVar(void) {return EventPipeEventEnabledGCBulkRootStaticVar();}
+);
-inline ULONG FireEtwGCBulkRootStaticVar(
+BOOL EventEnabledGCBulkRootStaticVar(void);
+ULONG FireEtwGCBulkRootStaticVar(
const unsigned int Count,
const unsigned __int64 AppDomainID,
const unsigned short ClrInstanceID,
const void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCBulkRootStaticVar(Count,AppDomainID,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline BOOL EventEnabledIncreaseMemoryPressure(void) {return EventPipeEventEnabledIncreaseMemoryPressure();}
-
-inline ULONG FireEtwIncreaseMemoryPressure(
+BOOL EventEnabledIncreaseMemoryPressure(void);
+ULONG FireEtwIncreaseMemoryPressure(
const unsigned __int64 BytesAllocated,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventIncreaseMemoryPressure(BytesAllocated,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledGCGlobalHeapHistory_V4(void) {return EventPipeEventEnabledGCGlobalHeapHistory_V4();}
+);
-inline ULONG FireEtwGCGlobalHeapHistory_V4(
+BOOL EventEnabledGCGlobalHeapHistory_V4(void);
+ULONG FireEtwGCGlobalHeapHistory_V4(
const unsigned __int64 FinalYoungestDesired,
const signed int NumHeaps,
const unsigned int CondemnedGeneration,
const void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCGlobalHeapHistory_V4(FinalYoungestDesired,NumHeaps,CondemnedGeneration,Gen0ReductionCount,Reason,GlobalMechanisms,ClrInstanceID,PauseMode,MemoryPressure,CondemnReasons0,CondemnReasons1,Count,Values_ElementSize, Values,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline BOOL EventEnabledGenAwareBegin(void) {return EventPipeEventEnabledGenAwareBegin();}
-
-inline ULONG FireEtwGenAwareBegin(
+BOOL EventEnabledGenAwareBegin(void);
+ULONG FireEtwGenAwareBegin(
const unsigned int Count,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGenAwareBegin(Count,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledGenAwareEnd(void) {return EventPipeEventEnabledGenAwareEnd();}
+);
-inline ULONG FireEtwGenAwareEnd(
+BOOL EventEnabledGenAwareEnd(void);
+ULONG FireEtwGenAwareEnd(
const unsigned int Count,
const unsigned short ClrInstanceID,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGenAwareEnd(Count,ClrInstanceID,ActivityId,RelatedActivityId);
- return status;
-}
-
-inline BOOL EventEnabledGCLOHCompact(void) {return EventPipeEventEnabledGCLOHCompact();}
+);
-inline ULONG FireEtwGCLOHCompact(
+BOOL EventEnabledGCLOHCompact(void);
+ULONG FireEtwGCLOHCompact(
const unsigned short ClrInstanceID,
const unsigned short Count,
int Values_ElementSize,
const void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCLOHCompact(ClrInstanceID,Count,Values_ElementSize, Values,ActivityId,RelatedActivityId);
- return status;
-}
+);
-inline BOOL EventEnabledGCFitBucketInfo(void) {return EventPipeEventEnabledGCFitBucketInfo();}
-
-inline ULONG FireEtwGCFitBucketInfo(
+BOOL EventEnabledGCFitBucketInfo(void);
+ULONG FireEtwGCFitBucketInfo(
const unsigned short ClrInstanceID,
const unsigned short BucketKind,
const unsigned __int64 TotalSize,
const void* Values,
const GUID * ActivityId = nullptr,
const GUID * RelatedActivityId = nullptr
-)
-{
- ULONG status = EventPipeWriteEventGCFitBucketInfo(ClrInstanceID,BucketKind,TotalSize,Count,Values_ElementSize, Values,ActivityId,RelatedActivityId);
- return status;
-}
+);
+
+#ifdef FEATURE_ETW
+
+// ==================================================================
+// Events currently only fired via ETW (private runtime provider)
+// ==================================================================
+
+ULONG FireEtwGCSettings(
+ const unsigned __int64 SegmentSize,
+ const unsigned __int64 LargeObjectSegmentSize,
+ const BOOL ServerGC,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwPinPlugAtGCTime(
+ const void* PlugStart,
+ const void* PlugEnd,
+ const void* GapBeforeSize,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwBGCBegin(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwBGC1stNonConEnd(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwBGC1stConEnd(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwBGC2ndNonConBegin(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwBGC2ndNonConEnd(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwBGC2ndConBegin(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwBGC2ndConEnd(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwBGCDrainMark(
+ const unsigned __int64 Objects,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwBGCRevisit(
+ const unsigned __int64 Pages,
+ const unsigned __int64 Objects,
+ const unsigned int IsLarge,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwBGCOverflow(
+ const unsigned __int64 Min,
+ const unsigned __int64 Max,
+ const unsigned __int64 Objects,
+ const unsigned int IsLarge,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwBGCAllocWaitBegin(
+ const unsigned int Reason,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwBGCAllocWaitEnd(
+ const unsigned int Reason,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwGCFullNotify_V1(
+ const unsigned int GenNumber,
+ const unsigned int IsAlloc,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwPrvSetGCHandle(
+ const void* HandleID,
+ const void* ObjectID,
+ const unsigned int Kind,
+ const unsigned int Generation,
+ const unsigned __int64 AppDomainID,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+ULONG FireEtwPrvDestroyGCHandle(
+ const void* HandleID,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+);
+
+#else
+
+#define FireEtwBGC1stConEnd(ClrInstanceID)
+#define FireEtwBGC1stNonConEnd(ClrInstanceID)
+#define FireEtwBGC2ndConBegin(ClrInstanceID)
+#define FireEtwBGC2ndConEnd(ClrInstanceID)
+#define FireEtwBGC2ndNonConBegin(ClrInstanceID)
+#define FireEtwBGC2ndNonConEnd(ClrInstanceID)
+#define FireEtwBGCAllocWaitBegin(Reason, ClrInstanceID)
+#define FireEtwBGCAllocWaitEnd(Reason, ClrInstanceID)
+#define FireEtwBGCBegin(ClrInstanceID)
+#define FireEtwBGCDrainMark(Objects, ClrInstanceID)
+#define FireEtwBGCOverflow(Min, Max, Objects, IsLarge, ClrInstanceID)
+#define FireEtwBGCRevisit(Pages, Objects, IsLarge, ClrInstanceID)
+#define FireEtwGCFullNotify_V1(GenNumber, IsAlloc, ClrInstanceID)
+#define FireEtwGCSettings(SegmentSize, LargeObjectSegmentSize, ServerGC)
+#define FireEtwPinPlugAtGCTime(PlugStart, PlugEnd, GapBeforeSize, ClrInstanceID)
+#define FireEtwPrvDestroyGCHandle(HandleID, ClrInstanceID)
+#define FireEtwPrvSetGCHandle(HandleID, ObjectID, Kind, Generation, AppDomainID, ClrInstanceID)
+
+#endif // FEATURE_ETW
+
#endif // __CLR_ETW_ALL_MAIN_H__
\ No newline at end of file
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+//
+// File: eventtrace.cpp
+// Abstract: This module implements Event Tracing support
+//
+// ============================================================================
+
+#include "common.h"
+
+#include "eventtrace.h"
+
+void EventTracing_Initialize() { }
+
+void ETW::GCLog::FireGcStart(ETW_GC_INFO * pGcInfo) { }
+
+#ifdef FEATURE_ETW
+BOOL ETW::GCLog::ShouldTrackMovementForEtw() { return FALSE; }
+void ETW::GCLog::BeginMovedReferences(size_t * pProfilingContext) { }
+void ETW::GCLog::EndMovedReferences(size_t profilingContext, BOOL fAllowProfApiNotification) { }
+void ETW::GCLog::WalkHeap() { }
+#endif // FEATURE_ETW
)
list(APPEND GEN_EVENTPIPE_SOURCES
+ ${AOT_EVENTPIPE_SHIM_DIR}/clretwallmain.cpp
${AOT_EVENTPIPE_SHIM_DIR}/dotnetruntime.cpp
)
${RUNTIME_DIR}/runtimeeventinternal.cpp
)
+if (FEATURE_EVENT_TRACE)
+ list(APPEND AOT_EVENTTRACE_SOURCES
+ ${RUNTIME_DIR}/eventtrace.cpp
+ ${RUNTIME_DIR}/profheapwalkhelper.cpp
+ )
+
+ # These are carry-overs from .NET Native and only included for ETW currently
+ # bulktype : directly emits via ETW with EventWrite
+ # gcheap : GCHeapDump, GCHeapSurvivalAndMovement - not prioritizing for nativeaot yet
+ if (FEATURE_ETW)
+ list(APPEND AOT_EVENTTRACE_SOURCES
+ ${RUNTIME_DIR}/eventtrace_bulktype.cpp
+ ${RUNTIME_DIR}/eventtrace_gcheap.cpp
+ )
+ endif()
+endif()
+
list(APPEND EVENTPIPE_SOURCES
${AOT_EVENTPIPE_SHIM_SOURCES}
${AOT_EVENTPIPE_SHIM_HEADERS}
${AOT_EVENTPIPE_MANAGED_TO_NATIVE_SOURCES}
+ ${AOT_EVENTTRACE_SOURCES}
${SHARED_EVENTPIPE_CONFIG_HEADERS}
${GEN_EVENTPIPE_SOURCES}
${CONTAINER_SOURCES}
list(APPEND AOT_EVENTPIPE_DISABLED_SOURCES
${RUNTIME_DIR}/DisabledEventPipeInterface.cpp
${RUNTIME_DIR}/disabledeventpipeinternal.cpp
+ ${RUNTIME_DIR}/disabledeventtrace.cpp
${RUNTIME_DIR}/disabledruntimeeventinternal.cpp
- ${AOT_EVENTPIPE_SHIM_DIR}/disableddotnetruntime.cpp
+ ${AOT_EVENTPIPE_SHIM_DIR}/disabledclretwallmain.cpp
)
add_library(eventpipe-enabled STATIC ${EVENTPIPE_SOURCES})
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+// shipping criteria: no EVENTPIPE-NATIVEAOT-TODO left in the codebase
+// @TODO: Use genEventing.py to generate this file. Update script to handle
+// nativeaot runtime and allow generating separate declaration and
+// implementation files
+
+#include <common.h>
+#include <PalRedhawk.h>
+
+#include "clretwallmain.h"
+#include "clreventpipewriteevents.h"
+#include "EtwEvents.h"
+
+BOOL EventEnabledDestroyGCHandle(void) {return EventPipeEventEnabledDestroyGCHandle();}
+
+ULONG FireEtwDestroyGCHandle(
+ void* HandleID,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventDestroyGCHandle(HandleID,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatDestroyGCHandle(HandleID,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledExceptionThrown_V1(void) {return EventPipeEventEnabledExceptionThrown_V1();}
+
+ULONG FireEtwExceptionThrown_V1(
+ const WCHAR* ExceptionType,
+ const WCHAR* ExceptionMessage,
+ void* ExceptionEIP,
+ const unsigned int ExceptionHRESULT,
+ const unsigned short ExceptionFlags,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventExceptionThrown_V1(ExceptionType,ExceptionMessage,ExceptionEIP,ExceptionHRESULT,ExceptionFlags,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatExceptionThrown_V1(ExceptionType,ExceptionMessage,ExceptionEIP,ExceptionHRESULT,ExceptionFlags,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCBulkEdge(void) {return EventPipeEventEnabledGCBulkEdge();}
+
+ULONG FireEtwGCBulkEdge(
+ const unsigned int Index,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCBulkEdge(Index,Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCBulkEdge(Index,Count,ClrInstanceID,Values_ElementSize, Values);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCBulkMovedObjectRanges(void) {return EventPipeEventEnabledGCBulkMovedObjectRanges();}
+
+ULONG FireEtwGCBulkMovedObjectRanges(
+ const unsigned int Index,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCBulkMovedObjectRanges(Index,Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCBulkMovedObjectRanges(Index,Count,ClrInstanceID,Values_ElementSize, Values);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCBulkNode(void) {return EventPipeEventEnabledGCBulkNode();}
+
+ULONG FireEtwGCBulkNode(
+ const unsigned int Index,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCBulkNode(Index,Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCBulkNode(Index,Count,ClrInstanceID,Values_ElementSize, Values);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCBulkRCW(void) {return EventPipeEventEnabledGCBulkRCW();}
+
+ULONG FireEtwGCBulkRCW(
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCBulkRCW(Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCBulkRCW(Count,ClrInstanceID,Values_ElementSize, Values);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCBulkRootCCW(void) {return EventPipeEventEnabledGCBulkRootCCW();}
+
+ULONG FireEtwGCBulkRootCCW(
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCBulkRootCCW(Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCBulkRootCCW(Count,ClrInstanceID,Values_ElementSize, Values);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCBulkRootConditionalWeakTableElementEdge(void) {return EventPipeEventEnabledGCBulkRootConditionalWeakTableElementEdge();}
+
+ULONG FireEtwGCBulkRootConditionalWeakTableElementEdge(
+ const unsigned int Index,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCBulkRootConditionalWeakTableElementEdge(Index,Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCBulkRootConditionalWeakTableElementEdge(Index,Count,ClrInstanceID,Values_ElementSize, Values);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCBulkRootEdge(void) {return EventPipeEventEnabledGCBulkRootEdge();}
+
+ULONG FireEtwGCBulkRootEdge(
+ const unsigned int Index,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCBulkRootEdge(Index,Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCBulkRootEdge(Index,Count,ClrInstanceID,Values_ElementSize, Values);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCBulkSurvivingObjectRanges(void) {return EventPipeEventEnabledGCBulkSurvivingObjectRanges();}
+
+ULONG FireEtwGCBulkSurvivingObjectRanges(
+ const unsigned int Index,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCBulkSurvivingObjectRanges(Index,Count,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCBulkSurvivingObjectRanges(Index,Count,ClrInstanceID,Values_ElementSize, Values);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCCreateConcurrentThread_V1(void) {return EventPipeEventEnabledGCCreateConcurrentThread_V1();}
+
+ULONG FireEtwGCCreateConcurrentThread_V1(
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCCreateConcurrentThread_V1(ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCCreateConcurrentThread_V1(ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCCreateSegment_V1(void) {return EventPipeEventEnabledGCCreateSegment_V1();}
+
+ULONG FireEtwGCCreateSegment_V1(
+ const unsigned __int64 Address,
+ const unsigned __int64 Size,
+ const unsigned int Type,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCCreateSegment_V1(Address,Size,Type,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCCreateSegment_V1(Address,Size,Type,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCEnd_V1(void) {return EventPipeEventEnabledGCEnd_V1();}
+
+ULONG FireEtwGCEnd_V1(
+ const unsigned int Count,
+ const unsigned int Depth,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCEnd_V1(Count,Depth,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCEnd_V1(Count,Depth,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCFreeSegment_V1(void) {return EventPipeEventEnabledGCFreeSegment_V1();}
+
+ULONG FireEtwGCFreeSegment_V1(
+ const unsigned __int64 Address,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCFreeSegment_V1(Address,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCFreeSegment_V1(Address,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCGenerationRange(void) {return EventPipeEventEnabledGCGenerationRange();}
+
+ULONG FireEtwGCGenerationRange(
+ const unsigned char Generation,
+ void* RangeStart,
+ const unsigned __int64 RangeUsedLength,
+ const unsigned __int64 RangeReservedLength,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCGenerationRange(Generation,RangeStart,RangeUsedLength,RangeReservedLength,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCGenerationRange(Generation,RangeStart,RangeUsedLength,RangeReservedLength,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCHeapStats_V1(void) {return EventPipeEventEnabledGCHeapStats_V1();}
+
+ULONG FireEtwGCHeapStats_V1(
+ const unsigned __int64 GenerationSize0,
+ const unsigned __int64 TotalPromotedSize0,
+ const unsigned __int64 GenerationSize1,
+ const unsigned __int64 TotalPromotedSize1,
+ const unsigned __int64 GenerationSize2,
+ const unsigned __int64 TotalPromotedSize2,
+ const unsigned __int64 GenerationSize3,
+ const unsigned __int64 TotalPromotedSize3,
+ const unsigned __int64 FinalizationPromotedSize,
+ const unsigned __int64 FinalizationPromotedCount,
+ const unsigned int PinnedObjectCount,
+ const unsigned int SinkBlockCount,
+ const unsigned int GCHandleCount,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCHeapStats_V1(GenerationSize0,TotalPromotedSize0,GenerationSize1,TotalPromotedSize1,GenerationSize2,TotalPromotedSize2,GenerationSize3,TotalPromotedSize3,FinalizationPromotedSize,FinalizationPromotedCount,PinnedObjectCount,SinkBlockCount,GCHandleCount,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCHeapStats_V1(GenerationSize0,TotalPromotedSize0,GenerationSize1,TotalPromotedSize1,GenerationSize2,TotalPromotedSize2,GenerationSize3,TotalPromotedSize3,FinalizationPromotedSize,FinalizationPromotedCount,PinnedObjectCount,SinkBlockCount,GCHandleCount,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCJoin_V2(void) {return EventPipeEventEnabledGCJoin_V2();}
+
+ULONG FireEtwGCJoin_V2(
+ const unsigned int Heap,
+ const unsigned int JoinTime,
+ const unsigned int JoinType,
+ const unsigned short ClrInstanceID,
+ const unsigned int JoinID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCJoin_V2(Heap,JoinTime,JoinType,ClrInstanceID,JoinID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCJoin_V2(Heap,JoinTime,JoinType,ClrInstanceID,JoinID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCMarkFinalizeQueueRoots(void) {return EventPipeEventEnabledGCMarkFinalizeQueueRoots();}
+
+ULONG FireEtwGCMarkFinalizeQueueRoots(
+ const unsigned int HeapNum,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCMarkFinalizeQueueRoots(HeapNum,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCMarkFinalizeQueueRoots(HeapNum,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCMarkHandles(void) {return EventPipeEventEnabledGCMarkHandles();}
+
+ULONG FireEtwGCMarkHandles(
+ const unsigned int HeapNum,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCMarkHandles(HeapNum,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCMarkHandles(HeapNum,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCMarkOlderGenerationRoots(void) {return EventPipeEventEnabledGCMarkOlderGenerationRoots();}
+
+ULONG FireEtwGCMarkOlderGenerationRoots(
+ const unsigned int HeapNum,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCMarkOlderGenerationRoots(HeapNum,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCMarkOlderGenerationRoots(HeapNum,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCMarkStackRoots(void) {return EventPipeEventEnabledGCMarkStackRoots();}
+
+ULONG FireEtwGCMarkStackRoots(
+ const unsigned int HeapNum,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCMarkStackRoots(HeapNum,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCMarkStackRoots(HeapNum,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCMarkWithType(void) {return EventPipeEventEnabledGCMarkWithType();}
+
+ULONG FireEtwGCMarkWithType(
+ const unsigned int HeapNum,
+ const unsigned short ClrInstanceID,
+ const unsigned int Type,
+ const unsigned __int64 Bytes,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCMarkWithType(HeapNum,ClrInstanceID,Type,Bytes,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCMarkWithType(HeapNum,ClrInstanceID,Type,Bytes);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCPerHeapHistory_V3(void) {return EventPipeEventEnabledGCPerHeapHistory_V3();}
+
+ULONG FireEtwGCPerHeapHistory_V3(
+ const unsigned short ClrInstanceID,
+ void* FreeListAllocated,
+ void* FreeListRejected,
+ void* EndOfSegAllocated,
+ void* CondemnedAllocated,
+ void* PinnedAllocated,
+ void* PinnedAllocatedAdvance,
+ const unsigned int RunningFreeListEfficiency,
+ const unsigned int CondemnReasons0,
+ const unsigned int CondemnReasons1,
+ const unsigned int CompactMechanisms,
+ const unsigned int ExpandMechanisms,
+ const unsigned int HeapIndex,
+ void* ExtraGen0Commit,
+ const unsigned int Count,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCPerHeapHistory_V3(ClrInstanceID,FreeListAllocated,FreeListRejected,EndOfSegAllocated,CondemnedAllocated,PinnedAllocated,PinnedAllocatedAdvance,RunningFreeListEfficiency,CondemnReasons0,CondemnReasons1,CompactMechanisms,ExpandMechanisms,HeapIndex,ExtraGen0Commit,Count,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCPerHeapHistory_V3(ClrInstanceID,FreeListAllocated,FreeListRejected,EndOfSegAllocated,CondemnedAllocated,PinnedAllocated,PinnedAllocatedAdvance,RunningFreeListEfficiency,CondemnReasons0,CondemnReasons1,CompactMechanisms,ExpandMechanisms,HeapIndex,ExtraGen0Commit,Count,Values_ElementSize, Values);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCTerminateConcurrentThread_V1(void) {return EventPipeEventEnabledGCTerminateConcurrentThread_V1();}
+
+ULONG FireEtwGCTerminateConcurrentThread_V1(
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCTerminateConcurrentThread_V1(ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCTerminateConcurrentThread_V1(ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCTriggered(void) {return EventPipeEventEnabledGCTriggered();}
+
+ULONG FireEtwGCTriggered(
+ const unsigned int Reason,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCTriggered(Reason,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCTriggered(Reason,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledModuleLoad_V2(void) {return EventPipeEventEnabledModuleLoad_V2();}
+
+ULONG FireEtwModuleLoad_V2(
+ const unsigned __int64 ModuleID,
+ const unsigned __int64 AssemblyID,
+ const unsigned int ModuleFlags,
+ const unsigned int Reserved1,
+ const WCHAR* ModuleILPath,
+ const WCHAR* ModuleNativePath,
+ const unsigned short ClrInstanceID,
+ const GUID* ManagedPdbSignature,
+ const unsigned int ManagedPdbAge,
+ const WCHAR* ManagedPdbBuildPath,
+ const GUID* NativePdbSignature,
+ const unsigned int NativePdbAge,
+ const WCHAR* NativePdbBuildPath,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventModuleLoad_V2(ModuleID,AssemblyID,ModuleFlags,Reserved1,ModuleILPath,ModuleNativePath,ClrInstanceID,ManagedPdbSignature,ManagedPdbAge,ManagedPdbBuildPath,NativePdbSignature,NativePdbAge,NativePdbBuildPath,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatModuleLoad_V2(ModuleID,AssemblyID,ModuleFlags,Reserved1,ModuleILPath,ModuleNativePath,ClrInstanceID,ManagedPdbSignature,ManagedPdbAge,ManagedPdbBuildPath,NativePdbSignature,NativePdbAge,NativePdbBuildPath);
+#endif
+ return status;
+}
+
+BOOL EventEnabledSetGCHandle(void) {return EventPipeEventEnabledSetGCHandle();}
+
+ULONG FireEtwSetGCHandle(
+ void* HandleID,
+ void* ObjectID,
+ const unsigned int Kind,
+ const unsigned int Generation,
+ const unsigned __int64 AppDomainID,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventSetGCHandle(HandleID,ObjectID,Kind,Generation,AppDomainID,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatSetGCHandle(HandleID,ObjectID,Kind,Generation,AppDomainID,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCStart_V2(void) {return EventPipeEventEnabledGCStart_V2();}
+
+ULONG FireEtwGCStart_V2(
+ const unsigned int Count,
+ const unsigned int Depth,
+ const unsigned int Reason,
+ const unsigned int Type,
+ const unsigned short ClrInstanceID,
+ const unsigned __int64 ClientSequenceNumber,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCStart_V2(Count,Depth,Reason,Type,ClrInstanceID,ClientSequenceNumber,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCStart_V2(Count,Depth,Reason,Type,ClrInstanceID,ClientSequenceNumber);
+#endif
+ return status;
+}
+
+
+BOOL EventEnabledGCRestartEEEnd_V1(void) {return EventPipeEventEnabledGCRestartEEEnd_V1();}
+
+ULONG FireEtwGCRestartEEEnd_V1(
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCRestartEEEnd_V1(ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCRestartEEEnd_V1(ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCRestartEEBegin_V1(void) {return EventPipeEventEnabledGCRestartEEBegin_V1();}
+
+ULONG FireEtwGCRestartEEBegin_V1(
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCRestartEEBegin_V1(ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCRestartEEBegin_V1(ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCSuspendEEEnd_V1(void) {return EventPipeEventEnabledGCSuspendEEEnd_V1();}
+
+ULONG FireEtwGCSuspendEEEnd_V1(
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCSuspendEEEnd_V1(ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXPlatGCSuspendEEEnd_V1(ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledGCSuspendEEBegin_V1(void) {return EventPipeEventEnabledGCSuspendEEBegin_V1();}
+
+ULONG FireEtwGCSuspendEEBegin_V1(
+ const unsigned int Reason,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCSuspendEEBegin_V1(Reason,Count,ClrInstanceID,ActivityId,RelatedActivityId);
+#ifndef TARGET_UNIX
+ status &= FireEtXplatGCSuspendEEBegin_V1(Reason,Count,ClrInstanceID);
+#endif
+ return status;
+}
+
+BOOL EventEnabledDecreaseMemoryPressure(void) {return EventPipeEventEnabledDecreaseMemoryPressure();}
+
+ULONG FireEtwDecreaseMemoryPressure(
+ const unsigned __int64 BytesFreed,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventDecreaseMemoryPressure(BytesFreed,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledFinalizeObject(void) {return EventPipeEventEnabledFinalizeObject();}
+
+ULONG FireEtwFinalizeObject(
+ const void* TypeID,
+ const void* ObjectID,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventFinalizeObject(TypeID,ObjectID,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledGCFinalizersBegin_V1(void) {return EventPipeEventEnabledGCFinalizersBegin_V1();}
+
+ULONG FireEtwGCFinalizersBegin_V1(
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCFinalizersBegin_V1(ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledGCFinalizersEnd_V1(void) {return EventPipeEventEnabledGCFinalizersEnd_V1();}
+
+ULONG FireEtwGCFinalizersEnd_V1(
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCFinalizersEnd_V1(Count,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledContentionStart_V2(void) {return EventPipeEventEnabledContentionStart_V2();}
+
+ULONG FireEtwContentionStart_V2(
+ const unsigned char ContentionFlags,
+ const unsigned short ClrInstanceID,
+ const void* LockID,
+ const void* AssociatedObjectID,
+ const unsigned __int64 LockOwnerThreadID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventContentionStart_V2(ContentionFlags,ClrInstanceID,LockID,AssociatedObjectID,LockOwnerThreadID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledContentionStop_V1(void) {return EventPipeEventEnabledContentionStop_V1();}
+
+ULONG FireEtwContentionStop_V1(
+ const unsigned char ContentionFlags,
+ const unsigned short ClrInstanceID,
+ const double DurationNs,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventContentionStop_V1(ContentionFlags,ClrInstanceID,DurationNs,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledContentionLockCreated(void) {return EventPipeEventEnabledContentionLockCreated();}
+
+ULONG FireEtwContentionLockCreated(
+ const void* LockID,
+ const void* AssociatedObjectID,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventContentionLockCreated(LockID,AssociatedObjectID,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledThreadPoolWorkerThreadStart(void) {return EventPipeEventEnabledThreadPoolWorkerThreadStart();}
+
+uint32_t FireEtwThreadPoolWorkerThreadStart(
+ const unsigned int ActiveWorkerThreadCount,
+ const unsigned int RetiredWorkerThreadCount,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ uint32_t status = EventPipeWriteEventThreadPoolWorkerThreadStart(ActiveWorkerThreadCount,RetiredWorkerThreadCount,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+uint32_t FireEtwThreadPoolWorkerThreadStop(
+ const unsigned int ActiveWorkerThreadCount,
+ const unsigned int RetiredWorkerThreadCount,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ uint32_t status = EventPipeWriteEventThreadPoolWorkerThreadStop(ActiveWorkerThreadCount,RetiredWorkerThreadCount,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+uint32_t FireEtwThreadPoolWorkerThreadWait(
+ const unsigned int ActiveWorkerThreadCount,
+ const unsigned int RetiredWorkerThreadCount,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ uint32_t status = EventPipeWriteEventThreadPoolWorkerThreadWait(ActiveWorkerThreadCount,RetiredWorkerThreadCount,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledThreadPoolMinMaxThreads(void) {return EventPipeEventEnabledThreadPoolMinMaxThreads();}
+
+uint32_t FireEtwThreadPoolMinMaxThreads(
+ const unsigned short MinWorkerThreads,
+ const unsigned short MaxWorkerThreads,
+ const unsigned short MinIOCompletionThreads,
+ const unsigned short MaxIOCompletionThreads,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ uint32_t status = EventPipeWriteEventThreadPoolMinMaxThreads(MinWorkerThreads,MaxWorkerThreads,MinIOCompletionThreads,MaxIOCompletionThreads,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledThreadPoolWorkerThreadAdjustmentSample(void) {return EventPipeEventEnabledThreadPoolWorkerThreadAdjustmentSample();}
+
+uint32_t FireEtwThreadPoolWorkerThreadAdjustmentSample(
+ const double Throughput,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ uint32_t status = EventPipeWriteEventThreadPoolWorkerThreadAdjustmentSample(Throughput,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledThreadPoolWorkerThreadAdjustmentAdjustment(void) {return EventPipeEventEnabledThreadPoolWorkerThreadAdjustmentAdjustment();}
+
+uint32_t FireEtwThreadPoolWorkerThreadAdjustmentAdjustment(
+ const double AverageThroughput,
+ const unsigned int NewWorkerThreadCount,
+ const unsigned int Reason,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ uint32_t status = EventPipeWriteEventThreadPoolWorkerThreadAdjustmentAdjustment(AverageThroughput,NewWorkerThreadCount,Reason,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledThreadPoolWorkerThreadAdjustmentStats(void) {return EventPipeEventEnabledThreadPoolWorkerThreadAdjustmentStats();}
+
+uint32_t FireEtwThreadPoolWorkerThreadAdjustmentStats(
+ const double Duration,
+ const double Throughput,
+ const double ThreadWave,
+ const double ThroughputWave,
+ const double ThroughputErrorEstimate,
+ const double AverageThroughputErrorEstimate,
+ const double ThroughputRatio,
+ const double Confidence,
+ const double NewControlSetting,
+ const unsigned short NewThreadWaveMagnitude,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ uint32_t status = EventPipeWriteEventThreadPoolWorkerThreadAdjustmentStats(Duration,Throughput,ThreadWave,ThroughputWave,ThroughputErrorEstimate,AverageThroughputErrorEstimate,ThroughputRatio,Confidence,NewControlSetting,NewThreadWaveMagnitude,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledThreadPoolIOEnqueue(void) {return EventPipeEventEnabledThreadPoolIOEnqueue();}
+
+uint32_t FireEtwThreadPoolIOEnqueue(
+ const void* NativeOverlapped,
+ const void* Overlapped,
+ const BOOL MultiDequeues,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ uint32_t status = EventPipeWriteEventThreadPoolIOEnqueue(NativeOverlapped,Overlapped,MultiDequeues,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledThreadPoolIODequeue(void) {return EventPipeEventEnabledThreadPoolIODequeue();}
+
+uint32_t FireEtwThreadPoolIODequeue(
+ const void* NativeOverlapped,
+ const void* Overlapped,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ uint32_t status = EventPipeWriteEventThreadPoolIODequeue(NativeOverlapped,Overlapped,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledThreadPoolWorkingThreadCount(void) {return EventPipeEventEnabledThreadPoolWorkingThreadCount();}
+
+uint32_t FireEtwThreadPoolWorkingThreadCount(
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ uint32_t status = EventPipeWriteEventThreadPoolWorkingThreadCount(Count,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledThreadPoolIOPack(void) {return EventPipeEventEnabledThreadPoolIOPack();}
+
+uint32_t FireEtwThreadPoolIOPack(
+ const void* NativeOverlapped,
+ const void* Overlapped,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ uint32_t status = EventPipeWriteEventThreadPoolIOPack(NativeOverlapped,Overlapped,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledGCAllocationTick_V4(void) {return EventPipeEventEnabledGCAllocationTick_V4();}
+
+ULONG FireEtwGCAllocationTick_V4(
+ const unsigned int AllocationAmount,
+ const unsigned int AllocationKind,
+ const unsigned short ClrInstanceID,
+ const unsigned __int64 AllocationAmount64,
+ const void* TypeID,
+ const WCHAR* TypeName,
+ const unsigned int HeapIndex,
+ const void* Address,
+ const unsigned __int64 ObjectSize,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCAllocationTick_V4(AllocationAmount,AllocationKind,ClrInstanceID,AllocationAmount64,TypeID,TypeName,HeapIndex,Address,ObjectSize,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledGCHeapStats_V2(void) {return EventPipeEventEnabledGCHeapStats_V2();}
+
+ULONG FireEtwGCHeapStats_V2(
+ const unsigned __int64 GenerationSize0,
+ const unsigned __int64 TotalPromotedSize0,
+ const unsigned __int64 GenerationSize1,
+ const unsigned __int64 TotalPromotedSize1,
+ const unsigned __int64 GenerationSize2,
+ const unsigned __int64 TotalPromotedSize2,
+ const unsigned __int64 GenerationSize3,
+ const unsigned __int64 TotalPromotedSize3,
+ const unsigned __int64 FinalizationPromotedSize,
+ const unsigned __int64 FinalizationPromotedCount,
+ const unsigned int PinnedObjectCount,
+ const unsigned int SinkBlockCount,
+ const unsigned int GCHandleCount,
+ const unsigned short ClrInstanceID,
+ const unsigned __int64 GenerationSize4,
+ const unsigned __int64 TotalPromotedSize4,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCHeapStats_V2(GenerationSize0,TotalPromotedSize0,GenerationSize1,TotalPromotedSize1,GenerationSize2,TotalPromotedSize2,GenerationSize3,TotalPromotedSize3,FinalizationPromotedSize,FinalizationPromotedCount,PinnedObjectCount,SinkBlockCount,GCHandleCount,ClrInstanceID,GenerationSize4,TotalPromotedSize4,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledGCSampledObjectAllocationHigh(void) {return EventPipeEventEnabledGCSampledObjectAllocationHigh();}
+
+ULONG FireEtwGCSampledObjectAllocationHigh(
+ const void* Address,
+ const void* TypeID,
+ const unsigned int ObjectCountForTypeSample,
+ const unsigned __int64 TotalSizeForTypeSample,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCSampledObjectAllocationHigh(Address,TypeID,ObjectCountForTypeSample,TotalSizeForTypeSample,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledGCSampledObjectAllocationLow(void) {return EventPipeEventEnabledGCSampledObjectAllocationLow();}
+
+ULONG FireEtwGCSampledObjectAllocationLow(
+ const void* Address,
+ const void* TypeID,
+ const unsigned int ObjectCountForTypeSample,
+ const unsigned __int64 TotalSizeForTypeSample,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCSampledObjectAllocationLow(Address,TypeID,ObjectCountForTypeSample,TotalSizeForTypeSample,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledPinObjectAtGCTime(void) {return EventPipeEventEnabledPinObjectAtGCTime();}
+
+ULONG FireEtwPinObjectAtGCTime(
+ const void* HandleID,
+ const void* ObjectID,
+ const unsigned __int64 ObjectSize,
+ const WCHAR* TypeName,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventPinObjectAtGCTime(HandleID,ObjectID,ObjectSize,TypeName,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledGCBulkRootStaticVar(void) {return EventPipeEventEnabledGCBulkRootStaticVar();}
+
+ULONG FireEtwGCBulkRootStaticVar(
+ const unsigned int Count,
+ const unsigned __int64 AppDomainID,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ const void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCBulkRootStaticVar(Count,AppDomainID,ClrInstanceID,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledIncreaseMemoryPressure(void) {return EventPipeEventEnabledIncreaseMemoryPressure();}
+
+ULONG FireEtwIncreaseMemoryPressure(
+ const unsigned __int64 BytesAllocated,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventIncreaseMemoryPressure(BytesAllocated,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledGCGlobalHeapHistory_V4(void) {return EventPipeEventEnabledGCGlobalHeapHistory_V4();}
+
+ULONG FireEtwGCGlobalHeapHistory_V4(
+ const unsigned __int64 FinalYoungestDesired,
+ const signed int NumHeaps,
+ const unsigned int CondemnedGeneration,
+ const unsigned int Gen0ReductionCount,
+ const unsigned int Reason,
+ const unsigned int GlobalMechanisms,
+ const unsigned short ClrInstanceID,
+ const unsigned int PauseMode,
+ const unsigned int MemoryPressure,
+ const unsigned int CondemnReasons0,
+ const unsigned int CondemnReasons1,
+ const unsigned int Count,
+ int Values_ElementSize,
+ const void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCGlobalHeapHistory_V4(FinalYoungestDesired,NumHeaps,CondemnedGeneration,Gen0ReductionCount,Reason,GlobalMechanisms,ClrInstanceID,PauseMode,MemoryPressure,CondemnReasons0,CondemnReasons1,Count,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledGenAwareBegin(void) {return EventPipeEventEnabledGenAwareBegin();}
+
+ULONG FireEtwGenAwareBegin(
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGenAwareBegin(Count,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledGenAwareEnd(void) {return EventPipeEventEnabledGenAwareEnd();}
+
+ULONG FireEtwGenAwareEnd(
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGenAwareEnd(Count,ClrInstanceID,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledGCLOHCompact(void) {return EventPipeEventEnabledGCLOHCompact();}
+
+ULONG FireEtwGCLOHCompact(
+ const unsigned short ClrInstanceID,
+ const unsigned short Count,
+ int Values_ElementSize,
+ const void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCLOHCompact(ClrInstanceID,Count,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+ return status;
+}
+
+BOOL EventEnabledGCFitBucketInfo(void) {return EventPipeEventEnabledGCFitBucketInfo();}
+
+ULONG FireEtwGCFitBucketInfo(
+ const unsigned short ClrInstanceID,
+ const unsigned short BucketKind,
+ const unsigned __int64 TotalSize,
+ const unsigned short Count,
+ int Values_ElementSize,
+ const void* Values,
+ const GUID * ActivityId,
+ const GUID * RelatedActivityId
+)
+{
+ ULONG status = EventPipeWriteEventGCFitBucketInfo(ClrInstanceID,BucketKind,TotalSize,Count,Values_ElementSize, Values,ActivityId,RelatedActivityId);
+ return status;
+}
+
+#ifdef FEATURE_ETW
+
+// ==================================================================
+// Events currently only fired via ETW (private runtime provider)
+// ==================================================================
+
+ULONG FireEtwGCSettings(
+ const unsigned __int64 SegmentSize,
+ const unsigned __int64 LargeObjectSegmentSize,
+ const BOOL ServerGC,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatGCSettings(SegmentSize,LargeObjectSegmentSize,ServerGC);
+}
+
+ULONG FireEtwPinPlugAtGCTime(
+ const void* PlugStart,
+ const void* PlugEnd,
+ const void* GapBeforeSize,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatPinPlugAtGCTime(PlugStart,PlugEnd,GapBeforeSize,ClrInstanceID);
+}
+
+ULONG FireEtwBGCBegin(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatBGCBegin(ClrInstanceID);
+}
+
+ULONG FireEtwBGC1stNonConEnd(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatBGC1stNonConEnd(ClrInstanceID);
+}
+
+ULONG FireEtwBGC1stConEnd(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatBGC1stConEnd(ClrInstanceID);
+}
+
+ULONG FireEtwBGC2ndNonConBegin(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatBGC2ndNonConBegin(ClrInstanceID);
+}
+
+ULONG FireEtwBGC2ndNonConEnd(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatBGC2ndNonConEnd(ClrInstanceID);
+}
+
+ULONG FireEtwBGC2ndConBegin(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatBGC2ndConBegin(ClrInstanceID);
+}
+
+ULONG FireEtwBGC2ndConEnd(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatBGC2ndConEnd(ClrInstanceID);
+}
+
+ULONG FireEtwBGCDrainMark(
+ const unsigned __int64 Objects,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatBGCDrainMark(Objects,ClrInstanceID);
+}
+
+ULONG FireEtwBGCRevisit(
+ const unsigned __int64 Pages,
+ const unsigned __int64 Objects,
+ const unsigned int IsLarge,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatBGCRevisit(Pages,Objects,IsLarge,ClrInstanceID);
+}
+
+ULONG FireEtwBGCOverflow(
+ const unsigned __int64 Min,
+ const unsigned __int64 Max,
+ const unsigned __int64 Objects,
+ const unsigned int IsLarge,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatBGCOverflow(Min,Max,Objects,IsLarge,ClrInstanceID);
+}
+
+ULONG FireEtwBGCAllocWaitBegin(
+ const unsigned int Reason,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatBGCAllocWaitBegin(Reason,ClrInstanceID);
+}
+
+ULONG FireEtwBGCAllocWaitEnd(
+ const unsigned int Reason,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatBGCAllocWaitEnd(Reason,ClrInstanceID);
+}
+
+ULONG FireEtwGCFullNotify_V1(
+ const unsigned int GenNumber,
+ const unsigned int IsAlloc,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatGCFullNotify_V1(GenNumber,IsAlloc,ClrInstanceID);
+}
+
+ULONG FireEtwPrvSetGCHandle(
+ const void* HandleID,
+ const void* ObjectID,
+ const unsigned int Kind,
+ const unsigned int Generation,
+ const unsigned __int64 AppDomainID,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatPrvSetGCHandle(HandleID,ObjectID,Kind,Generation,AppDomainID,ClrInstanceID);
+}
+
+ULONG FireEtwPrvDestroyGCHandle(
+ const void* HandleID,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId,
+ const GUID* RelatedActivityId
+)
+{
+ return FireEtXplatPrvDestroyGCHandle(HandleID,ClrInstanceID);
+}
+
+#endif // FEATURE_ETW
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+// shipping criteria: no EVENTPIPE-NATIVEAOT-TODO left in the codebase
+// @TODO: Use genEventing.py to generate this file. Update script to handle
+// nativeaot runtime and allow generating separate declaration and
+// implementation files
+
+#include <CommonTypes.h>
+#include <CommonMacros.h>
+
+#ifndef ERROR_SUCCESS
+#define ERROR_SUCCESS 0L
+#endif
+
+BOOL EventEnabledDestroyGCHandle(void) { return 0; }
+ULONG FireEtwDestroyGCHandle(
+ void* HandleID,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledExceptionThrown_V1(void) { return 0; }
+ULONG FireEtwExceptionThrown_V1(
+ const WCHAR* ExceptionType,
+ const WCHAR* ExceptionMessage,
+ void* ExceptionEIP,
+ const unsigned int ExceptionHRESULT,
+ const unsigned short ExceptionFlags,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCBulkEdge(void) { return 0; }
+ULONG FireEtwGCBulkEdge(
+ const unsigned int Index,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCBulkMovedObjectRanges(void) { return 0; }
+ULONG FireEtwGCBulkMovedObjectRanges(
+ const unsigned int Index,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCBulkNode(void) { return 0; }
+ULONG FireEtwGCBulkNode(
+ const unsigned int Index,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCBulkRCW(void) { return 0; }
+ULONG FireEtwGCBulkRCW(
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCBulkRootCCW(void) { return 0; }
+ULONG FireEtwGCBulkRootCCW(
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCBulkRootConditionalWeakTableElementEdge(void) { return 0; }
+ULONG FireEtwGCBulkRootConditionalWeakTableElementEdge(
+ const unsigned int Index,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCBulkRootEdge(void) { return 0; }
+ULONG FireEtwGCBulkRootEdge(
+ const unsigned int Index,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCBulkSurvivingObjectRanges(void) { return 0; }
+ULONG FireEtwGCBulkSurvivingObjectRanges(
+ const unsigned int Index,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCCreateConcurrentThread_V1(void) { return 0; }
+ULONG FireEtwGCCreateConcurrentThread_V1(
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCCreateSegment_V1(void) { return 0; }
+ULONG FireEtwGCCreateSegment_V1(
+ const unsigned __int64 Address,
+ const unsigned __int64 Size,
+ const unsigned int Type,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCEnd_V1(void) { return 0; }
+ULONG FireEtwGCEnd_V1(
+ const unsigned int Count,
+ const unsigned int Depth,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCFreeSegment_V1(void) { return 0; }
+ULONG FireEtwGCFreeSegment_V1(
+ const unsigned __int64 Address,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCGenerationRange(void) { return 0; }
+ULONG FireEtwGCGenerationRange(
+ const unsigned char Generation,
+ void* RangeStart,
+ const unsigned __int64 RangeUsedLength,
+ const unsigned __int64 RangeReservedLength,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCHeapStats_V1(void) { return 0; }
+ULONG FireEtwGCHeapStats_V1(
+ const unsigned __int64 GenerationSize0,
+ const unsigned __int64 TotalPromotedSize0,
+ const unsigned __int64 GenerationSize1,
+ const unsigned __int64 TotalPromotedSize1,
+ const unsigned __int64 GenerationSize2,
+ const unsigned __int64 TotalPromotedSize2,
+ const unsigned __int64 GenerationSize3,
+ const unsigned __int64 TotalPromotedSize3,
+ const unsigned __int64 FinalizationPromotedSize,
+ const unsigned __int64 FinalizationPromotedCount,
+ const unsigned int PinnedObjectCount,
+ const unsigned int SinkBlockCount,
+ const unsigned int GCHandleCount,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCJoin_V2(void) { return 0; }
+ULONG FireEtwGCJoin_V2(
+ const unsigned int Heap,
+ const unsigned int JoinTime,
+ const unsigned int JoinType,
+ const unsigned short ClrInstanceID,
+ const unsigned int JoinID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCMarkFinalizeQueueRoots(void) { return 0; }
+ULONG FireEtwGCMarkFinalizeQueueRoots(
+ const unsigned int HeapNum,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCMarkHandles(void) { return 0; }
+ULONG FireEtwGCMarkHandles(
+ const unsigned int HeapNum,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCMarkOlderGenerationRoots(void) { return 0; }
+ULONG FireEtwGCMarkOlderGenerationRoots(
+ const unsigned int HeapNum,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCMarkStackRoots(void) { return 0; }
+ULONG FireEtwGCMarkStackRoots(
+ const unsigned int HeapNum,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCMarkWithType(void) { return 0; }
+ULONG FireEtwGCMarkWithType(
+ const unsigned int HeapNum,
+ const unsigned short ClrInstanceID,
+ const unsigned int Type,
+ const unsigned __int64 Bytes,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCPerHeapHistory_V3(void) { return 0; }
+ULONG FireEtwGCPerHeapHistory_V3(
+ const unsigned short ClrInstanceID,
+ void* FreeListAllocated,
+ void* FreeListRejected,
+ void* EndOfSegAllocated,
+ void* CondemnedAllocated,
+ void* PinnedAllocated,
+ void* PinnedAllocatedAdvance,
+ const unsigned int RunningFreeListEfficiency,
+ const unsigned int CondemnReasons0,
+ const unsigned int CondemnReasons1,
+ const unsigned int CompactMechanisms,
+ const unsigned int ExpandMechanisms,
+ const unsigned int HeapIndex,
+ void* ExtraGen0Commit,
+ const unsigned int Count,
+ int Values_ElementSize,
+ void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCTerminateConcurrentThread_V1(void) { return 0; }
+ULONG FireEtwGCTerminateConcurrentThread_V1(
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCTriggered(void) { return 0; }
+ULONG FireEtwGCTriggered(
+ const unsigned int Reason,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledModuleLoad_V2(void) { return 0; }
+ULONG FireEtwModuleLoad_V2(
+ const unsigned __int64 ModuleID,
+ const unsigned __int64 AssemblyID,
+ const unsigned int ModuleFlags,
+ const unsigned int Reserved1,
+ const WCHAR* ModuleILPath,
+ const WCHAR* ModuleNativePath,
+ const unsigned short ClrInstanceID,
+ const GUID* ManagedPdbSignature,
+ const unsigned int ManagedPdbAge,
+ const WCHAR* ManagedPdbBuildPath,
+ const GUID* NativePdbSignature,
+ const unsigned int NativePdbAge,
+ const WCHAR* NativePdbBuildPath,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledSetGCHandle(void) { return 0; }
+ULONG FireEtwSetGCHandle(
+ void* HandleID,
+ void* ObjectID,
+ const unsigned int Kind,
+ const unsigned int Generation,
+ const unsigned __int64 AppDomainID,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCStart_V2(void) { return 0; }
+ULONG FireEtwGCStart_V2(
+ const unsigned int Count,
+ const unsigned int Depth,
+ const unsigned int Reason,
+ const unsigned int Type,
+ const unsigned short ClrInstanceID,
+ const unsigned __int64 ClientSequenceNumber,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+
+BOOL EventEnabledGCRestartEEEnd_V1(void) { return 0; }
+ULONG FireEtwGCRestartEEEnd_V1(
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCRestartEEBegin_V1(void) { return 0; }
+ULONG FireEtwGCRestartEEBegin_V1(
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCSuspendEEEnd_V1(void) { return 0; }
+ULONG FireEtwGCSuspendEEEnd_V1(
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCSuspendEEBegin_V1(void) { return 0; }
+ULONG FireEtwGCSuspendEEBegin_V1(
+ const unsigned int Reason,
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledDecreaseMemoryPressure(void) { return 0; }
+ULONG FireEtwDecreaseMemoryPressure(
+ const unsigned __int64 BytesFreed,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledFinalizeObject(void) { return 0; }
+ULONG FireEtwFinalizeObject(
+ const void* TypeID,
+ const void* ObjectID,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCFinalizersBegin_V1(void) { return 0; }
+ULONG FireEtwGCFinalizersBegin_V1(
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCFinalizersEnd_V1(void) { return 0; }
+ULONG FireEtwGCFinalizersEnd_V1(
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledContentionStart_V2(void) { return 0; }
+ULONG FireEtwContentionStart_V2(
+ const unsigned char ContentionFlags,
+ const unsigned short ClrInstanceID,
+ const void* LockID,
+ const void* AssociatedObjectID,
+ const unsigned __int64 LockOwnerThreadID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledContentionStop_V1(void) { return 0; }
+ULONG FireEtwContentionStop_V1(
+ const unsigned char ContentionFlags,
+ const unsigned short ClrInstanceID,
+ const double DurationNs,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledContentionLockCreated(void) { return 0; }
+ULONG FireEtwContentionLockCreated(
+ const void* LockID,
+ const void* AssociatedObjectID,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledThreadPoolWorkerThreadStart(void) { return 0; }
+uint32_t FireEtwThreadPoolWorkerThreadStart(
+ const unsigned int ActiveWorkerThreadCount,
+ const unsigned int RetiredWorkerThreadCount,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+uint32_t FireEtwThreadPoolWorkerThreadStop(
+ const unsigned int ActiveWorkerThreadCount,
+ const unsigned int RetiredWorkerThreadCount,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+uint32_t FireEtwThreadPoolWorkerThreadWait(
+ const unsigned int ActiveWorkerThreadCount,
+ const unsigned int RetiredWorkerThreadCount,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledThreadPoolMinMaxThreads(void) { return 0; }
+uint32_t FireEtwThreadPoolMinMaxThreads(
+ const unsigned short MinWorkerThreads,
+ const unsigned short MaxWorkerThreads,
+ const unsigned short MinIOCompletionThreads,
+ const unsigned short MaxIOCompletionThreads,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledThreadPoolWorkerThreadAdjustmentSample(void) { return 0; }
+uint32_t FireEtwThreadPoolWorkerThreadAdjustmentSample(
+ const double Throughput,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledThreadPoolWorkerThreadAdjustmentAdjustment(void) { return 0; }
+uint32_t FireEtwThreadPoolWorkerThreadAdjustmentAdjustment(
+ const double AverageThroughput,
+ const unsigned int NewWorkerThreadCount,
+ const unsigned int Reason,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledThreadPoolWorkerThreadAdjustmentStats(void) { return 0; }
+uint32_t FireEtwThreadPoolWorkerThreadAdjustmentStats(
+ const double Duration,
+ const double Throughput,
+ const double ThreadWave,
+ const double ThroughputWave,
+ const double ThroughputErrorEstimate,
+ const double AverageThroughputErrorEstimate,
+ const double ThroughputRatio,
+ const double Confidence,
+ const double NewControlSetting,
+ const unsigned short NewThreadWaveMagnitude,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledThreadPoolIOEnqueue(void) { return 0; }
+uint32_t FireEtwThreadPoolIOEnqueue(
+ const void* NativeOverlapped,
+ const void* Overlapped,
+ const BOOL MultiDequeues,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledThreadPoolIODequeue(void) { return 0; }
+uint32_t FireEtwThreadPoolIODequeue(
+ const void* NativeOverlapped,
+ const void* Overlapped,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledThreadPoolWorkingThreadCount(void) { return 0; }
+uint32_t FireEtwThreadPoolWorkingThreadCount(
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledThreadPoolIOPack(void) { return 0; }
+uint32_t FireEtwThreadPoolIOPack(
+ const void* NativeOverlapped,
+ const void* Overlapped,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCAllocationTick_V4(void) { return 0; }
+ULONG FireEtwGCAllocationTick_V4(
+ const unsigned int AllocationAmount,
+ const unsigned int AllocationKind,
+ const unsigned short ClrInstanceID,
+ const unsigned __int64 AllocationAmount64,
+ const void* TypeID,
+ const WCHAR* TypeName,
+ const unsigned int HeapIndex,
+ const void* Address,
+ const unsigned __int64 ObjectSize,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCHeapStats_V2(void) { return 0; }
+ULONG FireEtwGCHeapStats_V2(
+ const unsigned __int64 GenerationSize0,
+ const unsigned __int64 TotalPromotedSize0,
+ const unsigned __int64 GenerationSize1,
+ const unsigned __int64 TotalPromotedSize1,
+ const unsigned __int64 GenerationSize2,
+ const unsigned __int64 TotalPromotedSize2,
+ const unsigned __int64 GenerationSize3,
+ const unsigned __int64 TotalPromotedSize3,
+ const unsigned __int64 FinalizationPromotedSize,
+ const unsigned __int64 FinalizationPromotedCount,
+ const unsigned int PinnedObjectCount,
+ const unsigned int SinkBlockCount,
+ const unsigned int GCHandleCount,
+ const unsigned short ClrInstanceID,
+ const unsigned __int64 GenerationSize4,
+ const unsigned __int64 TotalPromotedSize4,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCSampledObjectAllocationHigh(void) { return 0; }
+ULONG FireEtwGCSampledObjectAllocationHigh(
+ const void* Address,
+ const void* TypeID,
+ const unsigned int ObjectCountForTypeSample,
+ const unsigned __int64 TotalSizeForTypeSample,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCSampledObjectAllocationLow(void) { return 0; }
+ULONG FireEtwGCSampledObjectAllocationLow(
+ const void* Address,
+ const void* TypeID,
+ const unsigned int ObjectCountForTypeSample,
+ const unsigned __int64 TotalSizeForTypeSample,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledPinObjectAtGCTime(void) { return 0; }
+ULONG FireEtwPinObjectAtGCTime(
+ const void* HandleID,
+ const void* ObjectID,
+ const unsigned __int64 ObjectSize,
+ const WCHAR* TypeName,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCBulkRootStaticVar(void) { return 0; }
+ULONG FireEtwGCBulkRootStaticVar(
+ const unsigned int Count,
+ const unsigned __int64 AppDomainID,
+ const unsigned short ClrInstanceID,
+ int Values_ElementSize,
+ const void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledIncreaseMemoryPressure(void) { return 0; }
+ULONG FireEtwIncreaseMemoryPressure(
+ const unsigned __int64 BytesAllocated,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCGlobalHeapHistory_V4(void) { return 0; }
+ULONG FireEtwGCGlobalHeapHistory_V4(
+ const unsigned __int64 FinalYoungestDesired,
+ const signed int NumHeaps,
+ const unsigned int CondemnedGeneration,
+ const unsigned int Gen0ReductionCount,
+ const unsigned int Reason,
+ const unsigned int GlobalMechanisms,
+ const unsigned short ClrInstanceID,
+ const unsigned int PauseMode,
+ const unsigned int MemoryPressure,
+ const unsigned int CondemnReasons0,
+ const unsigned int CondemnReasons1,
+ const unsigned int Count,
+ int Values_ElementSize,
+ const void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGenAwareBegin(void) { return 0; }
+ULONG FireEtwGenAwareBegin(
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGenAwareEnd(void) { return 0; }
+ULONG FireEtwGenAwareEnd(
+ const unsigned int Count,
+ const unsigned short ClrInstanceID,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCLOHCompact(void) { return 0; }
+ULONG FireEtwGCLOHCompact(
+ const unsigned short ClrInstanceID,
+ const unsigned short Count,
+ int Values_ElementSize,
+ const void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+BOOL EventEnabledGCFitBucketInfo(void) { return 0; }
+ULONG FireEtwGCFitBucketInfo(
+ const unsigned short ClrInstanceID,
+ const unsigned short BucketKind,
+ const unsigned __int64 TotalSize,
+ const unsigned short Count,
+ int Values_ElementSize,
+ const void* Values,
+ const GUID * ActivityId = nullptr,
+ const GUID * RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+#ifdef FEATURE_ETW
+
+// ==================================================================
+// Events currently only fired via ETW (private runtime provider)
+// ==================================================================
+
+ULONG FireEtwGCSettings(
+ const unsigned __int64 SegmentSize,
+ const unsigned __int64 LargeObjectSegmentSize,
+ const BOOL ServerGC,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwPinPlugAtGCTime(
+ const void* PlugStart,
+ const void* PlugEnd,
+ const void* GapBeforeSize,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwBGCBegin(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwBGC1stNonConEnd(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwBGC1stConEnd(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwBGC2ndNonConBegin(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwBGC2ndNonConEnd(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwBGC2ndConBegin(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwBGC2ndConEnd(
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwBGCDrainMark(
+ const unsigned __int64 Objects,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwBGCRevisit(
+ const unsigned __int64 Pages,
+ const unsigned __int64 Objects,
+ const unsigned int IsLarge,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwBGCOverflow(
+ const unsigned __int64 Min,
+ const unsigned __int64 Max,
+ const unsigned __int64 Objects,
+ const unsigned int IsLarge,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwBGCAllocWaitBegin(
+ const unsigned int Reason,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwBGCAllocWaitEnd(
+ const unsigned int Reason,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwGCFullNotify_V1(
+ const unsigned int GenNumber,
+ const unsigned int IsAlloc,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwPrvSetGCHandle(
+ const void* HandleID,
+ const void* ObjectID,
+ const unsigned int Kind,
+ const unsigned int Generation,
+ const unsigned __int64 AppDomainID,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+ULONG FireEtwPrvDestroyGCHandle(
+ const void* HandleID,
+ const unsigned short ClrInstanceID,
+ const GUID* ActivityId = nullptr,
+ const GUID* RelatedActivityId = nullptr
+)
+{ return ERROR_SUCCESS; }
+
+#endif // FEATURE_ETW
\ No newline at end of file
+++ /dev/null
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-/******************************************************************
-
-DO NOT MODIFY. AUTOGENERATED FILE.
-This file is generated using the logic from <root>/src/scripts/genEventPipe.py
-
-******************************************************************/
-
-#include <common.h>
-#include "eventpipeadapter.h"
-#include "gcheaputilities.h"
-
-#ifndef ERROR_WRITE_FAULT
-#define ERROR_WRITE_FAULT 29L
-#endif
-
-ULONG EventPipeWriteEventDestroyGCHandle(
- const void* HandleID,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventExceptionThrown_V1(
- const WCHAR* ExceptionType,
- const WCHAR* ExceptionMessage,
- const void* ExceptionEIP,
- const unsigned int ExceptionHRESULT,
- const unsigned short ExceptionFlags,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCBulkEdge(
- const unsigned int Index,
- const unsigned int Count,
- const unsigned short ClrInstanceID,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCBulkMovedObjectRanges(
- const unsigned int Index,
- const unsigned int Count,
- const unsigned short ClrInstanceID,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCBulkNode(
- const unsigned int Index,
- const unsigned int Count,
- const unsigned short ClrInstanceID,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCBulkRCW(
- const unsigned int Count,
- const unsigned short ClrInstanceID,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCBulkRootCCW(
- const unsigned int Count,
- const unsigned short ClrInstanceID,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCBulkRootConditionalWeakTableElementEdge(
- const unsigned int Index,
- const unsigned int Count,
- const unsigned short ClrInstanceID,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCBulkRootEdge(
- const unsigned int Index,
- const unsigned int Count,
- const unsigned short ClrInstanceID,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCBulkSurvivingObjectRanges(
- const unsigned int Index,
- const unsigned int Count,
- const unsigned short ClrInstanceID,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCCreateConcurrentThread_V1(
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCCreateSegment_V1(
- const unsigned __int64 Address,
- const unsigned __int64 Size,
- const unsigned int Type,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCEnd_V1(
- const unsigned int Count,
- const unsigned int Depth,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCFreeSegment_V1(
- const unsigned __int64 Address,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCGenerationRange(
- const unsigned char Generation,
- const void* RangeStart,
- const unsigned __int64 RangeUsedLength,
- const unsigned __int64 RangeReservedLength,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCHeapStats_V1(
- const unsigned __int64 GenerationSize0,
- const unsigned __int64 TotalPromotedSize0,
- const unsigned __int64 GenerationSize1,
- const unsigned __int64 TotalPromotedSize1,
- const unsigned __int64 GenerationSize2,
- const unsigned __int64 TotalPromotedSize2,
- const unsigned __int64 GenerationSize3,
- const unsigned __int64 TotalPromotedSize3,
- const unsigned __int64 FinalizationPromotedSize,
- const unsigned __int64 FinalizationPromotedCount,
- const unsigned int PinnedObjectCount,
- const unsigned int SinkBlockCount,
- const unsigned int GCHandleCount,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCJoin_V2(
- const unsigned int Heap,
- const unsigned int JoinTime,
- const unsigned int JoinType,
- const unsigned short ClrInstanceID,
- const unsigned int JoinID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCMarkFinalizeQueueRoots(
- const unsigned int HeapNum,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCMarkHandles(
- const unsigned int HeapNum,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCMarkOlderGenerationRoots(
- const unsigned int HeapNum,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCMarkStackRoots(
- const unsigned int HeapNum,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCMarkWithType(
- const unsigned int HeapNum,
- const unsigned short ClrInstanceID,
- const unsigned int Type,
- const unsigned __int64 Bytes,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCPerHeapHistory_V3(
- const unsigned short ClrInstanceID,
- const void* FreeListAllocated,
- const void* FreeListRejected,
- const void* EndOfSegAllocated,
- const void* CondemnedAllocated,
- const void* PinnedAllocated,
- const void* PinnedAllocatedAdvance,
- const unsigned int RunningFreeListEfficiency,
- const unsigned int CondemnReasons0,
- const unsigned int CondemnReasons1,
- const unsigned int CompactMechanisms,
- const unsigned int ExpandMechanisms,
- const unsigned int HeapIndex,
- const void* ExtraGen0Commit,
- const unsigned int Count,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCTerminateConcurrentThread_V1(
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCTriggered(
- const unsigned int Reason,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventModuleLoad_V2(
- const unsigned __int64 ModuleID,
- const unsigned __int64 AssemblyID,
- const unsigned int ModuleFlags,
- const unsigned int Reserved1,
- const WCHAR* ModuleILPath,
- const WCHAR* ModuleNativePath,
- const unsigned short ClrInstanceID,
- const GUID* ManagedPdbSignature,
- const unsigned int ManagedPdbAge,
- const WCHAR* ManagedPdbBuildPath,
- const GUID* NativePdbSignature,
- const unsigned int NativePdbAge,
- const WCHAR* NativePdbBuildPath,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventSetGCHandle(
- const void* HandleID,
- const void* ObjectID,
- const unsigned int Kind,
- const unsigned int Generation,
- const unsigned __int64 AppDomainID,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCStart_V2(
- const unsigned int Count,
- const unsigned int Depth,
- const unsigned int Reason,
- const unsigned int Type,
- const unsigned short ClrInstanceID,
- const unsigned __int64 ClientSequenceNumber,
- const GUID * ActivityId,
- const GUID * RelatedActivityId)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCSuspendEEBegin_V1(
- const unsigned int Reason,
- const unsigned int Count,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCSuspendEEEnd_V1(
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCRestartEEBegin_V1(
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCRestartEEEnd_V1(
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventDecreaseMemoryPressure(
- const unsigned __int64 BytesFreed,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventFinalizeObject(
- const void* TypeID,
- const void* ObjectID,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-ULONG EventPipeWriteEventGCFinalizersBegin_V1(
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventGCFinalizersEnd_V1(
- const unsigned int Count,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventGCAllocationTick_V4(
- const unsigned int AllocationAmount,
- const unsigned int AllocationKind,
- const unsigned short ClrInstanceID,
- const unsigned __int64 AllocationAmount64,
- const void* TypeID,
- const WCHAR* TypeName,
- const unsigned int HeapIndex,
- const void* Address,
- const unsigned __int64 ObjectSize,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventGCHeapStats_V2(
- const unsigned __int64 GenerationSize0,
- const unsigned __int64 TotalPromotedSize0,
- const unsigned __int64 GenerationSize1,
- const unsigned __int64 TotalPromotedSize1,
- const unsigned __int64 GenerationSize2,
- const unsigned __int64 TotalPromotedSize2,
- const unsigned __int64 GenerationSize3,
- const unsigned __int64 TotalPromotedSize3,
- const unsigned __int64 FinalizationPromotedSize,
- const unsigned __int64 FinalizationPromotedCount,
- const unsigned int PinnedObjectCount,
- const unsigned int SinkBlockCount,
- const unsigned int GCHandleCount,
- const unsigned short ClrInstanceID,
- const unsigned __int64 GenerationSize4,
- const unsigned __int64 TotalPromotedSize4,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventGCSampledObjectAllocationHigh(
- const void* Address,
- const void* TypeID,
- const unsigned int ObjectCountForTypeSample,
- const unsigned __int64 TotalSizeForTypeSample,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventGCSampledObjectAllocationLow(
- const void* Address,
- const void* TypeID,
- const unsigned int ObjectCountForTypeSample,
- const unsigned __int64 TotalSizeForTypeSample,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventPinObjectAtGCTime(
- const void* HandleID,
- const void* ObjectID,
- const unsigned __int64 ObjectSize,
- const WCHAR* TypeName,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventGCBulkRootStaticVar(
- const unsigned int Count,
- const unsigned __int64 AppDomainID,
- const unsigned short ClrInstanceID,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventIncreaseMemoryPressure(
- const unsigned __int64 BytesAllocated,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventGCGlobalHeapHistory_V4(
- const unsigned __int64 FinalYoungestDesired,
- const signed int NumHeaps,
- const unsigned int CondemnedGeneration,
- const unsigned int Gen0ReductionCount,
- const unsigned int Reason,
- const unsigned int GlobalMechanisms,
- const unsigned short ClrInstanceID,
- const unsigned int PauseMode,
- const unsigned int MemoryPressure,
- const unsigned int CondemnReasons0,
- const unsigned int CondemnReasons1,
- const unsigned int Count,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventGenAwareBegin(
- const unsigned int Count,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventGenAwareEnd(
- const unsigned int Count,
- const unsigned short ClrInstanceID,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventGCLOHCompact(
- const unsigned short ClrInstanceID,
- const unsigned short Count,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-
-ULONG EventPipeWriteEventGCFitBucketInfo(
- const unsigned short ClrInstanceID,
- const unsigned short BucketKind,
- const unsigned __int64 TotalSize,
- const unsigned short Count,
- int Values_ElementSize,
- const void* Values,
- const GUID * ActivityId,
- const GUID * RelatedActivityId
-)
-{
- return 0;
-}
-
-bool DotNETRuntimeProvider_IsEnabled(unsigned char level, unsigned long long keyword)
-{
- return false;
-}
#include "eventpipeadapter.h"
#include "gcheaputilities.h"
-#ifndef _INC_WINDOWS
- typedef void* LPVOID;
- typedef uint32_t UINT;
- typedef void* PVOID;
- typedef uint64_t ULONGLONG;
- typedef uint32_t ULONG;
- typedef int64_t LONGLONG;
- typedef uint8_t BYTE;
- typedef uint16_t UINT16;
-#endif // _INC_WINDOWS
-
#ifndef ERROR_WRITE_FAULT
#define ERROR_WRITE_FAULT 29L
#endif
#include "daccess.h"
+#include "eventtrace_etw.h"
+
#include "thread.h"
#include "threadstore.h"
#include "threadstore.inl"
FireEtwGCStart_V2(pGcInfo->GCStart.Count, pGcInfo->GCStart.Depth, pGcInfo->GCStart.Reason, pGcInfo->GCStart.Type, GetClrInstanceId(), l64ClientSequenceNumberToLog);
}
}
+
+void EventTracing_Initialize()
+{
+#ifdef FEATURE_ETW
+ MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled = FALSE;
+ MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER_Context.IsEnabled = FALSE;
+
+ // Register the Redhawk event provider with the system.
+ RH_ETW_REGISTER_Microsoft_Windows_Redhawk_GC_Private();
+ RH_ETW_REGISTER_Microsoft_Windows_Redhawk_GC_Public();
+
+ MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.RegistrationHandle = Microsoft_Windows_Redhawk_GC_PrivateHandle;
+ MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER_Context.RegistrationHandle = Microsoft_Windows_Redhawk_GC_PublicHandle;
+#endif // FEATURE_ETW
+}
+
+#ifdef FEATURE_ETW
+//
+// -----------------------------------------------------------------------------------------------------------
+//
+// The automatically generated part of the Redhawk ETW infrastructure (EtwEvents.h) calls the following
+// function whenever the system enables or disables tracing for this provider.
+//
+
+uint32_t EtwCallback(uint32_t IsEnabled, RH_ETW_CONTEXT * pContext)
+{
+ GCHeapUtilities::RecordEventStateChange(!!(pContext->RegistrationHandle == Microsoft_Windows_Redhawk_GC_PublicHandle),
+ static_cast<GCEventKeyword>(pContext->MatchAnyKeyword),
+ static_cast<GCEventLevel>(pContext->Level));
+
+ if (IsEnabled &&
+ (pContext->RegistrationHandle == Microsoft_Windows_Redhawk_GC_PrivateHandle) &&
+ GCHeapUtilities::IsGCHeapInitialized())
+ {
+ FireEtwGCSettings(GCHeapUtilities::GetGCHeap()->GetValidSegmentSize(FALSE),
+ GCHeapUtilities::GetGCHeap()->GetValidSegmentSize(TRUE),
+ GCHeapUtilities::IsServerHeap());
+ GCHeapUtilities::GetGCHeap()->DiagTraceGCSegments();
+ }
+
+ // Special check for the runtime provider's ManagedHeapCollectKeyword. Profilers
+ // flick this to force a full GC.
+ if (IsEnabled &&
+ (pContext->RegistrationHandle == Microsoft_Windows_Redhawk_GC_PublicHandle) &&
+ GCHeapUtilities::IsGCHeapInitialized() &&
+ ((pContext->MatchAnyKeyword & CLR_MANAGEDHEAPCOLLECT_KEYWORD) != 0))
+ {
+ // Profilers may (optionally) specify extra data in the filter parameter
+ // to log with the GCStart event.
+ LONGLONG l64ClientSequenceNumber = 0;
+ if ((pContext->FilterData != NULL) &&
+ (pContext->FilterData->Type == 1) &&
+ (pContext->FilterData->Size == sizeof(l64ClientSequenceNumber)))
+ {
+ l64ClientSequenceNumber = *(LONGLONG *) (pContext->FilterData->Ptr);
+ }
+ ETW::GCLog::ForceGC(l64ClientSequenceNumber);
+ }
+
+ return 0;
+}
+#endif // FEATURE_ETW
\ No newline at end of file
#ifndef _VMEVENTTRACE_H_
#define _VMEVENTTRACE_H_
+#include <CommonTypes.h>
#include "eventtracebase.h"
-#include "gcinterface.h"
+#include <gcenv.base.h>
+#include <gcinterface.h>
#ifdef FEATURE_EVENT_TRACE
struct ProfilingScanContext : ScanContext
void * pvEtwContext;
void *pHeapId;
- ProfilingScanContext(BOOL fProfilerPinnedParam);
+ ProfilingScanContext(BOOL fProfilerPinnedParam)
+ : ScanContext()
+ {
+ pHeapId = NULL;
+ fProfilerPinned = fProfilerPinnedParam;
+ pvEtwContext = NULL;
+ promotion = true;
+ }
};
#endif // defined(FEATURE_EVENT_TRACE)
static void MovedReference(BYTE * pbMemBlockStart, BYTE * pbMemBlockEnd, ptrdiff_t cbRelocDistance, size_t profilingContext, BOOL fCompacting, BOOL fAllowProfApiNotification = TRUE);
static void EndMovedReferences(size_t profilingContext, BOOL fAllowProfApiNotification = TRUE);
static void WalkStaticsAndCOMForETW();
+ static void WalkHeap();
};
};
ProfilingScanContext * profilingScanContext,
DWORD dwGCFlags,
DWORD rootFlags) { }
+inline void ETW::GCLog::WalkHeap() { }
#endif
#endif //_VMEVENTTRACE_H_
#ifdef FEATURE_ETW
+#include "EtwEvents.h"
+
// Map the CLR private provider to our version so we can avoid inserting more #ifdef's in the code.
#define MICROSOFT_WINDOWS_DOTNETRUNTIME_PRIVATE_PROVIDER_Context MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context
#define MICROSOFT_WINDOWS_DOTNETRUNTIME_PROVIDER_Context MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER_Context
#include "threadstore.h"
#include "threadstore.inl"
+#include "eventtrace_etw.h"
#include "eventtracepriv.h"
+#include "profheapwalkhelper.h"
/****************************************************************************/
/* Methods that are called from the runtime */
profilerWalkHeapContext->pvEtwContext = NULL;
delete pContext;
}
+
+namespace
+{
+ void ProfScanRootsHelper(Object** ppObject, ScanContext* pSC, uint32_t dwFlags)
+ {
+ Object* pObj = *ppObject;
+ if (dwFlags& GC_CALL_INTERIOR)
+ {
+ pObj = GCHeapUtilities::GetGCHeap()->GetContainingObject(pObj, true);
+ if (pObj == nullptr)
+ return;
+ }
+ ScanRootsHelper(pObj, ppObject, pSC, dwFlags);
+ }
+
+ void GcScanRootsForETW(promote_func* fn, int condemned, int max_gen, ScanContext* sc)
+ {
+ UNREFERENCED_PARAMETER(condemned);
+ UNREFERENCED_PARAMETER(max_gen);
+
+ FOREACH_THREAD(pThread)
+ {
+ if (pThread->IsGCSpecial())
+ continue;
+
+ if (GCHeapUtilities::GetGCHeap()->IsThreadUsingAllocationContextHeap(pThread->GetAllocContext(), sc->thread_number))
+ continue;
+
+ sc->thread_under_crawl = pThread;
+ sc->dwEtwRootKind = kEtwGCRootKindStack;
+ pThread->GcScanRoots(reinterpret_cast<void*>(fn), sc);
+ sc->dwEtwRootKind = kEtwGCRootKindOther;
+ }
+ END_FOREACH_THREAD
+ }
+
+ void ScanHandleForETW(Object** pRef, Object* pSec, uint32_t flags, ScanContext* context, bool isDependent)
+ {
+ ProfilingScanContext* pSC = (ProfilingScanContext*)context;
+
+ // Notify ETW of the handle
+ if (ETW::GCLog::ShouldWalkHeapRootsForEtw())
+ {
+ ETW::GCLog::RootReference(
+ pRef,
+ *pRef, // object being rooted
+ pSec, // pSecondaryNodeForDependentHandle
+ isDependent,
+ pSC,
+ 0, // dwGCFlags,
+ flags); // ETW handle flags
+ }
+ }
+
+ // This is called only if we've determined that either:
+ // a) The Profiling API wants to do a walk of the heap, and it has pinned the
+ // profiler in place (so it cannot be detached), and it's thus safe to call into the
+ // profiler, OR
+ // b) ETW infrastructure wants to do a walk of the heap either to log roots,
+ // objects, or both.
+ // This can also be called to do a single walk for BOTH a) and b) simultaneously. Since
+ // ETW can ask for roots, but not objects
+ void GCProfileWalkHeapWorker(BOOL fShouldWalkHeapRootsForEtw, BOOL fShouldWalkHeapObjectsForEtw)
+ {
+ ProfilingScanContext SC(FALSE);
+ unsigned max_generation = GCHeapUtilities::GetGCHeap()->GetMaxGeneration();
+
+ // **** Scan roots: Only scan roots if profiling API wants them or ETW wants them.
+ if (fShouldWalkHeapRootsForEtw)
+ {
+ GcScanRootsForETW(&ProfScanRootsHelper, max_generation, max_generation, &SC);
+ SC.dwEtwRootKind = kEtwGCRootKindFinalizer;
+ GCHeapUtilities::GetGCHeap()->DiagScanFinalizeQueue(&ProfScanRootsHelper, &SC);
+
+ // Handles are kept independent of wks/svr/concurrent builds
+ SC.dwEtwRootKind = kEtwGCRootKindHandle;
+ GCHeapUtilities::GetGCHeap()->DiagScanHandles(&ScanHandleForETW, max_generation, &SC);
+ }
+
+ // **** Scan dependent handles: only if ETW wants roots
+ if (fShouldWalkHeapRootsForEtw)
+ {
+ // GcScanDependentHandlesForProfiler double-checks
+ // CORProfilerTrackConditionalWeakTableElements() before calling into the profiler
+
+ ProfilingScanContext* pSC = &SC;
+
+ // we'll re-use pHeapId (which was either unused (0) or freed by EndRootReferences2
+ // (-1)), so reset it to NULL
+ _ASSERTE((*((size_t *)(&pSC->pHeapId)) == (size_t)(-1)) ||
+ (*((size_t *)(&pSC->pHeapId)) == (size_t)(0)));
+ pSC->pHeapId = NULL;
+
+ GCHeapUtilities::GetGCHeap()->DiagScanDependentHandles(&ScanHandleForETW, max_generation, &SC);
+ }
+
+ ProfilerWalkHeapContext profilerWalkHeapContext(FALSE, SC.pvEtwContext);
+
+ // **** Walk objects on heap: only if ETW wants them.
+ if (fShouldWalkHeapObjectsForEtw)
+ {
+ GCHeapUtilities::GetGCHeap()->DiagWalkHeap(&HeapWalkHelper, &profilerWalkHeapContext, max_generation, true /* walk the large object heap */);
+ }
+
+ // **** Done! Indicate to ETW helpers that the heap walk is done, so any buffers
+ // should be flushed into the ETW stream
+ if (fShouldWalkHeapObjectsForEtw || fShouldWalkHeapRootsForEtw)
+ {
+ ETW::GCLog::EndHeapDump(&profilerWalkHeapContext);
+ }
+ }
+}
+
+void ETW::GCLog::WalkHeap()
+{
+ if (ETW::GCLog::ShouldWalkStaticsAndCOMForEtw())
+ ETW::GCLog::WalkStaticsAndCOMForETW();
+
+ BOOL fShouldWalkHeapRootsForEtw = ETW::GCLog::ShouldWalkHeapRootsForEtw();
+ BOOL fShouldWalkHeapObjectsForEtw = ETW::GCLog::ShouldWalkHeapObjectsForEtw();
+
+ // we need to walk the heap if one of GC_PROFILING or FEATURE_EVENT_TRACE
+ // is defined, since both of them make use of the walk heap worker.
+ if (fShouldWalkHeapRootsForEtw || fShouldWalkHeapObjectsForEtw)
+ {
+ GCProfileWalkHeapWorker(fShouldWalkHeapRootsForEtw, fShouldWalkHeapObjectsForEtw);
+ }
+}
\ No newline at end of file
#include "stressLog.h"
#ifdef FEATURE_EVENT_TRACE
- #ifndef _INC_WINDOWS
- typedef void* LPVOID;
- typedef uint32_t UINT;
- typedef void* PVOID;
- typedef uint64_t ULONGLONG;
- typedef uint32_t ULONG;
- typedef int64_t LONGLONG;
- typedef uint8_t BYTE;
- typedef uint16_t UINT16;
- #endif // _INC_WINDOWS
#include "clretwallmain.h"
#include "eventtrace.h"
- #include "eventtrace_etw.h"
#else // FEATURE_EVENT_TRACE
#include "gcenv.h"
#include "gcheaputilities.h"
#include "gchandleutilities.h"
-#include "profheapwalkhelper.h"
#include "gcenv.ee.h"
static RhConfig g_sRhConfig;
RhConfig * g_pRhConfig = &g_sRhConfig;
-#ifdef FEATURE_ETW
-//
-// -----------------------------------------------------------------------------------------------------------
-//
-// The automatically generated part of the Redhawk ETW infrastructure (EtwEvents.h) calls the following
-// function whenever the system enables or disables tracing for this provider.
-//
-
-uint32_t EtwCallback(uint32_t IsEnabled, RH_ETW_CONTEXT * pContext)
-{
- GCHeapUtilities::RecordEventStateChange(!!(pContext->RegistrationHandle == Microsoft_Windows_Redhawk_GC_PublicHandle),
- static_cast<GCEventKeyword>(pContext->MatchAnyKeyword),
- static_cast<GCEventLevel>(pContext->Level));
-
- if (IsEnabled &&
- (pContext->RegistrationHandle == Microsoft_Windows_Redhawk_GC_PrivateHandle) &&
- GCHeapUtilities::IsGCHeapInitialized())
- {
- FireEtwGCSettings(GCHeapUtilities::GetGCHeap()->GetValidSegmentSize(FALSE),
- GCHeapUtilities::GetGCHeap()->GetValidSegmentSize(TRUE),
- GCHeapUtilities::IsServerHeap());
- GCHeapUtilities::GetGCHeap()->DiagTraceGCSegments();
- }
-
- // Special check for the runtime provider's ManagedHeapCollectKeyword. Profilers
- // flick this to force a full GC.
- if (IsEnabled &&
- (pContext->RegistrationHandle == Microsoft_Windows_Redhawk_GC_PublicHandle) &&
- GCHeapUtilities::IsGCHeapInitialized() &&
- ((pContext->MatchAnyKeyword & CLR_MANAGEDHEAPCOLLECT_KEYWORD) != 0))
- {
- // Profilers may (optionally) specify extra data in the filter parameter
- // to log with the GCStart event.
- LONGLONG l64ClientSequenceNumber = 0;
- if ((pContext->FilterData != NULL) &&
- (pContext->FilterData->Type == 1) &&
- (pContext->FilterData->Size == sizeof(l64ClientSequenceNumber)))
- {
- l64ClientSequenceNumber = *(LONGLONG *) (pContext->FilterData->Ptr);
- }
- ETW::GCLog::ForceGC(l64ClientSequenceNumber);
- }
-
- return 0;
-}
-#endif // FEATURE_ETW
-
//
// -----------------------------------------------------------------------------------------------------------
//
// static
bool RedhawkGCInterface::InitializeSubsystems()
{
-#ifdef FEATURE_ETW
- MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.IsEnabled = FALSE;
- MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER_Context.IsEnabled = FALSE;
-
- // Register the Redhawk event provider with the system.
- RH_ETW_REGISTER_Microsoft_Windows_Redhawk_GC_Private();
- RH_ETW_REGISTER_Microsoft_Windows_Redhawk_GC_Public();
-
- MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_Context.RegistrationHandle = Microsoft_Windows_Redhawk_GC_PrivateHandle;
- MICROSOFT_WINDOWS_NATIVEAOT_GC_PUBLIC_PROVIDER_Context.RegistrationHandle = Microsoft_Windows_Redhawk_GC_PublicHandle;
-#endif // FEATURE_ETW
-
// Initialize the special MethodTable used to mark free list entries in the GC heap.
g_FreeObjectEEType.InitializeAsGcFreeType();
g_pFreeObjectEEType = &g_FreeObjectEEType;
#ifndef DACCESS_COMPILE
-#ifdef FEATURE_EVENT_TRACE
-void ProfScanRootsHelper(Object** ppObject, ScanContext* pSC, uint32_t dwFlags)
-{
- Object* pObj = *ppObject;
- if (dwFlags& GC_CALL_INTERIOR)
- {
- pObj = GCHeapUtilities::GetGCHeap()->GetContainingObject(pObj, true);
- if (pObj == nullptr)
- return;
- }
- ScanRootsHelper(pObj, ppObject, pSC, dwFlags);
-}
-
-void GcScanRootsForETW(promote_func* fn, int condemned, int max_gen, ScanContext* sc)
-{
- UNREFERENCED_PARAMETER(condemned);
- UNREFERENCED_PARAMETER(max_gen);
-
- FOREACH_THREAD(pThread)
- {
- if (pThread->IsGCSpecial())
- continue;
-
- if (GCHeapUtilities::GetGCHeap()->IsThreadUsingAllocationContextHeap(pThread->GetAllocContext(), sc->thread_number))
- continue;
-
- sc->thread_under_crawl = pThread;
- sc->dwEtwRootKind = kEtwGCRootKindStack;
- pThread->GcScanRoots(reinterpret_cast<void*>(fn), sc);
- sc->dwEtwRootKind = kEtwGCRootKindOther;
- }
- END_FOREACH_THREAD
-}
-
-void ScanHandleForETW(Object** pRef, Object* pSec, uint32_t flags, ScanContext* context, bool isDependent)
-{
- ProfilingScanContext* pSC = (ProfilingScanContext*)context;
-
- // Notify ETW of the handle
- if (ETW::GCLog::ShouldWalkHeapRootsForEtw())
- {
- ETW::GCLog::RootReference(
- pRef,
- *pRef, // object being rooted
- pSec, // pSecondaryNodeForDependentHandle
- isDependent,
- pSC,
- 0, // dwGCFlags,
- flags); // ETW handle flags
- }
-}
-
-// This is called only if we've determined that either:
-// a) The Profiling API wants to do a walk of the heap, and it has pinned the
-// profiler in place (so it cannot be detached), and it's thus safe to call into the
-// profiler, OR
-// b) ETW infrastructure wants to do a walk of the heap either to log roots,
-// objects, or both.
-// This can also be called to do a single walk for BOTH a) and b) simultaneously. Since
-// ETW can ask for roots, but not objects
-void GCProfileWalkHeapWorker(BOOL fShouldWalkHeapRootsForEtw, BOOL fShouldWalkHeapObjectsForEtw)
-{
- ProfilingScanContext SC(FALSE);
- unsigned max_generation = GCHeapUtilities::GetGCHeap()->GetMaxGeneration();
-
- // **** Scan roots: Only scan roots if profiling API wants them or ETW wants them.
- if (fShouldWalkHeapRootsForEtw)
- {
- GcScanRootsForETW(&ProfScanRootsHelper, max_generation, max_generation, &SC);
- SC.dwEtwRootKind = kEtwGCRootKindFinalizer;
- GCHeapUtilities::GetGCHeap()->DiagScanFinalizeQueue(&ProfScanRootsHelper, &SC);
-
- // Handles are kept independent of wks/svr/concurrent builds
- SC.dwEtwRootKind = kEtwGCRootKindHandle;
- GCHeapUtilities::GetGCHeap()->DiagScanHandles(&ScanHandleForETW, max_generation, &SC);
- }
-
- // **** Scan dependent handles: only if ETW wants roots
- if (fShouldWalkHeapRootsForEtw)
- {
- // GcScanDependentHandlesForProfiler double-checks
- // CORProfilerTrackConditionalWeakTableElements() before calling into the profiler
-
- ProfilingScanContext* pSC = &SC;
-
- // we'll re-use pHeapId (which was either unused (0) or freed by EndRootReferences2
- // (-1)), so reset it to NULL
- _ASSERTE((*((size_t *)(&pSC->pHeapId)) == (size_t)(-1)) ||
- (*((size_t *)(&pSC->pHeapId)) == (size_t)(0)));
- pSC->pHeapId = NULL;
-
- GCHeapUtilities::GetGCHeap()->DiagScanDependentHandles(&ScanHandleForETW, max_generation, &SC);
- }
-
- ProfilerWalkHeapContext profilerWalkHeapContext(FALSE, SC.pvEtwContext);
-
- // **** Walk objects on heap: only if ETW wants them.
- if (fShouldWalkHeapObjectsForEtw)
- {
- GCHeapUtilities::GetGCHeap()->DiagWalkHeap(&HeapWalkHelper, &profilerWalkHeapContext, max_generation, true /* walk the large object heap */);
- }
-
- #ifdef FEATURE_EVENT_TRACE
- // **** Done! Indicate to ETW helpers that the heap walk is done, so any buffers
- // should be flushed into the ETW stream
- if (fShouldWalkHeapObjectsForEtw || fShouldWalkHeapRootsForEtw)
- {
- ETW::GCLog::EndHeapDump(&profilerWalkHeapContext);
- }
-#endif // FEATURE_EVENT_TRACE
-}
-#endif // defined(FEATURE_EVENT_TRACE)
-
-void GCProfileWalkHeap()
-{
-
-#ifdef FEATURE_EVENT_TRACE
- if (ETW::GCLog::ShouldWalkStaticsAndCOMForEtw())
- ETW::GCLog::WalkStaticsAndCOMForETW();
-
- BOOL fShouldWalkHeapRootsForEtw = ETW::GCLog::ShouldWalkHeapRootsForEtw();
- BOOL fShouldWalkHeapObjectsForEtw = ETW::GCLog::ShouldWalkHeapObjectsForEtw();
-#else // !FEATURE_EVENT_TRACE
- BOOL fShouldWalkHeapRootsForEtw = FALSE;
- BOOL fShouldWalkHeapObjectsForEtw = FALSE;
-#endif // FEATURE_EVENT_TRACE
-
-#ifdef FEATURE_EVENT_TRACE
- // we need to walk the heap if one of GC_PROFILING or FEATURE_EVENT_TRACE
- // is defined, since both of them make use of the walk heap worker.
- if (fShouldWalkHeapRootsForEtw || fShouldWalkHeapObjectsForEtw)
- {
- GCProfileWalkHeapWorker(fShouldWalkHeapRootsForEtw, fShouldWalkHeapObjectsForEtw);
- }
-#endif // defined(FEATURE_EVENT_TRACE)
-}
-
-
void GCToEEInterface::DiagGCStart(int gen, bool isInduced)
{
UNREFERENCED_PARAMETER(gen);
if (!fConcurrent)
{
- GCProfileWalkHeap();
+ ETW::GCLog::WalkHeap();
}
}
void LogSpewAlways(const char * /*fmt*/, ...)
{
}
-
-#if defined(FEATURE_EVENT_TRACE) && !defined(DACCESS_COMPILE)
-ProfilingScanContext::ProfilingScanContext(BOOL fProfilerPinnedParam)
- : ScanContext()
-{
- pHeapId = NULL;
- fProfilerPinned = fProfilerPinnedParam;
- pvEtwContext = NULL;
- promotion = true;
-}
-#endif // defined(FEATURE_EVENT_TRACE) && !defined(DACCESS_COMPILE)
#define UInt32_FALSE 0
#define UInt32_TRUE 1
+#if defined(FEATURE_EVENT_TRACE) && !defined(_INC_WINDOWS)
+typedef int BOOL;
+typedef void* LPVOID;
+typedef uint32_t UINT;
+typedef void* PVOID;
+typedef uint64_t ULONGLONG;
+typedef uint32_t ULONG;
+typedef int64_t LONGLONG;
+typedef uint8_t BYTE;
+typedef uint16_t UINT16;
+typedef struct _GUID {
+ uint32_t Data1;
+ uint16_t Data2;
+ uint16_t Data3;
+ uint8_t Data4[8];
+} GUID;
+#endif // FEATURE_EVENT_TRACE && !_INC_WINDOWS
+
#endif // __COMMON_TYPES_H__
DiagnosticServerAdapter_Initialize();
DiagnosticServerAdapter_PauseForDiagnosticsMonitor();
#endif
+#ifdef FEATURE_EVENT_TRACE
+ EventTracing_Initialize();
+#endif
//
// Initialize support for registering GC and HandleTable callouts.