Make firing of ETW events in nativeaot opt-in via the enabled/disabled lib (#88800)
authorElinor Fung <elfung@microsoft.com>
Fri, 14 Jul 2023 20:58:24 +0000 (13:58 -0700)
committerGitHub <noreply@github.com>
Fri, 14 Jul 2023 20:58:24 +0000 (13:58 -0700)
21 files changed:
src/coreclr/nativeaot/Runtime/CMakeLists.txt
src/coreclr/nativeaot/Runtime/DisabledEventPipeInterface.cpp
src/coreclr/nativeaot/Runtime/EnabledEventPipeInterface.cpp
src/coreclr/nativeaot/Runtime/EtwEvents.h
src/coreclr/nativeaot/Runtime/EventPipeInterface.h
src/coreclr/nativeaot/Runtime/PalRedhawk.h
src/coreclr/nativeaot/Runtime/clretwallmain.h
src/coreclr/nativeaot/Runtime/disabledeventtrace.cpp [new file with mode: 0644]
src/coreclr/nativeaot/Runtime/eventpipe/CMakeLists.txt
src/coreclr/nativeaot/Runtime/eventpipe/clretwallmain.cpp [new file with mode: 0644]
src/coreclr/nativeaot/Runtime/eventpipe/disabledclretwallmain.cpp [new file with mode: 0644]
src/coreclr/nativeaot/Runtime/eventpipe/disableddotnetruntime.cpp [deleted file]
src/coreclr/nativeaot/Runtime/eventpipe/dotnetruntime.cpp
src/coreclr/nativeaot/Runtime/eventtrace.cpp
src/coreclr/nativeaot/Runtime/eventtrace.h
src/coreclr/nativeaot/Runtime/eventtrace_etw.h
src/coreclr/nativeaot/Runtime/eventtrace_gcheap.cpp
src/coreclr/nativeaot/Runtime/gcenv.h
src/coreclr/nativeaot/Runtime/gcrhenv.cpp
src/coreclr/nativeaot/Runtime/inc/CommonTypes.h
src/coreclr/nativeaot/Runtime/startup.cpp

index 7cce306..5249be0 100644 (file)
@@ -23,7 +23,6 @@ set(COMMON_RUNTIME_SOURCES
     TypeManager.cpp
     ObjectLayout.cpp
     portable.cpp
-    profheapwalkhelper.cpp
     RestrictedCallouts.cpp
     RhConfig.cpp
     RuntimeInstance.cpp
@@ -220,18 +219,6 @@ endif()
 
 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)
@@ -252,6 +239,7 @@ add_definitions(-D_LIB)
 # 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)
index eebbcf4..cb654d8 100644 (file)
@@ -2,7 +2,6 @@
 // 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() {}
index 312c8aa..a94cdd0 100644 (file)
@@ -11,7 +11,6 @@
 #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();}
index 32649b1..b6f39fa 100644 (file)
@@ -1,24 +1,18 @@
 // 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
@@ -106,59 +100,59 @@ extern "C" __declspec(selectany) RH_ETW_CONTEXT MICROSOFT_WINDOWS_NATIVEAOT_GC_P
 #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)
@@ -266,21 +260,21 @@ Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_GCSettings(REGHANDLE Re
 }
 
 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);
 }
@@ -295,11 +289,11 @@ Template_MICROSOFT_WINDOWS_NATIVEAOT_GC_PRIVATE_PROVIDER_PrvGCMark_V1(REGHANDLE
 }
 
 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));
@@ -354,9 +348,6 @@ extern "C" __declspec(selectany) RH_ETW_CONTEXT MICROSOFT_WINDOWS_NATIVEAOT_GC_P
 #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
@@ -833,36 +824,6 @@ TemplateEventDescriptor(REGHANDLE RegHandle, const EVENT_DESCRIPTOR * Descriptor
 
 #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)
index 406b180..6e39f53 100644 (file)
@@ -6,7 +6,6 @@
 
 // Initialize EventPipe
 void EventPipeAdapter_Initialize();
-bool EventPipeAdapter_Enabled();
 
 // Initialize DS
 bool DiagnosticServerAdapter_Initialize();
@@ -18,4 +17,5 @@ void EventPipeAdapter_FinishInitialize();
 void EventPipeAdapter_Shutdown();
 bool DiagnosticServerAdapter_Shutdown();
 
+void EventTracing_Initialize();
 #endif //EVENTPIPE_INTERFACE_H
\ No newline at end of file
index c50da49..88785b4 100644 (file)
@@ -17,6 +17,8 @@
 
 #include <sal.h>
 #include <stdarg.h>
+#include "CommonTypes.h"
+#include "CommonMacros.h"
 #include "gcenv.structs.h" // CRITICAL_SECTION
 #include "IntrinsicConstants.h"
 #include "PalRedhawkCommon.h"
@@ -91,13 +93,6 @@ typedef union _LARGE_INTEGER {
     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
index 99c60a9..6a293eb 100644 (file)
@@ -1,34 +1,25 @@
 // 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,
@@ -37,18 +28,10 @@ inline ULONG FireEtwExceptionThrown_V1(
     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,
@@ -56,18 +39,10 @@ inline ULONG FireEtwGCBulkEdge(
     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,
@@ -75,18 +50,10 @@ inline ULONG FireEtwGCBulkMovedObjectRanges(
     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,
@@ -94,54 +61,30 @@ inline ULONG FireEtwGCBulkNode(
     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,
@@ -149,18 +92,10 @@ inline ULONG FireEtwGCBulkRootConditionalWeakTableElementEdge(
     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,
@@ -168,18 +103,10 @@ inline ULONG FireEtwGCBulkRootEdge(
     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,
@@ -187,84 +114,44 @@ inline ULONG FireEtwGCBulkSurvivingObjectRanges(
     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,
@@ -272,18 +159,10 @@ inline ULONG FireEtwGCGenerationRange(
     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,
@@ -300,18 +179,10 @@ inline ULONG FireEtwGCHeapStats_V1(
     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,
@@ -319,100 +190,52 @@ inline ULONG FireEtwGCJoin_V2(
     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,
@@ -432,49 +255,25 @@ inline ULONG FireEtwGCPerHeapHistory_V3(
     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,
@@ -490,18 +289,10 @@ inline ULONG FireEtwModuleLoad_V2(
     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,
@@ -510,18 +301,10 @@ inline ULONG FireEtwSetGCHandle(
     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,
@@ -530,133 +313,73 @@ inline ULONG FireEtwGCStart_V2(
     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,
@@ -664,81 +387,53 @@ inline ULONG FireEtwContentionStart_V2(
     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,
@@ -746,43 +441,28 @@ inline uint32_t FireEtwThreadPoolMinMaxThreads(
     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,
@@ -796,71 +476,46 @@ inline uint32_t FireEtwThreadPoolWorkerThreadAdjustmentStats(
     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,
@@ -872,15 +527,10 @@ inline ULONG FireEtwGCAllocationTick_V4(
     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,
@@ -899,15 +549,10 @@ inline ULONG FireEtwGCHeapStats_V2(
     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,
@@ -915,15 +560,10 @@ inline ULONG FireEtwGCSampledObjectAllocationHigh(
     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,
@@ -931,15 +571,10 @@ inline ULONG FireEtwGCSampledObjectAllocationLow(
     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,
@@ -947,15 +582,10 @@ inline ULONG FireEtwPinObjectAtGCTime(
     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,
@@ -963,28 +593,18 @@ inline ULONG FireEtwGCBulkRootStaticVar(
     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,
@@ -1001,56 +621,36 @@ inline ULONG FireEtwGCGlobalHeapHistory_V4(
     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,
@@ -1059,9 +659,159 @@ inline ULONG FireEtwGCFitBucketInfo(
     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
diff --git a/src/coreclr/nativeaot/Runtime/disabledeventtrace.cpp b/src/coreclr/nativeaot/Runtime/disabledeventtrace.cpp
new file mode 100644 (file)
index 0000000..f0944fd
--- /dev/null
@@ -0,0 +1,22 @@
+// 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
index b8a8808..a6bedd8 100644 (file)
@@ -87,6 +87,7 @@ list(APPEND AOT_EVENTPIPE_SHIM_HEADERS
 )
 
 list(APPEND GEN_EVENTPIPE_SOURCES
+  ${AOT_EVENTPIPE_SHIM_DIR}/clretwallmain.cpp
   ${AOT_EVENTPIPE_SHIM_DIR}/dotnetruntime.cpp
 )
 
@@ -98,10 +99,28 @@ list(APPEND AOT_EVENTPIPE_MANAGED_TO_NATIVE_SOURCES
    ${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}
@@ -111,8 +130,9 @@ list(APPEND EVENTPIPE_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})
diff --git a/src/coreclr/nativeaot/Runtime/eventpipe/clretwallmain.cpp b/src/coreclr/nativeaot/Runtime/eventpipe/clretwallmain.cpp
new file mode 100644 (file)
index 0000000..8f93bd9
--- /dev/null
@@ -0,0 +1,1253 @@
+// 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
diff --git a/src/coreclr/nativeaot/Runtime/eventpipe/disabledclretwallmain.cpp b/src/coreclr/nativeaot/Runtime/eventpipe/disabledclretwallmain.cpp
new file mode 100644 (file)
index 0000000..b998536
--- /dev/null
@@ -0,0 +1,877 @@
+// 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
diff --git a/src/coreclr/nativeaot/Runtime/eventpipe/disableddotnetruntime.cpp b/src/coreclr/nativeaot/Runtime/eventpipe/disableddotnetruntime.cpp
deleted file mode 100644 (file)
index eb0edc3..0000000
+++ /dev/null
@@ -1,639 +0,0 @@
-// 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;
-}
index 1f6c1b4..65310ae 100644 (file)
@@ -9,17 +9,6 @@
 #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
index 4eb9c4e..275111b 100644 (file)
@@ -13,6 +13,8 @@
 
 #include "daccess.h"
 
+#include "eventtrace_etw.h"
+
 #include "thread.h"
 #include "threadstore.h"
 #include "threadstore.inl"
@@ -50,3 +52,65 @@ void ETW::GCLog::FireGcStart(ETW_GC_INFO* pGcInfo)
         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
index 65118de..3a2fd81 100644 (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
@@ -37,7 +39,14 @@ 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)
 
@@ -185,6 +194,7 @@ namespace ETW
         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();
     };
 };
 
@@ -210,6 +220,7 @@ inline void ETW::GCLog::RootReference(
     ProfilingScanContext * profilingScanContext,
     DWORD dwGCFlags,
     DWORD rootFlags) { }
+inline void ETW::GCLog::WalkHeap() { }
 #endif
 
 #endif //_VMEVENTTRACE_H_
index 9dd7e2c..72734d3 100644 (file)
@@ -10,6 +10,8 @@
 
 #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
index f01f7b0..c976636 100644 (file)
@@ -20,7 +20,9 @@
 #include "threadstore.h"
 #include "threadstore.inl"
 
+#include "eventtrace_etw.h"
 #include "eventtracepriv.h"
+#include "profheapwalkhelper.h"
 
 /****************************************************************************/
 /* Methods that are called from the runtime */
@@ -963,3 +965,131 @@ void ETW::GCLog::EndHeapDump(ProfilerWalkHeapContext* profilerWalkHeapContext)
     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
index 3caed96..ad01f7f 100644 (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
 
index 12158aa..5c5e20e 100644 (file)
@@ -12,7 +12,6 @@
 #include "gcenv.h"
 #include "gcheaputilities.h"
 #include "gchandleutilities.h"
-#include "profheapwalkhelper.h"
 
 #include "gcenv.ee.h"
 
@@ -63,53 +62,6 @@ void RhEnableFinalization();
 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
-
 //
 // -----------------------------------------------------------------------------------------------------------
 //
@@ -132,18 +84,6 @@ MethodTable g_FreeObjectEEType;
 // 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;
@@ -789,144 +729,6 @@ Thread* GCToEEInterface::GetThread()
 
 #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);
@@ -950,7 +752,7 @@ void GCToEEInterface::DiagGCEnd(size_t index, int gen, int reason, bool fConcurr
 
     if (!fConcurrent)
     {
-        GCProfileWalkHeap();
+        ETW::GCLog::WalkHeap();
     }
 }
 
@@ -1448,14 +1250,3 @@ bool __SwitchToThread(uint32_t dwSleepMSec, uint32_t /*dwSwitchCount*/)
 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)
index 6e1be74..0ad3a13 100644 (file)
@@ -38,4 +38,22 @@ typedef uint32_t            UInt32_BOOL;    // windows 4-byte BOOL, 0 -> false,
 #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__
index 5874015..d388030 100644 (file)
@@ -107,6 +107,9 @@ static bool InitDLL(HANDLE hPalInstance)
     DiagnosticServerAdapter_Initialize();
     DiagnosticServerAdapter_PauseForDiagnosticsMonitor();
 #endif
+#ifdef FEATURE_EVENT_TRACE
+    EventTracing_Initialize();
+#endif
 
     //
     // Initialize support for registering GC and HandleTable callouts.